openmpi - 我是否使用 OpenMPI 或 MPICH 进行编译?

标签 openmpi mpich

我的 Linux 机器上有一个可执行文件,我知道它是使用 OpenMPIMPICH 库编译的。

问题:如何确定是哪一个?

最佳答案

以下诊断过程假设 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)

如果您在该列表中看到 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"

关于openmpi - 我是否使用 OpenMPI 或 MPICH 进行编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619218/

相关文章:

c - 使用非阻塞 MPI 函数发送矩阵的问题

c++ - 用于 C++ 的 openmpi : rank changes inside function apparently without reason.

mpirun --cpu-set 与 --rankfile (Open MPI) 1.4.5

compiler-errors - 在 MPICH3.3 中添加用户级功能。*

php - 使用 PHP 执行 MPI 命令

c++ - mpirun 不工作并要求将 TMPDIR 变量更改为/tmp

c - 如何通过 MPI 将结构作为数组发送?

mpich - 由于 MPI init 中止,mpiexec 失败

fortran - MPICH2 中的 MPI_Allreduce 失败

c - 为什么 MPI 程序以退出代码 134(信号 6)终止?