2017-12-07 7 views
0

こんにちは皆、正方形のプリマフォーマットで3D配列を散布しようとしています。私はこの絵が私の意味を明確にすることを願っています。大きなキューブのMPIスキャッタリング3Dアレイから正方晶形へ

shape

だと思うが3D配列である(4x4x4寸法言うことができます)とP0..3はプロセッサです。 (P0は大きな配列の[0..1] [0..3]部分を取る)。私はこれを行うためにデータ型を使用しています。私は2つのデータ型を作成しました。

MPI_Datatype dtype1, surface,dtype2,tetragonal; 

MPI_Type_vector((N)/sqrt(size), 
      (N),        
      (N),   
      MPI_FLOAT,  
      &dtype1);  

MPI_Type_commit(&dtype1); 
MPI_Type_create_resized(dtype1, 0, 1*sizeof(float), &surface); 

MPI_Type_commit(&surface); 





MPI_Type_vector(N/sqrt(size),  
      1,     
      sqrt(size),   
      surface,  
      &dtype2);  

MPI_Type_commit(&dtype2); 
MPI_Type_create_resized(dtype2, 0, 1*sizeof(float), &tetragonal); 
MPI_Type_commit(&tetragonal); 

はしかし、私は非常に奇妙な結果を得ています、私はので、私はデータ型が実際にどのように機能するかを理解するために、この問題に関するいくつかの助けを必要としMPI環境に新しいです。 ありがとうございます。

(プロセッサのサイズは数が二乗され、NはSQRT(サイズ)で割り切れると仮定)

答えて

0

あなたはこの派生データ型でMPI_Scatter()を使用することはできませんが、あなたはMPI_Scatterv()(すべてのカウントを使用することができます同じですが、手動で変位を計算する必要があります)。

+0

ありがとう、長い試行後、それは働いた! –

関連する問題