簡體   English   中英

如何通過MPI將結構作為數組發送?

[英]How to send structure as array over MPI?

我有這個結構

typedef struct {float x,y,z,vx,vy,vz; } 身體;

float *buf, *bufSlave;
Body *p;
bytes = nBodies*sizeof(Body);
buf = (float*)malloc(bytes);
p = (Body*)buf;

如何使用MPI_SEND發送15個元素以及如何使用MPI_RECEIVE接收?

MPI_Send(&p[(i - 1) * lung], 6, MPI_FLOAT, i, 99, MPI_COMM_WORLD); 

我有細分錯誤。

首先,請注意,該方法對於具有相同架構的同構集群有效。

對於一般情況和較高的穩定性,請選擇安全的傳輸協議,例如JSON或協議緩沖區。

第三,將boost :: serialization轉換為stringstream會很方便。 相似的限制,但不需要庫。

無論如何,現在的答案是:在發送所需結構時,使用數據類型MPI_CHAR並計數N * sizeof(Struct)

對於接收,您已經知道N或使用MPI_Probe並從消息中提取計數。 這將是多個字節。 分配一個大小為MPI_RECV的緩沖區,並通過轉換將其重新解釋為Buffer數組。

基本原理是通過MPI_CHAR,因為該結構可能具有填充。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM