0

我在 Z820 Intel Xeon(R) CPU E5-2643 v2 @ 3.50GHz × 24 上构建了 64 位 Ubuntu 21.04 的原始构建。操作系统是使用默认设置安装的。

MPICH 安装:

对于特定系统 mpich 版本 3.4.2 通过以下步骤。

cd /home/rmpitest/Downloads
tar xfz mpich-3.4.2.tar.gz
cd /home/rmpitest/mpich-install
mkdir /tmp/rmpitest/mpich-3.4.2
cd /tmp/rmpitest/mpich-3.4.2
sudo apt-get install build-essential
/home/rmpitest/Downloads/mpich-3.4.2/configure -prefix=/home/rmpitest/mpich-install --with-device=ch4:ofi FFLAGS=-fallow-argument-mismatch --disable-fortran |& tee c.txt # I'm not sure why I had to disable Fortran but I don't think I need it. 
make 2>&1 | tee m.txt 
make install |& tee mi.txt
export PATH=/home/v22da/mpich-install/bin:$PATH
rmpitest@rmpitest-HP-Z820-Workstation:/tmp/rmpitest/mpich-3.4.2$ which mpicc
/home/rmpitest/mpich-install/bin/mpicc
rmpitest@rmpitest-HP-Z820-Workstation:/tmp/rmpitest/mpich-3.4.2$ which mpiexec
/home/rmpitest/mpich-install/bin/mpiexec

R安装:

sudo apt install r-base
download Rmpi
https://cran.r-project.org/src/contrib/Rmpi_0.6-9.1.tar.gz
sudo R CMD INSTALL Rmpi_0.6-9.1.tar.gz
# fails to find mpi.h
# so 
sudo R CMD INSTALL ../Downloads/Rmpi_0.6-9.1.tar.gz --configure-args="--with-mpi=/home/rmpitest/mpich-install --with-Rmpi-type=MPICH"

结果:

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 '/usr/local/lib/R/site-library/00LOCK-Rmpi/00new/Rmpi/libs/Rmpi.so':
  libmpi.so.12: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/usr/local/lib/R/site-library/Rmpi’

这就像我可以想象的那样简单的 mpi 安装,这是失败的吗?

4

1 回答 1

0

认为您的一些问题来自混合和匹配包管理器。我相信你现在可能已经解决了这个问题,但在你的鞋子里,我会:

install.packages()a)单独对 Rmpi​​ 使用 R函数;应该引入依赖项

b) 导出R_LIBS=~/somewhere/local,以免破坏系统包

c) MPI 在单台计算机上本身就是一种开销——您可能知道,它实际上是为集群设计的。该doMPI包为 R 的结构提供了一个临时工作的后端,如果您在将代码部署到集群上之前在本地机器上开发代码,那么在许多方面使用和安装和/或使用其中的功能foreach () %dopar% {}是有意义的。您可能使用的集群可能有自己的方法来管理“库乐趣和游戏”——例如模块加载——并且根据我的经验,更改调用哪个库非常容易。您可能还需要集群上的本地,因为您无法修改系统库(以避免破坏其他人的东西)。library(parallel)library(foreach)doparR_LIBS

于 2021-11-03T10:11:03.250 回答