مشاركة عبر


MPI_Comm_split الدالة

تقسيم المجموعة المقترنة بالتواصل المحدد إلى عدد محدد من المجموعات الفرعية المفككة.

بناء الجملة

int MPIAPI MPI_Comm_split(
        MPI_Comm comm,
        int      color,
        int      key,
  _Out_ MPI_Comm *newcomm
);

المعلمات

  • الاتصالات
    الموصل المراد تقسيمه.

  • اللـون
    الموصل الجديد الذي سيتم تعيين عملية الاستدعاء إليه. يجب أن تكون قيمة اللون غير سالبة.

    إذا حددت عملية قيمة اللونMPI_UNDEFINED، ترجع الدالة MPI_COMM_NULL في معلمة newcomm إلى عملية الاستدعاء.

  • المفتاح
    الترتيب النسبي لعملية الاستدعاء في مجموعة الموصل الجديد. للحصول على تفاصيل حول استخدام معلمات المفتاحواللون ، راجع الملاحظات.

  • newcomm [out]
    عند العودة، يحتوي على مقبض إلى موصل جديد.

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

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

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

Fortran

    MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
        INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

الملاحظات

هذه دالة جماعية، ولكن يمكن لكل عملية تحديد قيم مختلفة للمعلمات اللونيةوالمفتاحية .

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

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

باستخدام موصل داخلية، يكون الاستدعاء MPI_COMM_CREATE(comm, group, new-comm) إلى مكافئا لاستدعاء إلى MPI_COMM_SPLIT(comm, color, key, newcomm)، حيث تحدد العمليات التي هي أعضاء في المجموعة عدد المجموعة، استنادا إلى ترقيم فريد لجميع المجموعات المفككة، لمعلمة اللون وترتيبها في المجموعة للمعلمة الرئيسية . تحدد جميع العمليات غير الأعضاء في المجموعة MPI_UNDEFINED لمعلمة اللون .

لأي لون واحد، لا يجب أن تكون قيم المفاتيح فريدة. تقوم الدالة MPI_Comm_split بفرز العمليات بالترتيب وفقا لقيمة المعلمة الرئيسية ، وتفرز الروابط حسب ترتيبها النسبي في المجموعة المصدر. إذا تم تحديد نفس القيمة لجميع المعلمات الرئيسية ، فإن جميع العمليات بلون معين لها نفس ترتيب الترتيب النسبي الذي كانت عليه في مجموعتها الأصلية.

بالنسبة ل intracommunicators، توفر وظائف MPI_Comm_splitMPI_Comm_create إمكانية مماثلة لتقسيم مجموعة اتصال إلى مجموعات فرعية منفصلة.

تستخدم الدالة MPI_Comm_split عندما لا تحتوي بعض العمليات على معلومات كاملة عن الأعضاء الآخرين في مجموعتهم، ولكن جميع العمليات لها لون المجموعة التي ينتمون إليها. في هذه الحالة، يكتشف تنفيذ MPI أعضاء المجموعة الآخرين عبر الاتصال.

تستخدم الدالة MPI_Comm_create عندما تحتوي جميع العمليات على معلومات كاملة عن أعضاء مجموعتهم. في هذه الحالة، يمكن أن يتجنب تنفيذ MPI الاتصال الإضافي المطلوب لاكتشاف عضوية المجموعة.

لا يمكن أن تتداخل الموصلات التي تم إنشاؤها بواسطة MPI_Comm_split . يمكنك استدعاء الدالة MPI_Comm_split عدة مرات للتغلب على هذا القيد. يمكنك إنشاء عدة بنيات اتصال متداخلة بهذه الطريقة. يتم تشجيع الاستخدام الإبداعي للمعلمات اللونيةوالمفتاحية في عمليات التقسيم هذه.

نتيجة الدالة MPI_Comm_split على جهاز متداخل هي أن تلك العمليات على اليسار بنفس لون تلك العمليات على اليمين تتحد لإنشاء متداخل جديد. تحدد المعلمة الرئيسية الرتبة النسبية للعمليات على كل جانب من جوانب التداخل. يتم إرجاع موصل جديد مع مقبض MPI_COMM_NULL إلى تلك العمليات التي تحدد MPI_UNDEFINED بلونها، أو تحدد لونا محددا فقط على جانب واحد من الموصل.

المتطلبات

منتج

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

MPI_Comm_create