mpich 中的定制亲和图(进程绑定)

Bespoke affinity maps (process bindings) in mpich

我正在 Linux (Ubuntu) 上使用 MPICH (sudo apt get mpich) 实现一个应用程序。

我目前的解决方案是这样的:

HYDRA_TOPO_DEBUG=1 mpiexec.hydra -n 3 -bind-to core:1 MyApp
...
process 0 binding: 10001000
process 1 binding: 01000100
process 2 binding: 00100010

然而,我想要的是将一个进程分配给 4 个内核,而另外两个分配给 2 个内核。我想要一个如下所示的亲和图:

process 0 binding: 11001100
process 1 binding: 00100010
process 2 binding: 00010001

在 Windows 上使用 SMPD,我能够像这样使用某物获得所需的结果:

mpiexec -n 1 -host localhost --bind-to core:2 MyApp : -n 2 -host localhost --bind-to core:1 MyApp

但这不适用于 Hydra。我现在已经阅读了每本手册,并且很乐意提供任何帮助 - 即使它是我尚未阅读的另一本 hydra 手册。干杯!

“用户”关键字可用于手动分配逻辑内核。 因此,可以这样写:

HYDRA_TOPO_DEBUG=1 mpiexec.hydra -n 3 -bind-to user:0+1+4+5,2+6,3+7 MyApp

然后,我得到:

process 0 binding: 11001100
process 1 binding: 00100010
process 2 binding: 00010001