Program Listing for File MpiGuard.hpp

Return to documentation for file (include/uitsl/mpi/MpiGuard.hpp)

#pragma once
#ifndef UITSL_MPI_MPIGUARD_HPP_INCLUDE
#define UITSL_MPI_MPIGUARD_HPP_INCLUDE

#include <functional>

#include <mpi.h>

#include "../debug/err_verify.hpp"

namespace uitsl {

struct MpiGuard {

  #ifndef __EMSCRIPTEN__
  MpiGuard() {
    int argc{};
    uitsl::err_verify( MPI_Init(&argc, nullptr) );
  }

  ~MpiGuard() { uitsl::err_verify( MPI_Finalize() ); }
  #endif // #ifndef __EMSCRIPTEN__

};

} // namespace uitsl

#endif // #ifndef UITSL_MPI_MPIGUARD_HPP_INCLUDE