78 explicit Impl(MPI_Comm mpi_comm,
bool clean_comm =
false)
79 : m_communicator(mpi_comm)
80 , m_clean_comm(clean_comm)
82 m_trace_mng = Arccore::arccoreCreateDefaultTraceMng();
83 ::MPI_Comm_rank(mpi_comm, &m_comm_rank);
84 ::MPI_Comm_size(mpi_comm, &m_comm_size);
88 m_adapter =
new MpiAdapter(m_trace_mng.get(), m_stat, mpi_comm, mpi_lock);
91 m_dispatchers->setDeleteDispatchers(
true);
100 std::cerr <<
"ERROR: msg=" << ex <<
"\n";
103 delete m_dispatchers;
107 MPI_Comm_free(&m_communicator);
119 IStat* m_stat =
nullptr;
122 int m_comm_rank = A_NULL_RANK;
123 int m_comm_size = A_NULL_RANK;
124 MPI_Comm m_communicator = MPI_COMM_NULL;
125 bool m_clean_comm =
false;
164 _createAndSetCustomDispatcher<DataType>(dispatchers, mpm, adapter, dt);
173create(MPI_Comm mpi_comm,
bool clean_comm)
175 Impl* p =
new Impl(mpi_comm, clean_comm);
176 auto mpm =
new StandaloneMpiMessagePassingMng2(p);
177 auto adapter = p->m_adapter;
178 auto dsp = p->m_dispatchers;
180 _createAndSetDispatcher<char>(dsp, mpm, adapter);
181 _createAndSetDispatcher<signed char>(dsp, mpm, adapter);
182 _createAndSetDispatcher<unsigned char>(dsp, mpm, adapter);
183 _createAndSetDispatcher<short>(dsp, mpm, adapter);
184 _createAndSetDispatcher<unsigned short>(dsp, mpm, adapter);
185 _createAndSetDispatcher<int>(dsp, mpm, adapter);
186 _createAndSetDispatcher<unsigned int>(dsp, mpm, adapter);
187 _createAndSetDispatcher<long>(dsp, mpm, adapter);
188 _createAndSetDispatcher<unsigned long>(dsp, mpm, adapter);
189 _createAndSetDispatcher<long long>(dsp, mpm, adapter);
190 _createAndSetDispatcher<unsigned long long>(dsp, mpm, adapter);
191 _createAndSetDispatcher<float>(dsp, mpm, adapter);
192 _createAndSetDispatcher<double>(dsp, mpm, adapter);
193 _createAndSetDispatcher<long double>(dsp, mpm, adapter);
198 MPI_Datatype uint8_datatype = MpiBuiltIn::datatype(uint8_t{});
201 MPI_Datatype mpi_datatype;
202 MPI_Type_contiguous(2, uint8_datatype, &mpi_datatype);
203 MPI_Type_commit(&mpi_datatype);
205 _createAndSetCustomDispatcher<BFloat16>(dsp, mpm, adapter, x);
209 MPI_Datatype mpi_datatype;
210 MPI_Type_contiguous(2, uint8_datatype, &mpi_datatype);
211 MPI_Type_commit(&mpi_datatype);
213 _createAndSetCustomDispatcher<Float16>(dsp, mpm, adapter, x);