macOS Big Sur 11.6.1安装Rmpi失败:无法加载Rmpi.so求助
MacBook上Rmpi加载失败(找不到
_ompi_mpi_2int符号)的解决方法 问题详情
加载Rmpi时出现如下错误:
Error: package or namespace load failed for ‘Rmpi’: .onLoad failed in loadNamespace() for 'Rmpi', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: unable to load shared object '/Library/Frameworks/R.framework/Versions/4.2/Resources/library/Rmpi/libs/Rmpi.so': dlopen(/Library/Frameworks/R.framework/Versions/4.2/Resources/library/Rmpi/libs/Rmpi.so, 6): Symbol not found: _ompi_mpi_2int Referenced from: /Library/Frameworks/R.framework/Versions/4.2/Resources/library/Rmpi/libs/Rmpi.so Expected in: flat namespace in /Library/Frameworks/R.framework/Versions/4.2/Resources/library/Rmpi/libs/Rmpi.so
操作步骤:
- 通过brew安装openmpi:
brew install open-mpi - 执行命令安装Rmpi:
R CMD INSTALL Rmpi_0.6-9.2.tar.gz --configure-args="--with-Rmpi-include=/opt/homebrew/include --with-Rmpi-libpath=/opt/homebrew/lib --with-Rmpi-type=OPENMPI" --no-test-load - 尝试导出
LD_LIBRARY_PATH到Rmpi.so路径,但无效。
会话信息:
R version 4.2.0 (2022-04-22) Platform: x86_64-apple-darwin17.0 (64-bit) Running under: macOS Big Sur 11.6.1 Matrix products: default LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached): [1] compiler_4.2.0 parallel_4.2.0 tools_4.2.0
解决方法
1. 降级OpenMPI到兼容版本
Rmpi 0.6-9.2与较新版本的OpenMPI存在符号兼容性问题,建议安装4.1.x版本:
brew install open-mpi@4.1 brew link open-mpi@4.1 --force
2. 设置正确的环境变量并重新安装Rmpi
先配置环境变量,确保R能找到OpenMPI的头文件和库(Mac上需用DYLD_LIBRARY_PATH而非LD_LIBRARY_PATH):
export PATH="/opt/homebrew/opt/open-mpi@4.1/bin:$PATH" export LDFLAGS="-L/opt/homebrew/opt/open-mpi@4.1/lib" export CPPFLAGS="-I/opt/homebrew/opt/open-mpi@4.1/include" export DYLD_LIBRARY_PATH="/opt/homebrew/opt/open-mpi@4.1/lib:$DYLD_LIBRARY_PATH"
然后重新安装Rmpi(无需手动指定路径,环境变量会自动传递):
R CMD INSTALL Rmpi_0.6-9.2.tar.gz --configure-args="--with-Rmpi-type=OPENMPI" --no-test-load
3. 验证安装
启动R,执行library(Rmpi)验证是否加载成功。如果仍有问题,检查mpicc --version输出的路径是否与上述配置一致,确保没有其他版本的OpenMPI干扰。
内容的提问来源于stack exchange,提问作者Heidi Nguyen
相关产品推荐
相关产品推荐

