mpicc(パラレル gcc) を使用してコードを実行する必要があります。サーバーには2つのmpiccパッケージ、すなわちOPENMPI
andがインストールされています。 OPENMPI の mpicc がデフォルトで使用されます。MPICH
/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
私はあなたがalias
あなたの場合に完璧だと思います。.profile
またはに次のように追加できます.bash_profile
。
alias mympicc='/usr/local/MPICH/bin/mpicc'
より永続的ですが、それでも元に戻すことができる解決策は、場所をMPICH
ルートの前に追加することですOPENMPI
。これは、以下を追加するか、.profile
次を追加することで簡単に行うことができます.bash_profile
。
export PATH="/usr/local/MPICH/bin:$PATH"
そのようなコマンドを入力すると、そのコマンドがmpicc
現在のディレクトリにない場合はシェルが順番PATH
に検索されるため、優先順位を設定するにはそのコマンドをどこに置くことが重要です。
2つの間を簡単に「切り替える」ために使用できるスイッチの種類を望む場合は、機能の種類を作成.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
設定の詳細をご覧ください。道