使用MPI发送size_t类型数据

bob*_*nto 4 c size-t mpi

在MPI中发送size_t类型号码最安全的方法是什么?举例来说,我相信它是不是安全的,盲目地将它作为MPI_INT.MPI_LONG会一直有效吗?

Gil*_*les 8

用宏怎么样?

#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
Run Code Online (Sandbox Code Playgroud)

然后在您的代码中,my_MPI_SIZE_T每次要传输类型数据时都使用数据类型size_t.

  • 简单、有效、很棒。我想知道为什么这不是普通的 MPI。 (3认同)