2016-05-19 8 views
1

Departmentという構造体と、Departmentsという構造体の配列があります。この配列を特定の数のプロセスに散布したいので、すべてのプロセスにCurrentという要素があります構造体)(学科)Departmentsアレイ 'CでのStrucutersの散布配列

#include <stdio.h> 
#include <stdlib.h> 
#include <mpi.h> 


struct Department{ 
int position; 
int Department_Destinations[100]; 
}; 

struct Department Current,Departments[100]; 

int main(int argc, char** argv){ 

int rank, nprocess; 
MPI_Init(&argc, &argv); 
MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
MPI_Comm_size(MPI_COMM_WORLD, &nprocess); 

if(rank==0){ 
for(i=0;i<n;i++){ 
    Departments[i].position=i+1; 
    for(j=0;j<c1;j++){ 
     Departments[i].Department_Destinations[j]=0; 
    } 
} 

MPI_Scatter(Departments, sizeof(Current), MPI_BYTE, Current ,sizeof(Current), MPI_BYTE, 0,MPI_COMM_WORLD); 

MPI_Finalize(); 
return 0; 
} 

からDepartments要素(部門の数に等しいプロセスの数を仮定する)

このコードをコンパイルして実行すると、それ エラー:「MPI_Scatterの引数4に互換性のない型」

このエラーとMPIで構造体配列(Departments)の配列を散布する理由は何ですか?高度な

おかげ

+1

これは、構造体を渡すためにひどいと非常に非移植可能な方法です。サイト周辺で 'MPI_Type_create_struct'を含む質問と回答を探して、構造を適切に送信する方法についての情報を探してください。 –

答えて

1

MPI_Scatter()は散乱およびメッセージを受信するバッファへのポインタにバッファへのポインタを必要とします。

struct Department Current,Departments[100];もし、あなたが試みることができる:

MPI_Scatter(Departments, sizeof(Current), MPI_BYTE, &Current ,sizeof(Current), MPI_BYTE, 0,MPI_COMM_WORLD); 
+0

大変ありがとう@フランシス...この質問をする前に2時間かかりました。この問題を解決しようとしました。 – Islams

+0

あなたは大歓迎です! upvote/downvoteの矢印のすぐ下の白いマークをクリックして、あなたの問題を解決した回答を受け入れてください。あなたはまた、価値のあることを提案した質問と回答をupvoteするかもしれません。 – francis