我已经定义了一个自定义结构,并希望使用MPI_Bsend(或MPI_Send)将其发送到另一个MPI进程.
这是我的结构:
struct car{
int shifts;
int topSpeed;
}myCar;
Run Code Online (Sandbox Code Playgroud)
但是,除了原始类型之外,MPI似乎不支持复杂数据类型的直接"传输",如上面的结构.我听说我可能不得不使用"序列化".我该如何处理它并将'myCar'发送到进程5?
消息传递接口 API 始终用作变量int的类型count。例如,原型是MPI_Send:
int MPI_Send(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm);
Run Code Online (Sandbox Code Playgroud)
如果要发送或接收的元素数量接近甚至超过 INT_MAX,这可能会成为问题。
当然,可以通过以下任一方法降低 的值来解决该问题count:
MPI_Datatype无论如何,这两种方法都更像是一种黑客行为,而不是真正的解决方案,特别是如果使用简单的启发式方法来实现。因此我想问的是:
是否有更好的习惯用标准 MPI 调用来处理此类情况?如果没有,有人知道一些围绕 MPI 构建的(实体)包装库来克服这个限制吗?