MPI2を使用すると、派生データ型を作成し、次のように記述して送信できます。
call mpi_type_create_indexed_block(size,1,dspl_send,rtype,DerType,ierr)
call mpi_send(data,1,DerType,jRank,20,comm,ierr)
これを行うことにより、data(N)の位置dspl_sendがMPIライブラリによって送信されます。
これで、行列データ(M、N)の場合、次のコードを介してその位置を送信できます。
call mpi_type_create_indexed_block(size,M,dspl_send,rtype,DerTypeM,ierr)
call mpi_send(data,1,DerTypeM,jRank,20,comm,ierr)
つまり、data(i、dspl_send(j))のエントリが送信されます。
私の質問は、後続のmpi_sendでの1の役割に関するものです。常に1である必要がありますか?別のサイズは可能ですか?MPIから派生したデータ型は、インターネット上の多くのドキュメントでうまく説明されていますが、send / recvのサイズは、別のサイズが許可されているかどうか、およびその使用方法は言うまでもなく、常に1です。
サイズMが呼び出しごとに異なる行列data(M、N)を処理する場合、呼び出すたびに常に派生データ型を作成する必要がありますか?行列データ(M、N)またはデータ(N、M)を送信するためにDerTypeを使用することは不可能ですか?