0

HPCタスクは成功するか失敗するかのどちらかですが、「後で試す」ことをスケジューラーに戻すにはどうすればよいですか。失敗を使用してタスクを再送信できますが、何かが壊れているために失敗したかどうかを判断する方法が必要です(あきらめます)。または、このタスクが別のタスクを待機しているため、すぐに再試行してください(エラーが発生するか、正常に完了するまで試行を続けてください)

HPC APIなどを使用してこれを実現する方法はありますか?ゼロ以外のものは失敗であり、ゼロは成功であると私が聞いたことから、それだけです。確かに、この「後で試す」動作を実現するための優れた方法があるはずです。

バックグラウンド

最初のタスクが他のタスクを実行しているときに、最初のタスクが十分なデータを処理して開始できるようになるまで待機するという点で、それらの間に複雑な相互依存関係がある単一のジョブで多数のHPCタスクを実行しようとしています(カスケード実行のようなものですが、簡単な順序ではないため、HPCで依存関係を定義することはできません)。

当初、私はこれらの複数のタスクを複数のコア間で共有して、メインタスクが関心のあるタスクを完了するのを待っている間にスリープできるようにしようとしていました。Windowsがプロセスをタイムシェアする方法と同様です。HPC(設計上!)ではコアごとに1つのタスクしか許可されないため、8コアのマシンを使用している場合は、一度に8つのタスクしか実行できないことが明らかになりました。

解決策は、バッチファイルなどを使用して複数のプロセスを生成することであるように見えますが、そのパスを進む前に、上記の質問が実行可能かどうかを知りたいと思います。

4

1 に答える 1

0
  1. 残念ながら、スケジューラーがタスクを再試行するような方法でタスクが失敗する方法はありません。
  2. ご想像のとおり、これを行うための推奨される方法は、開始するすべてのプロセスを開始するバッチファイルまたはPowerShellスクリプトを各タスクで実行することです。
  3. これを望まない場合、SP2のHPCスケジューラーは、コアのオーバーサブスクリプション(コアごとに複数のタスク)を許可するようになりました。これは、問題の解決に適用できる可能性があります。設定方法のガイドについては、こちらを参照してください:クラスターノードのオーバーサブスクライブコア数
于 2011-07-25T22:38:11.587 に答える