مشاركة عبر


MPI_Allgather الدالة

يجمع البيانات من جميع أعضاء المجموعة ويرسل البيانات إلى جميع أعضاء المجموعة. الدالة MPI_Allgather مشابهة للدالة MPI_Gather ، باستثناء أنها ترسل البيانات إلى جميع العمليات بدلا من الجذر فقط. MPI_Allgather تتوافق قواعد الاستخدام مع قواعد MPI_Gather.

بناء الجملة

int MPIAPI MPI_Allgather(
  _In_  void         *sendbuf,
  _In_  int          sendcount,
  _In_  MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        MPI_Comm     comm
);

المعلمات

  • sendbuf [in]
    المؤشر إلى البيانات التي سيتم إرسالها إلى جميع العمليات في المجموعة. يتم تحديد عدد ونوع البيانات للعناصر في المخزن المؤقت في معلمات sendcountوsendtype . يتوافق كل عنصر في المخزن المؤقت مع عملية في المجموعة.

    إذا كانت معلمة comm تشير إلى أداة داخلية، يمكنك تحديد خيار موضعي عن طريق تحديد MPI_IN_PLACE في جميع العمليات. يتم تجاهل معلمات sendcountوsendtype . تدخل كل عملية البيانات في عنصر مخزن الاستلام المؤقت المقابل. ترسل العملية nالبيانات إلى عنصر nth للمخزن المؤقت للاستلام.

  • sendcount [in]
    عدد العناصر في المخزن المؤقت المحدد في المعلمة sendbuf . إذا كان عدد الإرسال صفرا، يكون جزء البيانات من الرسالة فارغا.

  • sendtype [in]
    نوع بيانات MPI للعناصر في المخزن المؤقت لإرسال.

  • recvbuf [out]
    المؤشر إلى مخزن مؤقت يحتوي على البيانات التي يتم تلقيها من كل عملية. يتم تحديد رقم ونوع البيانات للعناصر في المخزن المؤقت في معلمات recvcount و recvtype .

  • إعادة الفرز
    عدد العناصر في المخزن المؤقت للاستلام. إذا كان العدد صفرا، يكون جزء البيانات من الرسالة فارغا.

  • نوع مستطيل
    نوع بيانات MPI للعناصر في المخزن المؤقت للاستلام.

  • الاتصالات
    مقبض MPI_Comm communicator.

القيمة المُرجعة

إرجاع MPI_SUCCESS عند النجاح. وإلا، فإن القيمة المرجعة هي رمز خطأ.

في Fortran، يتم تخزين القيمة المرجعة في المعلمة IERROR .

Fortran

    MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

الملاحظات

يجب أن يكون توقيع النوع المقترن بمعلمة نوع الإرسال في عملية ما مساويا لتوقيع النوع المقترن بمعلمة recvtype في أي عملية أخرى.

إذا كانت معلمة comm تشير إلى intracommunicator، فإن نتيجة الاستدعاء إلى MPI_ALLGATHER(...) كما لو كانت جميع العمليات المنفذة n تستدعي إلى MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm) ل root = 0 , ..., n-1.

إذا كانت معلمة comm تشير إلى متداخل، فإن كل عملية من مجموعة واحدة، على سبيل المثال، المجموعة A، تساهم في عدد عناصر البيانات المحددة في معلمة sendcount . يتم تسلسل هذه البيانات، ويتم تخزين النتيجة في كل عملية في المجموعة الأخرى، المجموعة B. وعلى العكس من ذلك، يتم تخزين تسلسل بيانات العمليات في المجموعة B في كل عملية في المجموعة A. يجب أن تكون معلمات المخزن المؤقت المرسل في المجموعة A متسقة مع معلمات المخزن المؤقت للاستلام في المجموعة B، والعكس صحيح.

لا يجب أن يساوي عدد العناصر التي يتم إرسالها بواسطة العمليات في المجموعة A عدد العناصر التي يتم إرسالها بواسطة العمليات في المجموعة B. على وجه الخصوص، يمكنك نقل البيانات في اتجاه واحد فقط عن طريق تحديد sendcount == 0 للاتصال في الاتجاه العكسي.

المتطلبات

منتج

حزمة 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

راجع أيضًا

الدالات الجماعية ل MPI

MPI_Datatype

MPI_Allgather