我安装了 Ubuntu 20.04,需要安装带有 gcc 8.4.0 的 OpenMPI 3.1.6。
我从 OpenMPI 下载了 tar 包并使用以下命令进行安装
tar-xzf openmpi-3.1.6.tar.gz && cd openmpi-3.1.6
PARGS="env CC=/usr/bin/gcc FC=/usr/bin/gfortran CXX=/usr/bin/g++"
ARGS=" --enable-shared --enable-mpi-fortran=usempi"
ARGS+=" --enable-mpi-thread-multiple"
ARGS+=" --prefix=/openmpi/3.1.6/gcc/8.4.0"
mkdir -p build && cd build
$PARGS ../configure $ARGS
$PARGS make -j8 && make install
它安装得很好,没有问题。但是当我尝试
mpirun --version
我收到以下错误
Command 'mpirun' not found, but can be installed with:
然后使用 sudo apt-get 提供各种选项(这是我最初安装它的方式,但它不支持 3.1.6)。
我认为这与环境变量有关,Linux 无法找到该软件。所以我去查找,发现在 OpenMPI FAQ 中提到了以下内容:
“假设您已经将 PATH 和/或 LD_LIBRARY_PATH 环境变量调整为 Open MPI 现在所在的新位置”
...但是它没有说明如何做到这一点。我尝试搜索,但它提到了各种不同的 ~/.FILE(其中文件是 bash 或 lib64 或 lib32 或其他文件)。
我实际上需要在环境变量中更改什么以及在哪个文件中更改?我几乎使用 Ubuntu 终端进行所有操作。
============================================= 谢谢,ubfan1!我必须将以下内容添加到 /.profile:
# set the OpenMPI path
export OMPI=/openmpi/3.1.6/gcc/8.4.0
export PATH=$PATH:$OMPI/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OMPI/lib
现在一切正常!我的系统可以找到 mpirun,版本是 3.1.6!
答案1
查看你的主目录的 .profile 来了解如何将内容添加到你的 PATH。
安装 openmpi 的位置可能有名为 bin、lib64 等的子目录。例如,$HOME/openMPI 是您选择安装它的位置,因此在 .profile 末尾将 $HOME/openMPI/bin 添加到 PATH:export PATH="$HOME/openMPI/bin:$PATH" 然后添加行:“export LD_LIBRARY_PATH=$HOME/openMPI/lib64”(假设您没有现有的 LD_LIBRARY_PATH。)现在您在 PATH 的前面有一个位置 ...openMPI/bin,您可以通过将新命令放在那里来覆盖标准系统命令,例如名为 gcc 的链接指向 gcc-8.4 版本(在 20.04 中可用)。如果您需要标准软件包中没有的 gcc 版本,您可以简单地将整个可执行文件(从您获得它的地方)放在链接的位置。也许您不想每次登录时都覆盖 gcc。在这种情况下,只需设置一个要运行的脚本,而不是将更改放入您的 .profile 中。
常见的陷阱:
- 您的登录实际上并没有创建登录 shell,因此 .profile 未被执行(通常不是 Ubuntu 的问题,但是所有将 PATH 模式放入 .bashrc 的建议都源于这个问题。
- 您创建了一个覆盖 .profile 的 .bash_profile ——如果您这样做了,您应该知道,然后修改 .bash_profile。
- 建议修改 /etc/alternatives 以更改系统默认的 gcc,这将在您下次更新时基本上破坏您的系统,并需要标准的、已发布的、经过测试的编译器。
您的路径添加可能应该以 / 开头,因此是 /home/openmpi/... 而不仅仅是 openmpi/... 但是,查看 openmpi 目录,看看是否有 bin 目录,如果实际有 openmpi 可执行文件要运行,我期望该目录是该目录。您可以在其中添加指向较低级别 gcc...bin 的 gcc 链接,以便将所有 openmpi 程序放在一起。请注意,gcc 8.4 在 Ubuntu 20.04 中作为标准软件包提供,但如果您的 openmpi 安装有一个,则可以使用它,只是不会获得任何更新(如果有)。