MPI_Allgatherv関数
グループの各メンバーから可変量のデータを収集し、そのデータをグループのすべてのメンバーに送信します。 MPI_Allgatherv関数は、ルートだけでなく、すべてのプロセスが結果を受け取る点を除いて、MPI_Gathervに似ています。 j番目のプロセスから送信されるデータのブロックは、すべてのプロセスによって受信され、バッファー recvbuf の j番目のブロックに配置されます。 これらのブロックはすべて同じサイズである必要はありません。
構文
int MPIAPI MPI_Allgatherv(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
_In_ int *recvcounts,
_In_ int *displs,
MPI_Datatype recvtype,
MPI_Comm comm
);
パラメーター
sendbuf [in]
グループ内のすべてのプロセスに送信されるデータへのポインター。 バッファー内の要素の数値とデータ型は、 sendcount パラメーターと sendtype パラメーターで指定されます。 バッファー内の各要素は、グループ内のプロセスに対応します。comm パラメーターがコマンド内を参照している場合は、すべてのプロセスで MPI_IN_PLACE を指定することでインプレース オプションを指定できます。 sendcount パラメーターと sendtype パラメーターは無視されます。 各プロセスは、対応する受信バッファー要素にデータを入力します。 n番目のプロセスは、受信バッファーの n番目の要素にデータを送信します。
sendcount
sendbuf パラメーターで指定されたバッファー内でこのプロセスが送信するデータ要素の数。 sendcount の要素が 0 の場合、そのプロセスからのメッセージのデータ部分は空です。sendtype
送信バッファー内の要素の MPI データ型。recvbuf [out]
各プロセスから受信したデータを含むバッファーへのポインター。 バッファー内の要素の数値とデータ型は、 recvcount パラメーターと recvtype パラメーターで指定されます。recvcounts [in]
受信バッファー内の各コミュニケーター プロセスからのデータ要素の数。displs [in]
各コミュニケーター プロセスからのデータの recvbuf パラメーターに対する相対位置。recvbuf、recvcounts、displs パラメーター配列では、各配列の n番目の要素は、n番目のコミュニケーター プロセスから受信したデータを参照します。
recvtype
バッファー内の各要素の MPI データ型。comm
MPI_Comm コミュニケーター ハンドル。
戻り値
成功 したMPI_SUCCESS を返します。 それ以外の場合、戻り値はエラー コードです。
Fortran では、戻り値は IERROR パラメーターに格納されます。
Fortran
MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
<type> SENDBUF(*), R.ECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR
注釈
MPI_Allgathervの使用規則は、MPI_Gathervの規則に対応します。
プロセスの sendtype パラメーターに関連付けられている型シグネチャは、他のプロセスの recvtype パラメーターに関連付けられている型シグネチャと等しい必要があります。
comm パラメーターがコマンド内を参照している場合、 のMPI_Allgatherv(...)
呼び出しの結果は、すべてのプロセスが に対root = 0 , ..., n-1
して をMPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)
呼び出した場合と同じになります。
comm パラメーターが相互通信子を参照している場合、1 つのグループの各プロセス (グループ A など) は、sendcount パラメーターで指定されたデータ項目の数を提供します。 このデータは連結され、結果は他のグループ、グループ B の各プロセスに格納されます。逆に、グループ B のプロセスのデータの連結は、グループ A の各プロセスに格納されます。グループ A の送信バッファー パラメーターは、グループ B の受信バッファー パラメーターと一致している必要があります。その逆も同様です。
要件
製品 |
HPC Pack 2012 MS-MPI 再頒布可能パッケージ、HPC Pack 2008 R2 MS-MPI 再頒布可能パッケージ、HPC Pack 2008 MS-MPI 再頒布可能パッケージまたは HPC Pack 2008 クライアント ユーティリティ |
ヘッダー |
Mpi.h;Mpif.h |
ライブラリ |
Msmpi.lib |
[DLL] |
Msmpi.dll |