Program Listing for File request_utils.hpp

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

#pragma once
#ifndef UITSL_MPI_REQUEST_UTILS_HPP_INCLUDE
#define UITSL_MPI_REQUEST_UTILS_HPP_INCLUDE

#include <mpi.h>

#include "audited_routines.hpp"
#include "mpi_init_utils.hpp"

namespace uitsl {

inline bool test_completion(const MPI_Request& request) {
  int flag{};
  // on MPI spec, request is listed as an input param but not taken as const ptr
  UITSL_Test(
    const_cast<MPI_Request*>(&request), // MPI_Request * request
    &flag, // int *flag
    MPI_STATUS_IGNORE // MPI_Status * status
  );
  return flag;
}

inline bool test_null(const MPI_Request& request) {
  return request == MPI_REQUEST_NULL;
}

} // namespace uitsl

#endif // #ifndef UITSL_MPI_REQUEST_UTILS_HPP_INCLUDE