假設我有一個結構類型如下:MPI不同方法來尋找位移
typedef struct {
float x, y, z;
float velocity;
int n, type;
} Particle;
我想送它。我必須創建一個MPI_Type。我知道4種方式來做到這一點。我將它們列在下面。我想知道它們有什麼區別,限制和好處。
使用
MPI_Type_extent
使用
offsetof()
在stddef.h
,它在這個答案解釋:MPI Derived Type Send answer使用
MPI_Get_address
,也是在同樣的答案的例子。使用
reinterpret_cast<const unsigned char*>
,我沒有嘗試,但這裏有一個例子:MPI Create Custom Data
儘管MPI標準中的指針對於指針與地址有效,但是相同類型的兩個指針之間的差異被很好地定義爲兩個指針所指向的那種類型的數組的元素的下標之間的差異。另外,ISO C++指出,指針的值是內存中的字節地址,對象存儲開始於此處(儘管我理解標準,該地址在轉換上保留),但實際值表示可能是實現的-具體。因此#4應該相當便攜。 –