MCPcopy Create free account
hub / github.com/FEniCS/dolfinx / weights_dest

Method weights_dest

cpp/dolfinx/common/IndexMap.cpp:1331–1357  ·  view source on GitHub ↗

-----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1329}
1330//-----------------------------------------------------------------------------
1331std::vector<std::int32_t> IndexMap::weights_dest() const
1332{
1333 int ierr = 0;
1334 std::vector<std::int32_t> w_src = this->weights_src();
1335
1336 std::vector<MPI_Request> requests(_dest.size() + _src.size());
1337
1338 std::vector<std::int32_t> w_dest(_dest.size());
1339 for (std::size_t i = 0; i < _dest.size(); ++i)
1340 {
1341 ierr = MPI_Irecv(w_dest.data() + i, 1, MPI_INT32_T, _dest[i], MPI_ANY_TAG,
1342 _comm.comm(), &requests[i]);
1343 dolfinx::MPI::check_error(_comm.comm(), ierr);
1344 }
1345
1346 for (std::size_t i = 0; i < _src.size(); ++i)
1347 {
1348 ierr = MPI_Isend(w_src.data() + i, 1, MPI_INT32_T, _src[i], 0, _comm.comm(),
1349 &requests[i + _dest.size()]);
1350 dolfinx::MPI::check_error(_comm.comm(), ierr);
1351 }
1352
1353 ierr = MPI_Waitall(requests.size(), requests.data(), MPI_STATUS_IGNORE);
1354 dolfinx::MPI::check_error(_comm.comm(), ierr);
1355
1356 return w_dest;
1357}
1358//-----------------------------------------------------------------------------
1359std::array<std::vector<int>, 2> IndexMap::rank_type(int split_type) const
1360{

Callers 2

test_rank_weightsFunction · 0.80
comm_graphMethod · 0.80

Calls 5

weights_srcMethod · 0.95
dataMethod · 0.80
check_errorFunction · 0.50
sizeMethod · 0.45
commMethod · 0.45

Tested by 1

test_rank_weightsFunction · 0.64