1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 #include "mpicxx.h"
  25 
  26 
  27 
  28 #include "ompi_config.h"
  29 
  30 #include "cxx_glue.h"
  31 
  32 #if OPAL_CXX_USE_PRAGMA_IDENT
  33 #pragma ident OMPI_IDENT_STRING
  34 #elif OPAL_CXX_USE_IDENT
  35 #ident OMPI_IDENT_STRING
  36 #endif
  37 namespace MPI {
  38     const char ompi_libcxx_version_string[] = OMPI_IDENT_STRING;
  39 }
  40 
  41 namespace MPI {
  42 
  43 #if ! OMPI_HAVE_CXX_EXCEPTION_SUPPORT
  44 int mpi_errno = MPI_SUCCESS;
  45 #endif
  46 
  47 
  48 void* const BOTTOM = (void*) MPI_BOTTOM;
  49 void* const IN_PLACE = (void*) MPI_IN_PLACE;
  50 
  51 
  52 const Errhandler  ERRORS_ARE_FATAL((MPI_Errhandler)&(ompi_mpi_errors_are_fatal));
  53 const Errhandler  ERRORS_RETURN((MPI_Errhandler)&(ompi_mpi_errors_return));
  54 const Errhandler  ERRORS_THROW_EXCEPTIONS((MPI_Errhandler)&(ompi_mpi_errors_throw_exceptions));
  55 
  56 
  57 const Datatype CHAR(MPI_CHAR);
  58 const Datatype SHORT(MPI_SHORT);
  59 const Datatype INT(MPI_INT);
  60 const Datatype LONG(MPI_LONG);
  61 const Datatype SIGNED_CHAR(MPI_SIGNED_CHAR);
  62 const Datatype UNSIGNED_CHAR(MPI_UNSIGNED_CHAR);
  63 const Datatype UNSIGNED_SHORT(MPI_UNSIGNED_SHORT);
  64 const Datatype UNSIGNED(MPI_UNSIGNED);
  65 const Datatype UNSIGNED_LONG(MPI_UNSIGNED_LONG);
  66 const Datatype FLOAT(MPI_FLOAT);
  67 const Datatype DOUBLE(MPI_DOUBLE);
  68 const Datatype LONG_DOUBLE(MPI_LONG_DOUBLE);
  69 const Datatype BYTE(MPI_BYTE);
  70 const Datatype PACKED(MPI_PACKED);
  71 const Datatype WCHAR(MPI_WCHAR);
  72 
  73 
  74 const Datatype FLOAT_INT(MPI_FLOAT_INT);
  75 const Datatype DOUBLE_INT(MPI_DOUBLE_INT);
  76 const Datatype LONG_INT(MPI_LONG_INT);
  77 const Datatype TWOINT(MPI_2INT);
  78 const Datatype SHORT_INT(MPI_SHORT_INT);
  79 const Datatype LONG_DOUBLE_INT(MPI_LONG_DOUBLE_INT);
  80 
  81 #if OMPI_BUILD_FORTRAN_BINDINGS
  82 
  83 const Datatype REAL((MPI_Datatype)&(ompi_mpi_real));
  84 const Datatype INTEGER((MPI_Datatype)&(ompi_mpi_integer));
  85 const Datatype DOUBLE_PRECISION((MPI_Datatype)&(ompi_mpi_dblprec));
  86 const Datatype F_COMPLEX((MPI_Datatype)&(ompi_mpi_cplex));
  87 const Datatype LOGICAL((MPI_Datatype)&(ompi_mpi_logical));
  88 const Datatype CHARACTER((MPI_Datatype)&(ompi_mpi_character));
  89 
  90 
  91 const Datatype TWOREAL((MPI_Datatype)&(ompi_mpi_2real));
  92 const Datatype TWODOUBLE_PRECISION((MPI_Datatype)&(ompi_mpi_2dblprec));
  93 const Datatype TWOINTEGER((MPI_Datatype)&(ompi_mpi_2integer));
  94 
  95 
  96 const Datatype INTEGER2((MPI_Datatype)&(ompi_mpi_integer));
  97 const Datatype REAL2((MPI_Datatype)&(ompi_mpi_real));
  98 const Datatype INTEGER1((MPI_Datatype)&(ompi_mpi_char));
  99 const Datatype INTEGER4((MPI_Datatype)&(ompi_mpi_short));
 100 const Datatype REAL4((MPI_Datatype)&(ompi_mpi_real));
 101 const Datatype REAL8((MPI_Datatype)&(ompi_mpi_double));
 102 
 103 #endif 
 104 
 105 
 106 const Datatype UNSIGNED_LONG_LONG(MPI_UNSIGNED_LONG_LONG);
 107 const Datatype LONG_LONG(MPI_LONG_LONG);
 108 const Datatype LONG_LONG_INT(MPI_LONG_LONG_INT);
 109 
 110 
 111 const Datatype BOOL((MPI_Datatype)&(ompi_mpi_cxx_bool));
 112 const Datatype COMPLEX((MPI_Datatype)&(ompi_mpi_cxx_cplex));
 113 const Datatype DOUBLE_COMPLEX((MPI_Datatype)&(ompi_mpi_cxx_dblcplex));
 114 const Datatype F_DOUBLE_COMPLEX((MPI_Datatype)&(ompi_mpi_cxx_dblcplex));
 115 const Datatype LONG_DOUBLE_COMPLEX((MPI_Datatype)&(ompi_mpi_cxx_ldblcplex));
 116 
 117 
 118 Intracomm COMM_WORLD(MPI_COMM_WORLD);
 119 Intracomm COMM_SELF(MPI_COMM_SELF);
 120 
 121 
 122 
 123 
 124 #ifdef MAX
 125 #undef MAX
 126 #endif
 127 #ifdef MIN
 128 #undef MIN
 129 #endif
 130 
 131 
 132 const Op MAX(MPI_MAX);
 133 const Op MIN(MPI_MIN);
 134 const Op SUM(MPI_SUM);
 135 const Op PROD(MPI_PROD);
 136 const Op MAXLOC(MPI_MAXLOC);
 137 const Op MINLOC(MPI_MINLOC);
 138 const Op BAND(MPI_BAND);
 139 const Op BOR(MPI_BOR);
 140 const Op BXOR(MPI_BXOR);
 141 const Op LAND(MPI_LAND);
 142 const Op LOR(MPI_LOR);
 143 const Op LXOR(MPI_LXOR);
 144 const Op REPLACE(MPI_REPLACE);
 145 
 146 
 147 const Group        GROUP_NULL = MPI_GROUP_NULL;
 148 const Win          WIN_NULL = MPI_WIN_NULL;
 149 const Info         INFO_NULL = MPI_INFO_NULL;
 150 
 151 
 152 Comm_Null    COMM_NULL;
 153 const Datatype     DATATYPE_NULL = MPI_DATATYPE_NULL;
 154 Request      REQUEST_NULL = MPI_REQUEST_NULL;
 155 const Op           OP_NULL = MPI_OP_NULL;
 156 const Errhandler   ERRHANDLER_NULL;
 157 const File FILE_NULL = MPI_FILE_NULL;
 158 
 159 
 160 const char**       ARGV_NULL = (const char**) MPI_ARGV_NULL;
 161 const char***      ARGVS_NULL = (const char***) MPI_ARGVS_NULL;
 162 
 163 
 164 const Group GROUP_EMPTY(MPI_GROUP_EMPTY);
 165 
 166 }