首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一条消息中发送具有恒定报头的可变长度矢量

在一条消息中发送具有恒定报头的可变长度矢量
EN

Stack Overflow用户
提问于 2019-05-21 22:50:24
回答 1查看 86关注 0票数 4

我有n个workers,1个master (秩0),需要通过MPI从n个workers发送消息到master。消息格式是可变长度向量(float *dta)和恒定大小的报头struct { int32_t x, int32_t y } dtaHdr

主节点只是遍历传入的结果并对其进行处理。对于它来说,能够将哪个dtaHdr与哪个dta关联起来是很重要的。

我知道如何:

  1. 为固定大小的MPI_Datatype创建dtaHdr,并通过P2P MPI_Send/MPI_Recv.

通过P2P MPI_Float发送任意数据类型(例如MPI_Float)的可变长度矢量

问题是我不知道如何将这两种方法结合起来。

我知道我可以:

  • 在两个单独的消息中先发送报头,然后发送数据。存在消息重新排序和交织问题的
    • 。我需要一种可靠的、简单的、可伸缩的方式来关联master上的头及其数据。对于两个消息,我不知道如何总是&简单地在master上获取传入消息的头和数据。即,两个worker可以向master发送hdr & data消息&它们可以是交错的。(我不确定订购的保证是什么,即使在阅读了MPI specification).

之后

  • 将报头和数据都编码到MPI_Byte数组中,并将其作为二进制blob进行持续发送。
    • 听起来真的很脏&弄坏了一些guarantees.

我的问题是:如何以惯常的方式发送一个可识别的逻辑消息,该消息既包含一种类型的恒定大小的报头,又包含某种第二类型的可变大小的向量。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56240960

复制
相关文章

相似问题

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