この記事は、インテル® デベロッパー・ゾーンに公開されている「Fortran Coarray Application Hang After Executing FAIL IMAGE」(https://software.intel.com/en-us/articles/fortran-coarray-application-hang-after-executing-fail-image) の日本語参考訳です。
バージョン: インテル® Fortran コンパイラー 19.1
問題の説明:
インテル® Fortran コンパイラー 19.1 では、Co-Array で FAIL IMAGE 文を使用できるようになりました。FAIL IMAGE を使用すると、実際にイメージが失敗するのを待つことなく、失敗したイメージのリカバリーコードをデバッグできます。
現在の実装には、FAIL IMAGE 文の実行後に発生する既知の問題があります。アプリケーションの残りの部分が次のいずれかのアクションを実行すると、アプリケーションはハングします。
- アプリケーションの終了
- Co-Array の作成 (非 ALLOCATABLE の宣言、ALLOCATABLE の割り当て)
- Co-Array の解放 (解放または終了)
- ブロードキャスト操作とレデュース操作 (CO_BROADCAST、CO_MAX、CO_MIN、CO_REDUCE、CO_SUM)
回避方法:
イメージが失敗したときにハングを防ぐ特定の方法はありません。ただし、同期ポイントが頻繁に発生しないようにプログラムを構成すると、同期ポイントの直前で失敗する可能性は低くなります。イメージが頻繁に Co-Array ロード/ストアを行ったり、イメージステータスをチェックする場合、失敗したイメージをより早く発見できる可能性が高まります。 FAILED_IMAGES 組込み関数は、失敗したイメージの有無をチェックしますが、ほかのイメージではその呼び出し結果が異なることがあります。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。