Ubuntu 存储库中的某些软件包提供了共享库的预编译二进制文件(*.so
)。例如,软件包fftw2
提供 FFTW 库(版本 2),包括 MPI 相关的库文件/usr/lib/libfftw_mpi.so.2
和/usr/lib/librfftw_mpi.so.2
。这引发了一个问题:这些文件实际上链接到了众多 MPI 库中的哪一个。在我的系统 ( amd64
) 上,ldd /usr/lib/libfftw_mpi.so.2
显示
linux-vdso.so.1 (0x00007ffd80ba4000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2c3fe22000) libmpi.so.20 => /usr/lib/x86_64-linux-gnu/libmpi.so.20 (0x00007f2c3fb30000) […]
因此他们似乎指向 Open MPI,其文件libmpi.so
在 Ubuntu 上被调用。
我发现mpi-default-dev
元包,其描述为
此元包依赖于每个平台推荐的 MPI 实现的开发文件,目前所有平台上都存在 Open MPI,其他平台上存在 MPICH。此元包所依赖的包具有共享库 libmpi 和 libmpi++ 的替代链接,以及编译器 mpicc、mpic++/mpicxx/mpiCC、mpif77 和 mpi90 及其手册页的替代链接。
确实,在 上amd64
,这会引入 Open MPI。但是,这是否意味着全部Ubuntu 存储库中使用 MPI 的库必须使用 Open MPI 进行编译/链接吗?