簡體   English   中英

MPI發送和接收結構的結構

[英]MPI send and receive struct of structs

我如何通過MPI發送和接收這種類型的結構?

struct controlPoint{
    int hour,minute,second,x,y,z;
};

struct flight{
    int flightNum, controlNum;
    vector<controlPoint> point;
};

vector<flight> flights;

示例代碼將非常有幫助

您需要調用用戶定義的數據類型的魔力。 首先,定義一個MPI_Contiguous數據類型controlPoint :讓我們把它cp_type 接下來,您將需要一個MPI_Struct來表示flight ,我們將其稱為flight_type 這有點棘手,因為您不能通過MPI傳遞vector (沒有Bost的外部幫助)。 幸運的是,您實際上並不需要: vector保證連續存儲,就像數組一樣。 因此,您的MPI_Struct將由2個塊組成:第一個塊具有偏移為0的兩個整數( flightNumcontrolNum ),第二個塊具有cp_type s的point.size()個數,偏移為point[0] 這樣,您只發送來自vector的數據,而沒有發送其實現詳細信息。 此后,您可以將struct作為flight_type的單個元素flight_type

接收幾乎是微不足道的:只需定義與上述相同的MPI數據類型,然后以這種類型的單個副本接收數據即可。 但是請注意,您接收到的flight結構將需要在其point向量中具有足夠的空間以接收所有內容。 您可以在定義MPI數據類型之前重新resize()它的resize() :這樣,將分配足夠的空間,並且在接收期間將覆蓋這些值。

暫無
暫無

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

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