ifort の使用に問題があります。コードを ifort/mpich1 でコンパイルしましたが、複数のノードで実行しようとすると、コードが特定のポイントに達し、エラーが発生してハングします。
symbol lookup error ... undefined symbol __svml_round2
調べてみると、これは ifortvars シェル スクリプトが計算ノードでソースされていないことが原因であると確信しています (1 つのノードでコードをシリアルに起動しようとしても、ifort vars をソースしていない場合、同じ結果が得られます)。正確なエラー)。
この問題を回避する最善の方法は何ですか? .bashrc ファイルに「source ...」コマンドがあるため、mpirun を実行すると「.bashrc」ファイルが実行されないようです。また、 /etc/bash.bashrc ファイルに行を追加しようとしましたが、うまくいきませんでした。あるいは、コンパイル時の静的リンクで問題が解決するのではないかと考えたので、含めました
-i-static
-static
ifort でコンパイルしても役に立たない場合でも、エラーが発生します。
誰もがこの問題を回避する方法を知っていますか? 基本的に、コンパイルされたプログラムを実行するときに「ソース ifortvars」を必要としないように ifort でコンパイルする方法 (より望ましい解決策)、または私のパスをプッシュする方法、またはMPI 呼び出しを介して変数をソースしますか? ありがとう。