2016-11-16 9 views
0

異なるサイズの行列/ベクトルへのポインタの構造体であるMPI_Typeを指定して、最初のK個の結果をどのように減らすことができますか?私はプロセス間でアドレスを渡すことができないことを知っていますが、操作中のデータを減らすかコピーするだけで、実際にはパスを渡すか行列のサイズを指定する必要がありますか?MPI Reduce with mpi_datatype

私の構造体は次のとおりです。

//vector/vector of vector can be translated by static vector 
struct reg{ 
    std::vector< std::vector<int> > A; //have exactly NxN 
    RegTD *TD; //have exactly 1 << N 
    int N; 
    std::vector<int> Basin; //max 1<<N 
    std::vector< std::vector<int> > BasinInfo; //max Bsize.size() * Bsize.size() 
    float Entropy; 
}; 

答えて

0

あなたはブーストで見ることができ:: MPI。 Boostはあなたのために型をシリアライズしてデシリアライズします。それはまさにあなたが望むものではないかもしれません。 Boostが取り上げるもう1つのアプローチはここに記述されています:http://www.boost.org/doc/libs/1_62_0/doc/html/mpi/tutorial.html#mpi.skeleton_and_contentここで、構造を記述する「スケルトン」と実際のデータを記述する「内容」を送信します。