大規模な並列アプリケーションのデバッグの最大のポイントは、並列アプリケーションのプロセスを制御するデバッガーからの大量の出力の処理です。インテル® デバッガーは、同様の出力をグループに集約して出力を管理することができます。デバッガーは、次の 2 つの手法を使用して出力を集約します。
同一の出力メッセージを単一の出力メッセージに圧縮します。集約したメッセージを表示するとき、デバッガーは、出力を適用するユーザープロセス ID の範囲をメッセージの前に追加します。この範囲のプロセスは必ずしも連続していません。デバッガーは、同じ出力のプロセスをすべて単一の最終出力メッセージに集約します。例えば、次のメッセージでは、[0-41] がプロセス範囲です。
[0-41] Intel® Debugger, Version XX
16 進数字が異なる以外は同一の出力は、異なる数字を範囲に集約して圧縮されます。例えば、次のメッセージでは、[0-41] がプロセス範囲で、[0;41] が値の範囲です。
[0-41]>2 0x120006d6c in feedback(myid=[0;41],np=42,name=0x11fffe018="mytest") "mytest.c":41
大規模な並列アプリケーションのデバッグの別のポイントは、一貫した方法でアプリケーションのプロセス、またはプロセスのサブセットをすべて制御できるデバッガーを使用することです。インテル® デバッガーは、単一のユーザーインターフェイスを使用して制御を行うことができます。
並列デバッグセッションの開始:
ルートデバッガーは、並列アプリケーションを開始する責任を負い、ユーザー・インターフェイスとして動作します。アグリゲーターは前述したように出力を統合します。リーフデバッガーは、アプリケーションのプロセスを制御および問い合わせます。
分岐係数は、n 分木のツリーを作成してツリーのアグリゲーターの数を決定するために使用する係数です。例えば、16 プロセスの場合:
デバッガー初期化ファイルで、$parallel_branchingfactor 変数の値をデフォルト値 (8) から 2 以上の値に変更できます。
デバッガー初期化ファイルから $parallel_branchingfactor を削除すると、開始時に使用される分岐係数はデフォルト値になります。
アグリゲーター遅延には、期待したメッセージがすべて届かない場合に、メッセージを集約して次のレベルへメッセージを送る前にアグリゲーターが待機する時間を指定します。
デバッガー初期化ファイルで、$parallel_branchingfactor 変数の値をデフォルト値 (3000 ミリ秒) から変更できます。詳細は、「並列デバッグのヒント」を参照してください。
デバッガー初期化ファイルから $parallel_aggregatordelay を削除すると、開始時に使用されるアグリゲーター遅延はデフォルト値になります。