我的问题是,在超额订阅时是否可以使用--bind-to-core
标志?我正在使用OPEN MPI版本1.5.4并尝试使用以下因素进行超额订阅2(16个核心上的32个进程):
mpirun --bind-to-core --bynode --npersocket 32 --mca mpi_yield_when_idle 1 -n 32 ./$prog
但它给我一个错误:
32 total processes failed to start
但是,如果我不使用--bind-to-core
,一切正常。这里的问题是什么?有可能解决吗?
答案 0 :(得分:2)
-npersocket
选项激活--bind-to-socket
,这与--bind-to-core
冲突。您可以通过编写 rankfile 来解决它 - 与主机文件非常相似,但它也包含每个等级的绑定信息。例如,要将4个进程绑定到主机localhost
上的2个核心,可以使用以下rankfile:
rank 0=localhost slot=0
rank 1=localhost slot=0
rank 2=localhost slot=1
rank 3=localhost slot=1
使用mpiexec
选项向--rankfile
提供Rankfiles。有关详细信息,请参阅Open MPI documentation。