以下诊断过程假定MPICH/MPICH2和Open MPI是您可能已链接的唯一可能的MPI实现.其他(特别是商业的)MPI实现确实存在并且可以具有不同的库名称和/或库符号.
首先确定您是否动态链接:
% ldd my_executable
linux-vdso.so.1 => (0x00007ffff972c000)
libm.so.6 => /lib/libm.so.6 (0x00007f1f3c6cd000)
librt.so.1 => /lib/librt.so.1 (0x00007f1f3c4c5000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f1f3c2a7000)
libc.so.6 => /lib/libc.so.6 (0x00007f1f3bf21000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1f3c969000)
Run Code Online (Sandbox Code Playgroud)
如果您libmpich.so在该列表中看到,那么您已动态链接到MPICH(或MPICH2).如果您看到,libmpi.so那么您已与Open MPI链接.
如果两者都不存在,那么您可能只是静态链接.在这种情况下,我们需要检查二进制文件以查找区分符号:
% ( nm my_executable | grep MPIR_Free_contextid >/dev/null ) && echo "MPICH"
% ( nm my_executable | grep ompi_comm_set_name >/dev/null ) && echo "Open MPI"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |