MPI:报告绑定

时间:2014-06-14 21:00:44

标签: mpi openmpi

我正在使用-rankfile-hostfile标志运行具有特定绑定的MPI程序。如何检查是否有正确的绑定(只是为了确定)?我试过了--report-bindings标志。类似的东西:

mpirun --report-bindings -rankfile rank_file -hostfile host_file -n 16 ./$prog

但是,它没有提供任何输出。我使用的是Open MPI 1.5.4版。我做错了什么?

1 个答案:

答案 0 :(得分:3)

可能是odls框架正在打印绑定信息的标准错误被重定向到某个地方。它适用于Open MPI 1.5.3:

$ mpiexec --report-bindings -rankfile rank_file -hostfile host_file \
          -n 4 hostname
host
[host:18314] [[35226,0],0] odls:default:fork binding child [[35226,1],0] to slot_list 0
[host:18314] [[35226,0],0] odls:default:fork binding child [[35226,1],1] to slot_list 1
[host:18314] [[35226,0],0] odls:default:fork binding child [[35226,1],2] to slot_list 0
[host:18314] [[35226,0],0] odls:default:fork binding child [[35226,1],3] to slot_list 1
host
host
host

如果库因任何原因无法报告绑定,您可以使用一个简单的脚本来检查绑定是否实际发生:

#!/bin/sh

cpuset=$(cat /proc/self/status | grep Cpus_allowed_list | awk '{print $2;}')
echo "Rank $OMPI_COMM_WORLD_RANK bound to core(s) $cpuset"

只需将其命名为report_bindings,然后通过mpiexec运行:

$ mpiexec --report-bindings -rankfile rank_file -hostfile host_file \
          -n 4 report_bindings
Rank 1 bound to core(s) 8
Rank 0 bound to core(s) 0
Rank 3 bound to core(s) 8
Rank 2 bound to core(s) 0