【发布时间】:2017-10-09 04:37:54
【问题描述】:
对于我开发的一个软件包,我使用了主/工作方案,其中一个进程将工作分配给其他进程。分配的工作是独立的,但需要很长时间才能完成,并且从共享内存环境中受益匪浅。所以,现在我有一个进程/节点,所以每个 MPI 进程都有,例如,12 个处理器和一个共享内存环境来运行 OpenMP。这一切都很好,但是我的“主”进程有 11 个空闲处理器,1 个只是分配工作=(我有一些想法可以解决这个问题,并且正在寻找任何输入或其他想法:
- 在主节点上,分配一个处理器来分配工作,并且 其他 11 人实际工作。从概念上讲,这似乎是 明显的解决方案,但我无法弄清楚如何实际 实施这样的计划。
- 让主节点通过非阻塞发送分配所有工作 计划一开始,就参与完成工作。同样,这在概念上很简单,但不知道 MPI 是否真的支持这样的方案(我认为不支持)。这就是说,发送了 100 条消息,等待任何单个进程接收。
- 让所有进程为所有分配的工作加载数据,并从不同的点开始。当一个进程开始一个任务时,向所有其他进程广播该任务正在进行中,因此它不会被另一个进程选择。这似乎是最好的选择,但我担心两个进程会在广播到达它们之前同时选择一个任务。尽管两个进程不太可能同时选择一项新任务,但这似乎是有可能的。
【问题讨论】: