Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Veri toplar ve bir grubun tüm üyelerine dağıtılır. MPI_Alltoallw işlevi, bu API'deki tam veri değişiminin en genel biçimidir. MPI_Alltoallw sayım, yer değiştirme ve veri türünün ayrı belirtimini etkinleştirir.
Söz dizimi
int MPIAPI MPI_Alltoallw(
_In_ void *sendbuf,
_In_ int *sendcounts[],
_In_ int *sdispls[],
_In_ MPI_Datatype sendtypes[],
_Out_ void *recvbuf,
_In_ int *recvcounts[],
_In_ int *rdispls[],
_In_ MPI_Datatype recvtypes[],
MPI_Comm comm
);
Parametreler
sendbuf [in]
Gruptaki tüm işlemlere gönderilecek verilerin işaretçisi. Arabellekteki öğelerin sayısı ve veri türü sendcount ve sendtype parametrelerinde belirtilir. Arabellekteki her öğe gruptaki bir işleme karşılık gelir.comm parametresi bir intracommunicator'a başvuruda bulunursa, tüm işlemlerde MPI_IN_PLACE belirterek yerinde bir seçenek belirtebilirsiniz. sendcount, sdispls ve sendtype parametreleri yoksayılır. Her işlem ilgili alma arabelleği öğesine veri girer.
Gönderilen ve alınan veriler, recvcounts dizisi ve recvtype parametresi tarafından belirtilen aynı tür eşlemesine sahip olmalıdır ve rdispls parametresi tarafından belirtilen alma arabelleğinin konumlarından okunur.
sendcounts [in]
Bu işlemin sendbuf parametresinde belirtildiği gibi arabellekte gönderdiği veri öğelerinin sayısı. sendcount içindeki bir öğe sıfırsa, bu işlemdeki iletinin veri bölümü boş olur.sdispls [in]
Her communicator işlemi için verilerin sendbuf parametresine göre bayt cinsinden konumu.J girişi,j işlemini hedefleyen giden verilerin alındığı sendbuf parametresine göre yer değiştirme işlemini belirtir.
sendtypes [in]
Gönderme arabelleğindeki öğelerin her biri için veri türü. j girdisi, gruptaki j işlemine gönderilen veri türünü belirtir.recvbuf [out]
Her işlemden alınan verileri içeren bir arabelleğe işaretçi. Arabellekteki öğelerin sayısı ve veri türü recvcount ve recvtype parametrelerinde belirtilir.recvcounts [in]
Alma arabelleğindeki her communicator işleminden veri öğelerinin sayısı.rdispls [in]
Her communicator işleminden verilerin recvbuf parametresine göre bayt cinsinden konumu. i girdisi,i işleminden gelen verilerin yerleştirildiği recvbuf parametresine göre yer değiştirme işlemini belirtir.recvbuf, recvcounts ve rdispls parametre dizilerinde, her dizinin n. öğesi n. communicator işleminden alınan verilere başvurur.
recvtypes [in]
Arabellekteki her öğenin veri türü. i girdisi ,i işleminden alınan veri türünü belirtir.Comm
MPI_Comm iletişimci tutamacı.
Döndürülen değer
Başarılı MPI_SUCCESS döndürür. Aksi takdirde, dönüş değeri bir hata kodudur.
Fortran'da dönüş değeri IERROR parametresinde depolanır.
Fortran
MPI_ALLTOALLW(SENDBUF, SENDCOUNT, SDISPLS, SENDTYPE, RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPE,COMM, IERROR)
<type> SENDBUF(*), R.ECVBUF(*)
INTEGER SENDCOUNT, SENDTYPES(*), SDISPLS(*), RECVCOUNTS(*), RDISPLS(*), RECVTYPE, COMM, IERROR
Açıklamalar
Önemli
Maksimum esnekliğe izin vermek için, gönderme ve alma arabellekleri içindeki blokların yer değiştirmesi bayt cinsinden belirtilir.
Tüm parametreler tüm işlemlerde önemlidir. comm parametresi tüm işlemlerde aynı olmalıdır.
comm parametresi bir intracommunicator'a başvuruda bulunursa, i işleminden gönderilen j. blok j işlemi tarafından alınır ve alma arabelleğinin i. bloğuna yerleştirilir. Bu blokların tümünün aynı boyuta sahip olması gerekmez.
i işlemi içinsendcounts[j] ve sendtypes[j] parametreleri tarafından belirtilen tür imzası, j işleminde recvcounts[i] ve recvtypes[i] ile ilişkilendirilmiş tür imzasına eşit olmalıdır. Bu nedenle, gönderilen veri miktarı herhangi bir işlem çifti arasında alınan veri miktarına eşit olmalıdır. Gönderen ve alıcı arasındaki ayrı tür eşlemelerine hala izin verilir.
MPI_Alltoallw işlevine yapılan çağrının sonucu, her işlem ile MPI_Send(sendbuf+sdispls[i],sendcounts[i],sendtypes[i] ,i,...)diğer işlemlere bir ileti göndermiş ve çağrısıyla diğer tüm işlemlerden bir MPI_Recv(recvbuf+rdispls[i],recvcounts[i],recvtypes[i] ,i,...)ileti almış gibi olur.
Yerinde seçeneğinin belirtilmesi, iletişimci grubundaki iki işlem arasında aynı miktarda ve türde verilerin gönderildiğini ve alındığını gösterir. Farklı işlem çiftleri farklı miktarlarda veri alışverişi yapabilir. Kullanıcıların recvcounts[j] ve recvtype on process i match recvcounts[i] ve recvtype on process j değerlerinin eşleştiğinden emin olmaları gerekir.
comm parametresi bir intercommunicator'a başvuruyorsa, sonuç A grubundaki her işlem B grubundaki her işleme bir ileti gönderir ve tam tersi olur. A grubundaki i. işlemin j. gönderme arabelleği, B grubundaki j işleminin i. alma arabelleğiyle tutarlı olmalıdır ve tam tersi de geçerlidir.
Gereksinimler
Ürün |
HPC Pack 2012 MS-MPI Yeniden Dağıtılabilir Paketi, HPC Pack 2008 R2 MS-MPI Yeniden Dağıtılabilir Paketi, HPC Pack 2008 MS-MPI Yeniden Dağıtılabilir Paketi veya HPC Pack 2008 İstemci Yardımcı Programları |
Üst bilgi |
Mpi.h; Mpif.h |
Kitaplık |
Msmpi.lib |
DLL |
Msmpi.dll |