41  explicit Impl(MPI_Comm mpi_comm, 
bool clean_comm=
false)
 
   42  : m_communicator(mpi_comm), m_clean_comm(clean_comm)
 
   44    m_trace_mng = Arccore::arccoreCreateDefaultTraceMng();
 
   45    ::MPI_Comm_rank(mpi_comm, &m_comm_rank);
 
   46    ::MPI_Comm_size(mpi_comm, &m_comm_size);
 
   49    MpiLock* mpi_lock = 
nullptr;
 
   50    m_adapter = 
new MpiAdapter(m_trace_mng.get(), m_stat, mpi_comm, mpi_lock);
 
   53    m_dispatchers->setDeleteDispatchers(
true);
 
   62      std::cerr << 
"ERROR: msg=" << ex << 
"\n";
 
   69      MPI_Comm_free(&m_communicator);
 
   81  IStat* m_stat = 
nullptr;
 
   83  MpiAdapter* m_adapter = 
nullptr;
 
   84  int m_comm_rank = A_NULL_RANK;
 
   85  int m_comm_size = A_NULL_RANK;
 
   86  MPI_Comm m_communicator = MPI_COMM_NULL;
 
   87  bool m_clean_comm = 
false;
 
 
  126    _createAndSetCustomDispatcher<DataType>(dispatchers, mpm, adapter, dt);
 
  135create(MPI_Comm mpi_comm, 
bool clean_comm)
 
  137  Impl* p = 
new Impl(mpi_comm, clean_comm);
 
  138  auto mpm = 
new StandaloneMpiMessagePassingMng(p);
 
  139  auto adapter = p->m_adapter;
 
  140  auto dsp = p->m_dispatchers;
 
  142  _createAndSetDispatcher<char>(dsp, mpm, adapter);
 
  143  _createAndSetDispatcher<signed char>(dsp, mpm, adapter);
 
  144  _createAndSetDispatcher<unsigned char>(dsp, mpm, adapter);
 
  145  _createAndSetDispatcher<short>(dsp, mpm, adapter);
 
  146  _createAndSetDispatcher<unsigned short>(dsp, mpm, adapter);
 
  147  _createAndSetDispatcher<int>(dsp, mpm, adapter);
 
  148  _createAndSetDispatcher<unsigned int>(dsp, mpm, adapter);
 
  149  _createAndSetDispatcher<long>(dsp, mpm, adapter);
 
  150  _createAndSetDispatcher<unsigned long>(dsp, mpm, adapter);
 
  151  _createAndSetDispatcher<long long>(dsp, mpm, adapter);
 
  152  _createAndSetDispatcher<unsigned long long>(dsp, mpm, adapter);
 
  153  _createAndSetDispatcher<float>(dsp, mpm, adapter);
 
  154  _createAndSetDispatcher<double>(dsp, mpm, adapter);
 
  155  _createAndSetDispatcher<long double>(dsp, mpm, adapter);
 
  157  dsp->setDispatcher(
new MpiControlDispatcher(adapter, mpm));
 
  158  dsp->setDispatcher(
new MpiSerializeDispatcher(adapter, mpm));
 
  160  MPI_Datatype uint8_datatype = MpiBuiltIn::datatype(uint8_t{});
 
  163    MPI_Datatype mpi_datatype;
 
  164    MPI_Type_contiguous(2, uint8_datatype, &mpi_datatype);
 
  165    MPI_Type_commit(&mpi_datatype);
 
  167    _createAndSetCustomDispatcher<BFloat16>(dsp, mpm, adapter, x);
 
  171    MPI_Datatype mpi_datatype;
 
  172    MPI_Type_contiguous(2, uint8_datatype, &mpi_datatype);
 
  173    MPI_Type_commit(&mpi_datatype);
 
  175    _createAndSetCustomDispatcher<Float16>(dsp, mpm, adapter, x);