如何从头开始实现MPI_Datatype? (在新的操作系统中)

时间:2013-06-27 20:30:43

标签: c mpi

我正在尝试在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位整数。那可能吗?我想要一些提示!非常感谢! (对不起,如果这个主题的标题不那么容易理解!)。

1 个答案:

答案 0 :(得分:2)

实际上,MPI_CHAR不等同于char类型:您不能声明MPI_CHAR类型的变量。 MPI_CHAR只是一个整数常量,它告诉MPI将数据作为char s的序列进行处理。

所以你所做的是非常正确的。

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