مشاركة عبر


MPI_Gather الدالة

جمع البيانات من جميع أعضاء المجموعة إلى عضو واحد.

بناء الجملة

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
);

المعلمات

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

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

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

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

  • recvbuf [out, optional]
    المؤشر إلى مخزن مؤقت على عملية الجذر التي تحتوي على البيانات التي يتم تلقيها من كل عملية. يتضمن البيانات التي يتم إرسالها بواسطة عملية الجذر. هذه المعلمة مهمة فقط في عملية الجذر. يتم تجاهل معلمة recvbuf لجميع العمليات غير الجذرية.

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

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

  • جذر
    مرتبة عملية الاستلام داخل التواصل المحدد.

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

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

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

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

Fortran

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

الملاحظات

جميع معلمات الدالة مهمة في عملية الجذر، فقط sendbuf و sendcount و sendtypeوالجذروcomm مهمة على العمليات الأخرى. يجب أن تكون معلمات الجذروcomm متطابقة في جميع العمليات.

بشكل عام، يسمح بأنواع البيانات المشتقة لكل من معلمات نوع الإرسال ونوع المستطيل . يجب أن يكون توقيع النوع المحدد بواسطة معلمات نوع الإرسال ونوع المستطيل في كل عملية مساويا لتوقيع نوع معلمات recvcountوs sendcount على العملية الجذر. يجب أن يكون مقدار البيانات التي يتم إرسالها مساويا لكمية البيانات التي يتم تلقيها بين عملية الجذر وكل عملية فردية. لا يزال يسمح بخرائط النوع المميزة بين المرسل والمتلقي.

يجب ألا تتسبب مواصفات العد والأنواع في كتابة أي موقع على الجذر أكثر من مرة واحدة. مثل هذه المكالمة خاطئة.

إذا كانت معلمة comm تشير إلى intracommunicator، فإن جميع العمليات ترسل محتويات المخزن المؤقت لإرسالها إلى عملية الجذر. تتلقى عملية الجذر الرسائل وتخزنها بترتيب الرتبة. النتيجة كما لو أن كل عملية من عمليات n في المجموعة نفذت استدعاء إلى MPI_Send(sendbuf, sendcount, sendtype, root, …)؛ وكان الجذر قد نفذ استدعاءات n إلى MPI_Recv(recvbuf + i*recvcount*extent(recvtype), recvcount, recvtype, i, …). يتم الحصول على قيمة extent(recvtype) باستخدام الدالة MPI_Type_get_extent . الوصف البديل للدالة هو أن الرسائل n التي يتم إرسالها بواسطة العمليات في المجموعة متسلسلة بترتيب الرتبة، ويتم تلقي الرسالة الناتجة بواسطة الجذر كما لو كانت باستدعاء إلى MPI_RECV(recvbuf, recvcountn, recvtype, ...). يتم تجاهل المخزن المؤقت للاستلام لجميع العمليات غير الجذرية.

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

المتطلبات

منتج

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