MS HPC クラスターで実行するタスクを生成する .NET アプリがあります。手の込んだ DryadLINQ は使用せず、クラスター上で exe をリモートで実行し、コマンド ライン経由で引数を渡すだけです。タスクは .NET コードで、HPC でエラーが発生したときに、呼び出し元のアプリが実際の Exception オブジェクトを取得するようにしたいと考えています。
これを達成するための最良の一般的な手法は何ですか?
さらに情報が必要な場合はお知らせください。
ありがとう!
MS HPC クラスターで実行するタスクを生成する .NET アプリがあります。手の込んだ DryadLINQ は使用せず、クラスター上で exe をリモートで実行し、コマンド ライン経由で引数を渡すだけです。タスクは .NET コードで、HPC でエラーが発生したときに、呼び出し元のアプリが実際の Exception オブジェクトを取得するようにしたいと考えています。
これを達成するための最良の一般的な手法は何ですか?
さらに情報が必要な場合はお知らせください。
ありがとう!
バッチ スケジューラを使用している場合、実行可能ファイルからクライアント HPC アプリに例外を戻すことはできません。キューに入れていたタスクまたはジョブのいずれかが失敗したことがわかっているだけで十分な場合は、SchedulerJob オブジェクトを保持して、OnJobState または OnTaskState イベントにコールバックを追加できます。ジョブ (またはそのジョブ内のタスク) の状態が変わるたびに、コールバックでジョブ ID/タスク ID と状態変更情報を取得します。次に、状態が「失敗」に変更されたかどうかを確認し、その情報に基づいて行動できます。
タスクまたはジョブを「失敗」としてマークするには、ゼロ以外の終了コードで実行可能ファイルを終了させます。実際の例外の詳細が必要な場合は、標準出力に出力することをお勧めします。
すべての例外の詳細が本当に必要な場合は、計算に SOA フレームワークを使用することもできます。利点は次のとおりです。
コンピューティング リクエストは WCF メソッド呼び出しのように見えます
コードがスローされたときに詳細な例外が返されます
Visual Studio の SOA デバッガー拡張機能を使用して、コードをデバッグできます。
欠点は次のとおりです。
開始するためのリソースを次に示します (「Windows HPC SOA」を検索すると、さらに多くの情報が得られます)。