相关疑难解决方法(0)

C语言中的struct serialization和通过MPI传输

我已经定义了一个自定义结构,并希望使用MPI_Bsend(或MPI_Send)将其发送到另一个MPI进程.

这是我的结构:

struct car{
  int shifts;
  int topSpeed;
}myCar;
Run Code Online (Sandbox Code Playgroud)

但是,除了原始类型之外,MPI似乎不支持复杂数据类型的直接"传输",如上面的结构.我听说我可能不得不使用"序列化".我该如何处理它并将'myCar'发送到进程5?

struct mpi

30
推荐指数
3
解决办法
3万
查看次数

使用接近“INT_MAX”的“count”值传送数据

消息传递接口 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

  1. 将单个呼叫拆分为多个呼叫
  2. 定义(不必要的)聚合MPI_Datatype

无论如何,这两种方法都更像是一种黑客行为,而不是真正的解决方案,特别是如果使用简单的启发式方法来实现。因此我想问的是:

是否有更好的习惯用标准 MPI 调用来处理此类情况?如果没有,有人知道一些围绕 MPI 构建的(实体)包装库来克服这个限制吗?

c c++ int buffer mpi

4
推荐指数
1
解决办法
1179
查看次数

标签 统计

mpi ×2

buffer ×1

c ×1

c++ ×1

int ×1

struct ×1