bugfix> parallel-processing > 投稿

MPIプログラムの一部のデータの状態を検証する必要があります。プログラムは、分散メモリシステムを備えたスーパーコンピューターで実行されます。 C Standardのassert関数に関する簡単な調査により、assertは内部的にプログラムの終了にabort()関数を使用していることが明らかになりました。特にMPIのコンテキストでは、マルチプロセスプログラムでabort()がどのように機能するかについての情報はあまりありません。これはPOSIX環境とは大きく異なります。 abort()は呼び出されたプロセスのみを終了しますか、それともすべてのプロセスを終了できますか?

そして最後に、条件が失敗したときにMPIプログラムのすべてのプロセスを実際に終了するにはどうすればよいですか? MPIライブラリに組み込みのアサートがありますか?

回答 1 件
  • abort()  呼び出すMPIタスクのみを終了します。

    mpirun によって検出される可能性が非常に高い  および/またはリソースマネージャ、およびその後のすべてのMPIジョブ(たとえば、すべてのノード上のすべてのMPIタスク)を強制終了します。

    とはいえ、これはライブラリ/システムに依存しているため、最初にそれを再確認する必要があります。

    MPIジョブを終了する正しい方法は

    MPI_Abort(MPI_COMM_WORLD, errorcode)
    
    

    errorcode  は int です  通常、厳密に正の値が割り当てられます。

あなたの答え