gpt4 book ai didi

c++ - 如何知道 MPI 请求的接收者和发送者

转载 作者:行者123 更新时间:2023-11-30 03:58:30 27 4
gpt4 key购买 nike

有没有办法知道boost中一次MPI通信的接收进程、发送进程和tag值。

现在,我有一些进程可以相互发送/接收大量消息。而且,我在接收方有一个 boost::mpi::request 集合。该集合存储已收到的请求项。通信操作完成后,我可以从这个集合中提取接收者进程和发送者进程吗? (我还需要知道标签值。)或者,我应该改变我的策略吗?也许收集请求没有意义?

最佳答案

该信息在请求完成后的状态中,而不是在请求本身中。

#include <boost/mpi.hpp>
#include <iostream>
#include <string>
#include <boost/serialization/string.hpp>
namespace mpi = boost::mpi;

int main()
{
mpi::environment env;
mpi::communicator world;

if (world.rank() == 0) {
std::string msg, out_msg = "Hello from rank 0.";
world.send(1, 17, out_msg);
} else {
mpi::request req[1];
mpi::status stat[1];
std::string rmsg;

req[0] = world.irecv(mpi::any_source, mpi::any_tag, rmsg);
mpi::wait_all(req, req + 1, stat);

std::cout << "Got " << rmsg << std::endl;
std::cout << "From " << stat[0].source() << std::endl;
std::cout << "Tagged " << stat[0].tag() << std::endl;
}

return 0;
}

关于c++ - 如何知道 MPI 请求的接收者和发送者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27403088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com