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.
Bir grubun tüm üyelerinden bir üyeye değişken verileri toplar. MPI_Gatherv işlevi, her işlemden farklı veri sayısına izin vererek MPI_Gather işlevine esneklik sağlar.
Söz dizimi
int MPIAPI MPI_Gatherv(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_opt_ int *recvcounts[],
_In_opt_ int *displs[],
MPI_Datatype recvtype,
int root,
MPI_Comm comm
);
Parametreler
sendbuf [in]
Kök işleme gönderilecek verileri içeren bir arabelleğe tanıtıcı.comm parametresi bir intracommunicator'a başvuruda bulunursa, tüm işlemlerde MPI_IN_PLACE belirterek yerinde bir seçenek belirtebilirsiniz. sendcount ve sendtype parametreleri yoksayılır. Her işlem, karşılık gelen alma arabelleği öğesine veri girer. n. işlem, alma arabelleğinin n. öğesine veri gönderir. Kök işlem tarafından gönderilen verilerin alma arabelleğindeki doğru yerde olduğu varsayılır.
sendcount
Gönderme arabelleğindeki öğelerin sayısı. Sendcount sıfırsa, iletinin veri bölümü boş olur.sendtype
Arabellekteki her öğenin veri türü.recvbuf [out, isteğe bağlı]
Kök işlem tarafından gönderilen veriler de dahil olmak üzere her işlemden alınan verileri içeren kök işlemdeki bir arabelleğe yönelik tanıtıcı. Bu parametre yalnızca kök işlemde önemlidir. recvbuf parametresi kök olmayan tüm işlemler için yoksayılır.recvcounts[] [in, isteğe bağlı]
Her işlemden alınan öğelerin sayısı. Dizideki her öğe, gönderme işleminin sırasına karşılık gelir. Sayı sıfırsa, iletinin veri bölümü boş olur. Bu parametre yalnızca kök işlemde önemlidir.displs[] [in, isteğe bağlı]
Her communicator işleminden alınan verilerin recvbuf parametresine göre konumu. j işleminden alınan veriler, kök işlem uzaklığının alma arabelleğine yerleştirilir ve sendbuf işaretçisinden [j] öğeleri dağıtır.recvbuf, recvcounts ve displs parametre dizilerinde, her dizinin n. öğesi n. communicator işleminden alınan verilere başvurur.
Bu parametre yalnızca kök işlemde önemlidir.
recvtype
Arabellekteki her öğenin veri türü. Bu parametre yalnızca kök işlemde önemlidir.Kök
Belirtilen iletişimci içindeki alıcı işlemin sırası.Comm
İletişim MPI_Comm 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_GATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, ROOT, COMM, IERROR
Açıklamalar
Kök işlemde tüm işlev parametreleri önemlidir; diğer işlemlerde yalnızca sendbuf, sendcount, sendtype, root ve comm değerleri önemlidir. Kök ve comm parametreleri tüm işlemlerde aynı olmalıdır.
Genel olarak, türetilmiş veri türlerine hem sendtype hem de recvtype parametreleri için izin verilir. Her işlemde sendtype ve recvtype parametreleri tarafından belirtilen tür imzası, kök işlemdeki recvcount ve sendcount parametrelerinin tür imzasına eşit olmalıdır. Gönderilen veri miktarı, kök işlemle her bir işlem arasında alınan veri miktarına eşit olmalıdır. Gönderen ve alıcı arasında ayrı tür eşlemelerine hala izin verilir.
Sayıların ve türlerin belirtimi, kökte herhangi bir konumun birden çok kez yazılmasına neden olmamalıdır. Böyle bir çağrı hatalıdır.
comm parametresi bir intracommunicator'a başvuruda bulunursa, tüm işlemler gönderme arabelleğinin içeriğini kök işleme gönderir. Kök işlem iletileri alır ve derece sırasına göre depolar. Sonuç, gruptaki bir çağrısı MPI_Send(sendbuf, sendcount, sendtype, root, …)yürütülen n işleminin her biri gibi olur ve kök öğesine n çağrı MPI_Recv(recvbuf + i*recvcount*extent(recvtype), recvcount, recvtype, i, …)yürütür. değeri extent(recvtype), MPI_Type_get_extent işlevi kullanılarak elde edilir. İşlevin alternatif bir açıklaması, gruptaki işlemler tarafından gönderilen n iletinin sıralama sırasına göre bir araya getirmesi ve sonuçta elde edilen iletinin kök tarafından çağrısı MPI_RECV(recvbuf, recvcountn, recvtype, ...)tarafından alınmış gibi alınmasıdır. Alma arabelleği kök olmayan tüm işlemler için yoksayılır.
comm parametresi bir intercommunicator'a başvuruda bulunursa, çağrı ara iletişim aracındaki tüm işlemleri içerir, ancak kök işlemi tanımlayan bir grup olan A grubuyla birlikte kullanılır. Diğer gruptaki B grubundaki tüm işlemler, kök parametrede aynı değeri, yani A grubundaki kök işlemin sıralamasını ayarlar. Kök işlem, kök parametresinde MPI_ROOT değerini ayarlar. A grubundaki diğer tüm işlemler kök parametrede MPI_PROC_NULL değeri ayarlar. Veriler kök işlemden B grubundaki tüm işlemlere yayınlanır. B grubundaki işlemlerin arabellek parametreleri, kök işlemin arabellek parametresiyle tutarlı olmalıdır.
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 |