Program Listing for File mpi_utils.hpp

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

#pragma once
#ifndef UITSL_MPI_MPI_UTILS_HPP_INCLUDE
#define UITSL_MPI_MPI_UTILS_HPP_INCLUDE

#include <assert.h>
#include <limits>
#include <numeric>
#include <stddef.h>

#include <mpi.h>

#include "../../../third-party/Empirical/source/base/array.h"
#include "../../../third-party/Empirical/source/base/errors.h"

#include "../debug/safe_cast.hpp"
#include "../utility/print_utils.hpp"

#include "audited_routines.hpp"
#include "comm_utils.hpp"
#include "group_utils.hpp"
#include "proc_id_t.hpp"
#include "request_utils.hpp"
#include "status_utils.hpp"

namespace uitsl {

void mpi_init_multithread(int *argc, char ***argv) {
  int res{};
  UITSL_Init_thread(argc, argv, MPI_THREAD_MULTIPLE, &res);
  if (res < MPI_THREAD_MULTIPLE) emp::NotifyWarning(
    "MPI implementation may not provide full multithread support."
  );
}

void mpi_init_multithread() {
  int argc{};
  mpi_init_multithread(&argc, nullptr);
}

void mpi_init() {
  int argc{};
  UITSL_Init(&argc, nullptr);
}

} // namespace uitsl

#endif // #ifndef UITSL_MPI_MPI_UTILS_HPP_INCLUDE