C++でOpenMPI入門 追記1 MPI::InitとMPI::Finalizeの確認

OpenMPIでは並列処理の前にMPI::Init, 終了時にMPI::Finalizeを呼ぶことになっているが,

MPI::Init();
MPI::Init();

MPI::Finalize();
MPI::Finalize();

のようにすると実行時エラーで落ちる. これを回避するために既にMPI::InitやMPI::Finalizeが呼ばれているかを事前に確認すると良い.

#include <mpi.h>

int main(int argc, char **argv)
{
    if (!MPI::Is_initialized())
    {
        MPI::Init(argc, argv);
    }

    if (!MPI::Is_finalized())
    {
        MPI::Finalize();
    }
}

http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.fomp200/ipezps00173.htm