2

このプログラムは、MPI のコンテキストで使用されます。Fortran の MPI 実装です。module.like 内で配列を宣言します

module var
 real,save ::arr(8)
end module

次に、サブルーチン likeinitを使用して、配列 arr を初期化します。メインプログラムユニットでは、最初に呼び出しinitて配列 arr を初期化します。次に、別のサブルーチンを呼び出しalgoて、いくつかの計算を実行します。サブルーチンの開始時にalgo、arr の値は正しいです。計算のプロセス中に、arr の値が奇妙に変化しました。一部のプロセッサでは arr の値を変更するコードはありませんが、他のプロセッサでは値は正しいです。コードを確認しましたが、計算中に arr の値を変更するコードはないと確信しています。ところで、モジュール var 内で宣言されている変数の数は数多くあります。

4

2 に答える 2

0

提案をしていただきありがとうございます。エラーは、境界外の配列要素へのアクセスによるものです。私のプログラムでは、 arr(0)=...fortran 配列の範囲を超えているような配列のインデックス 0 要素にアクセスするコード行があります。このコードは、モジュール内の別の変数の値を変更することにつながりますが、これは私にはまったく予想外です。モジュールで定義されているarr(0)=..ような別の変数の変更につながります。parm

于 2013-08-28T02:24:54.077 に答える