11#include <Teuchos_DefaultMpiComm_def.hpp>
14#ifdef HAVE_TEUCHOS_MPI
19 mpiErrorCodeToString (
const int errCode)
21 if (errCode == MPI_SUCCESS) {
25 char rawErrString[MPI_MAX_ERROR_STRING];
27 int err = MPI_Error_string (errCode, rawErrString, &len);
28 if (err != MPI_SUCCESS) {
32 if (MPI_MAX_ERROR_STRING > 0) {
33 rawErrString[0] =
'\0';
36 return std::string (rawErrString);
41 void safeCommFree (MPI_Comm* comm) {
49 const int err = MPI_Finalized (&finalized);
52 if (err == MPI_SUCCESS && ! finalized) {
56 (void) MPI_Comm_free (comm);
60 int setCommErrhandler (MPI_Comm comm, MPI_Errhandler handler) {
62 return MPI_Comm_set_errhandler (comm, handler);
64 return MPI_Errhandler_set (comm, handler);
71#define TEUCHOS_MPI_COMM_INSTANT(ORDINAL) \
72 template class Teuchos::MpiCommStatus<ORDINAL>; \
74 template Teuchos::RCP<Teuchos::MpiCommStatus<ORDINAL>> \
75 Teuchos::mpiCommStatus(MPI_Status rawMpiStatus); \
77 template class Teuchos::MpiCommRequestBase<ORDINAL>; \
79 template class Teuchos::MpiCommRequest<ORDINAL>; \
81 template Teuchos::RCP<Teuchos::MpiCommRequest<ORDINAL>> \
82 Teuchos::mpiCommRequest(MPI_Request, \
83 const Teuchos::ArrayView<char>::size_type); \
84 template class Teuchos::MpiComm<ORDINAL>; \
86 template Teuchos::RCP<Teuchos::MpiComm<ORDINAL>> Teuchos::createMpiComm( \
87 const RCP<const OpaqueWrapper<MPI_Comm>> &); \
89 template Teuchos::RCP<Teuchos::MpiComm<ORDINAL>> Teuchos::createMpiComm( \
90 const RCP<const OpaqueWrapper<MPI_Comm>> &, const int); \
92 template MPI_Comm Teuchos::getRawMpiComm(const Comm<ORDINAL> &comm);
94TEUCHOS_MPI_COMM_INSTANT(
short)
95TEUCHOS_MPI_COMM_INSTANT(
int)
96TEUCHOS_MPI_COMM_INSTANT(
long)
97TEUCHOS_MPI_COMM_INSTANT(
long long)
Implementation of Teuchos wrappers for MPI.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
Teuchos implementation details.