ここで説明するマルチスレッド・プログラムのデバッグは、OpenMP* Fortran API とインテル® Fortran 並列コンパイラ・ディレクティブの両方に適用されます。プログラムが並列分解ディレクティブを使用するとき、誤った文または不正な並列分解ディレクティブのいずれかによって、バグが発生する可能性があることを考慮する必要があります。どちらの場合でも、デバッグするプログラムは、同時にマルチスレッドで実行できます。
次のアプリケーションなどを使用して、マルチスレッド・プログラムをデバッグすることが可能です。
IA-32 アプリケーション用のインテル® デバッガと Itanium® ベース・アプリケーション用のインテル・デバッガ (idb)
インテル Fortran コンパイラのデバッグ・オプションとメソッド。
低レベルデバッグ用のインテル並列化拡張ルーチン
問題のある個所を明確にするインテル® VTune™ パフォーマンス・アナライザ
その他のよく知られているデバッグ方法とヒントは次のとおりです。
単一プロセッサ環境のシングルスレッドでプログラムを修正する
静的にロックを解析する
トレース文 (PRINT 文など) を使用する
前提を少なく、並列思考する。
コード全体をステップ実行する。
スレッドとコールスタック情報を理解する
プライマリ・スレッドを識別する
デバッグしているスレッドを知る
1 つのスレッドで 1 つずつステップ実行することは、他の複数のスレッドで 1 つずつステップ実行することとは異なります。
コンテキストの切り替えを監視する
IA-32 アプリケーション用のインテル・デバッガ (IDB) や Itanium ベース・アプリケーション用のインテル・デバッガ (IDB) などのデバッガは、マルチスレッドで実行されるプログラムのデバッグをサポートしています。しかし、これらのデバッガの現在のバージョンは、並列分解ディレクティブのデバッグを直接的にはサポートしていません。つまり、デバッグの機能には制限があります。
OpenMP で使用される新しい機能のいくつかは、まだ完全にデバッガにはサポートされていません。 よって、デバッグ方法を知るために、これらの機能がどのように動作するかを理解することは重要です。問題となる個所は次の 2 つです。
インテル・デバッガ (IDB) は、マルチスレッドに関連した独自の OpenMP 機能を処理しません。