Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Adatokat gyűjt a csoport összes tagjától, és pontba rendezi az adatokat. A MPI_Alltoall a MPI_Allgather függvény kiterjesztése. Minden folyamat külön adatokat küld az egyes fogadóknak. Az i. folyamatból küldött jth blokkot a j folyamat fogadja, és a fogadó puffer i. blokkjába kerül.
Szintaxis
int MPIAPI MPI_Alltoall(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
MPI_Comm comm
);
Paraméterek
sendbuf [in]
A csoport összes folyamatának elküldendő adatokra mutató mutató. A puffer elemeinek száma és adattípusa a sendcount és a sendtype paraméterekben van megadva.Ha a komm paraméter egy intrakommunikátorra hivatkozik, a MPI_IN_PLACE minden folyamathoz megadhat egy helyi beállítást. A sendcount és a sendtype paraméterek figyelmen kívül lesznek hagyva. Minden folyamat adatokat ad meg a megfelelő fogadási pufferelemben. Az n. folyamat adatokat küld a fogadópuffer n. elemének.
sendcount
A sendbuf paraméterben megadott elemek száma a pufferben. Ha a sendcount értéke nulla, az üzenet adatrésze üres.sendtype
A küldési puffer elemeinek MPI-adattípusa.recvbuf [kifelé]
Az egyes folyamatoktól kapott adatokat tartalmazó pufferre mutató mutató. A puffer elemeinek száma és adattípusa a recvcount és a recvtype paraméterekben van megadva.recvcount
A fogadó puffer elemeinek száma. Ha a szám nulla, az üzenet adatrésze üres.recvtype
A fogadó puffer elemeinek MPI-adattípusa.Comm
A MPI_Comm communicator leírója.
Visszatérési érték
Sikeres MPI_SUCCESS ad vissza. Ellenkező esetben a visszatérési érték hibakód.
A Fortranban a visszatérési érték az IERROR paraméterben lesz tárolva.
Fortran
MPI_ALLTOALL(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE,
COMM, IERROR)
<type> SENDBUF(*), R.ECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
Megjegyzések
Minden paraméter jelentős az összes folyamaton. A comm paraméternek minden folyamat esetében azonosnak kell lennie.
A sendcount által megadott típusadminisztnak és egy folyamat sendtype paramétereinek meg kell egyeznie a recvcount által megadott típusadminisztokkal és a recvtype paraméterekkel. Ezért az elküldött adatok mennyiségének meg kell egyeznie a folyamatpárok között fogadott adatok mennyiségével. A feladó és a fogadó közötti különböző típusleképek továbbra is engedélyezettek.
Ha a komm paraméter egy intrakommunikátorra hivatkozik, a hívás MPI_ALLGATHER(...) eredménye olyan, mintha minden folyamat elküldené magát az egyes folyamatoknak, beleértve magát is a használatával MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …), és a használatával MPI_Recv(recvbuf + i*recvcount*extent(recvtype), recvcount, recvtype, I, …)fogad minden más folyamatot.
Ha a komm paraméter egy interkommunikátorra hivatkozik, akkor az eredmény olyan, mintha az A csoport minden egyes folyamata üzenetet küld a B csoport minden folyamatának, és fordítva. Az A csoportban az i. folyamat j-pufferénekkonzisztensnek kell lennie a B csoportban lévő j folyamat i-fogadásipufferével, és fordítva.
Az A csoportban lévő folyamatok által küldött elemek számának nem kell megegyeznie a B csoportba tartozó folyamatok által küldött elemek számával. Az adatokat csak egy irányba helyezheti át, ha a fordított irányban adja meg a sendcount == 0 értéket a kommunikációhoz.
Követelmények
Termék |
HPC Pack 2012 MS-MPI terjeszthető csomag, HPC Pack 2008 R2 MS-MPI terjeszthető csomag, HPC Pack 2008 MS-MPI terjeszthető csomag vagy HPC Pack 2008 Client Utilities |
Fejléc |
Mpi.h; Mpif.h |
Kódtár |
Msmpi.lib |
DLL |
Msmpi.dll |