默认使用 Linux 终端在 openmpi 和 mpich 之间切换

默认使用 Linux 终端在 openmpi 和 mpich 之间切换

我需要使用 mpicc(并行 gcc)运行代码。一台服务器安装了两个mpicc包,分别是OPENMPI和。默认使用 OPENMPI 的 mpiccMPICH/usr/local/OPENMPI/usr/local/MPICH

which mpicc

节目/usr/local/OPENMPI/bin/mpicc

我的代码是为 MPICH 构建的。而不是每次都使用完整路径调用 MPICH 的 mpicc。有没有一种简单的方法可以将其设置/usr/local/MPICH/bin/mpicc为默认值,直到我完成工作,然后将其改回/usr/local/OPENMPI/bin/mpicc

答案1

我认为 analias非常适合您的情况。您可以将以下内容添加到您的.profile.bash_profile

alias mympicc='/usr/local/MPICH/bin/mpicc'

更永久(但仍然可逆)的解决方案是将MPICH位置添加到路径之前的OPENMPI位置。通过添加以下内容即可轻松完成.profile.bash_profile

export PATH="/usr/local/MPICH/bin:$PATH"

当您键入类似 的命令时mpicc,如果它不在当前目录中,您的 shellPATH将按顺序搜索它,因此将其放在哪个位置来设置优先级非常重要。

如果您想要某种可以用来在两者之间轻松“翻转”的开关,您可以创建某种函数并将其添加到您的.bashrc(或.profile/.bash_profile ):

use_mpicc () {
    shopt -s nocasematch
    case "$1" in
        mpich) export PATH="...:/usr/local/MPICH/bin:/usr/local/OPENMPI/bin:..." ;;
        openmpi) export PATH="...:/usr/local/OPENMPI/bin:/usr/local/MPICH/bin:..." ;;
        *) return 1 ;;
    esac
    shopt -u nocasematch
}

在此示例中,我使用省略号代替实际路径。我建议实际上指定此函数中的完整路径(如果使用),而不是使用:PATH="Stuff_I_Need_added:$PATH"方法,因为每次调用该函数时,该方法都会不断添加到您的路径中PATH,可能会导致它变得非常长。

你可以这样称呼它:

$ use_mpicc mpich
$ # OR
$ use_mpicc openmpi

更多阅读有关设置您的小路

相关内容