1

我正在尝试在 EPOS 操作系统中实现 MPI 协议。此刻,我正在研究 MPI_Datatypes。好吧,我用这种方式写了一个包含一些 mpi 类型的文档:

typedef unsigned int MPI_Datatype;

#define MPI_CHAR ((MPI_Datatype)1)

#define MPI_UNSIGNED_CHAR ((MPI_Datatype)2)

#define MPI_BYTE ((MPI_Datatype)3)

#define MPI_SHORT ((MPI_Datatype)4)

#define MPI_UNSIGNED_SHORT ((MPI_Datatype)5)

.....

但是,我觉得不好!我怎么能明确写出 MPI_CHAR 相当于1 字节字符(C 语言中的 char 类型)。或者,例如,MPI_INT 等价于32 位整数。那可能吗?我想要一些提示!非常感谢!(对不起,如果这个主题的标题不是那么容易理解!)。

4

1 回答 1

2

其实MPI_CHAR不等价于char类型:不能声明MPI_CHAR类型的变量。MPI_CHAR只是一个整数常量,它告诉 MPI 将数据处理为chars 的序列。

所以你所做的非常正确。

MPI_Datatype然后,您应该在 MPI 实现处理 MPI_Datatype 值的位置将每个支持的类型映射到实际类型。例如在MPI_Send确定要发送的数据量时。

于 2013-06-27T20:37:47.943 回答