Aracılığıyla paylaş


MPI_Gather işlevi

Bir grubun tüm üyelerinden bir üyeye veri toplar.

Söz dizimi

int MPIAPI MPI_Gather(
  _In_      void         *sendbuf,
            int          sendcount,
            MPI_Datatype sendtype,
  _Out_opt_ void         *recvbuf,
            int          recvcount,
            MPI_Datatype recvtype,
            int          root,
            MPI_Comm     comm
);

Parametreler

  • sendbuf [in]
    Kök işleme gönderilecek verileri içeren bir arabelleğe işaretçi.

    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 ilgili 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ğinde doğru yerde olduğu varsayılır.

  • sendcount
    Gönderme arabelleğindeki öğelerin sayısı. Sendcount değeri sıfırsa, iletinin veri bölümü boş olur.

  • sendtype
    Arabellekteki her öğenin veri türü.

  • recvbuf [out, isteğe bağlı]
    Her işlemden alınan verileri içeren kök işlemdeki bir arabelleğe yönelik işaretçi. Kök işlem tarafından gönderilen verileri içerir. Bu parametre yalnızca kök işlemde önemlidir. recvbuf parametresi kök olmayan tüm işlemler için yoksayılır.

  • recvcount
    Her işlemden alınan öğelerin sayısı. Bu sayı arabellekteki öğelerin toplam sayısı değildir. Sayı sıfırsa, iletinin veri bölümü boş olur. Bu parametre yalnızca kök işlemde önemlidir.

  • recvtype
    Arabellekteki her öğenin MPI veri türü. Bu parametre yalnızca kök işlemde önemlidir.

  • Kök
    Belirtilen communicator içindeki alma işleminin sırası.

  • 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_GATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, 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 ö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şlemdeki 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şlem ile her bir işlem 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.

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 sıralama sırasında depolar. Sonuç, gruptaki n işlemin her biri için MPI_Send(sendbuf, sendcount, sendtype, root, …)bir çağrı yürütür ve kök n çağrısı MPI_Recv(recvbuf + i*recvcount*extent(recvtype), recvcount, recvtype, i, …)yürütür gibi olur. 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 iletilerinin 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ı intercommunicator içindeki tüm işlemleri içerir, ancak kök işlemi tanımlayan bir grup olan A grubuyla birlikte. Diğer gruptaki tüm işlemler (grup B) kök parametrede aynı değeri, yani A grubundaki kök işlemin derecesini 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ğerini 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

Ayrıca bkz.

MPI Kolektif İşlevleri

MPI_Datatype

MPI_Gatherv