使用MPI发送size_t类型数据

9

如何在MPI中安全地发送size_t类型的数字?例如,我确定盲目将其作为MPI_INT发送是不安全的。MPI_LONG是否总是可行的?

1个回答

18

那么使用宏怎么样?

#include <stdint.h>
#include <limits.h>

#if SIZE_MAX == UCHAR_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED_CHAR
#elif SIZE_MAX == USHRT_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED_SHORT
#elif SIZE_MAX == UINT_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED
#elif SIZE_MAX == ULONG_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED_LONG
#elif SIZE_MAX == ULLONG_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED_LONG_LONG
#else
   #error "what is happening here?"
#endif

那么在你的代码中,每当你想传输 size_t 类型的数据时,你需要使用 my_MPI_SIZE_T 作为数据类型。


3
简单、有效、棒极了。我想知道为什么这不是普通的MPI。 - G. Fougeron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接