我正在尝试在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位整数。那可能吗?我想要一些提示!非常感谢! (对不起,如果这个主题的标题不那么容易理解!)。
答案 0 :(得分:2)
实际上,MPI_CHAR
不等同于char类型:您不能声明MPI_CHAR类型的变量。 MPI_CHAR
只是一个整数常量,它告诉MPI将数据作为char
s的序列进行处理。
所以你所做的是非常正确的。
然后,您应该将每个受支持的MPI_Datatype
映射到MPI实现处理MPI_Datatype值的位置的实际类型。例如。在确定要发送的数据量时在MPI_Send
中。