我需要使用 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
更多阅读有关设置您的小路