2017-10-18 27 views
0

です$ルーチン配列 ACC私は、エラーメッセージコンパイラエラーPGI OpenACC「pgf90_mzero8」私はとFORTRANサブルーチンをコンパイルしようとしています未定義

/scratch/tmp/pgaccKU0jSWcDesiI.gpu(93)以下になっています!:エラー:識別子 "pgf90_mzero8" "/scratch/tmp/pgnvdgV0jsxZLyFWv.nv0"

PGIコンパイラのバージョン17.4

テキストケース

のコンパイルで検出未定義

1エラーであります

サブルーチンXX(ndime、pgaus、YY) !$ルーチン配列ACC
暗黙のどれ 整数(4):: ndime、pgaus リアル(8):: YY(ndime、ndime、pgaus)

YY = 0.0

端サブルーチンXX

答えて

1

これは既知の問題です。私はあなたのコードでは、あなたは "arr = 0.0d0"のような配列構文を使用して配列をゼロにしていると仮定しています。フロントエンドコンパイラはこのイディオムを認識し、最適化された実行時ルーチンに置き換えます。これは、コンパイラがコードのこのセクションがデバイスにコンパイルされることを知るずっと前に、コンパイルの非常に初期に発生します。残念ながら、私たちはまだこのランタイムルーチンをデバイスに移植していないので、エラーになります。

この最適化を無効にするには、 "-Mnoidiom"フラグを付けてコンパイルするのが最も簡単です。

+0

ありがとうございましたマット私は小さなテストケースで同じ結論に達しました。 –