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);