首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何知道MPI请求的接收方和发送方

如何知道MPI请求的接收方和发送方
EN

Stack Overflow用户
提问于 2014-12-10 14:07:28
回答 1查看 785关注 0票数 1

我想知道是否有一种方法可以知道接收者进程、发送者进程和MPI通信的标记值。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-10 19:17:31

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

代码语言:javascript
运行
复制
#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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27403088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档