プロセッサ間で可変長のベクトルを送信する必要があります。より具体的には、1つのプロセッサが他の2つのプロセッサの送信をリッスンします。これで十分ですが、これで十分です。
// receiving processor (rank 0):
MPI::Status status;
MPI::COMM_WORLD.Probe(MPI::ANY_SOURCE, my_tag, status);
const auto sender = status.Get_source();
const auto n_bytes = status.Get_count(MPI::BYTE);
std::cerr << n_bytes << std::endl;
auto row = std::vector<size_t>(n_bytes / sizeof(size_t));
MPI::COMM_WORLD.Recv(&row.front(), n_bytes, MPI::BYTE, sender, my_tag);
// sending processor:
const size_t n = 10; // example value
auto row = std::vector<size_t>(n, 0);
const auto n_bytes = n * sizeof(size_t);
MPI::COMM_WORLD.Send(&row.front(), n_bytes, MPI::BYTE, 0, my_tag);
ただし、受信側のプロセッサは報告しn_bytes == 0
ます。使用はProbe / Recv
正しいですか?