我有n个workers
,1个master
(秩0),需要通过MPI从n个workers
发送消息到master
。消息格式是可变长度向量(float *dta
)和恒定大小的报头struct { int32_t x, int32_t y } dtaHdr
。
主节点只是遍历传入的结果并对其进行处理。对于它来说,能够将哪个dtaHdr
与哪个dta
关联起来是很重要的。
我知道如何:
MPI_Datatype
创建dtaHdr
,并通过P2P MPI_Send
/MPI_Recv
.通过P2P MPI_Float
发送任意数据类型(例如MPI_Float
)的可变长度矢量
问题是我不知道如何将这两种方法结合起来。
我知道我可以:
master
上的头及其数据。对于两个消息,我不知道如何总是&简单地在master上获取传入消息的头和数据。即,两个worker
可以向master
发送hdr & data消息&它们可以是交错的。(我不确定订购的保证是什么,即使在阅读了MPI specification).之后
MPI_Byte
数组中,并将其作为二进制blob进行持续发送。
我的问题是:如何以惯常的方式发送一个可识别的逻辑消息,该消息既包含一种类型的恒定大小的报头,又包含某种第二类型的可变大小的向量。
https://stackoverflow.com/questions/56240960
复制相似问题