مشاركة عبر


MPI_Scatterv الدالة

تشتت البيانات من عضو واحد عبر جميع أعضاء المجموعة. تقوم الدالة MPI_Scatterv بتنفيذ عكس العملية التي يتم تنفيذها بواسطة الدالة MPI_Gatherv .

بناء الجملة

int MPIAPI MPI_Scatterv(
  _In_  void         *sendbuf,
  _In_  int          *sendcounts,
  _In_  int          *displs,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        int          root,
        MPI_Comm     comm
);

المعلمات

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

    يتم تجاهل المعلمة sendbuf لجميع العمليات غير الجذرية.

    إذا كانت معلمة comm تشير إلى أداة داخلية، يمكنك تحديد خيار موضعي عن طريق تحديد MPI_IN_PLACE في عملية الجذر. يتم تجاهل معلمات recvcount و recvtype . لا يزال المتجه المبعثر يعتبر أنه يحتوي على مقاطع n ، حيث n هو حجم المجموعة؛ لا يتم نقل المقطع الذي يتوافق مع عملية الجذر.

  • حسابات الإرسال [in]
    عدد العناصر المراد إرسالها إلى كل عملية. إذا كان sendcount[i] صفرا، فإن جزء البيانات من الرسالة لتلك العملية فارغ.

    يتم تجاهل معلمة sendcount لجميع العمليات غير الجذرية.

  • ينكر [in]
    مواقع البيانات المراد إرسالها إلى كل عملية اتصال. يرتبط كل موقع في الصفيف بالعنصر المقابل لصفيف sendbuf .

    في مصفوفات المعلمات sendbuf وs sendcounts و displs ، يشير العنصر nمن كل صفيف إلى البيانات التي سيتم إرسالها إلى عملية nth communicator.

    هذه المعلمة مهمة فقط في عملية الجذر.

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

    يتم تجاهل معلمة sendcount لجميع العمليات غير الجذرية.

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

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

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

  • جذر
    الترتيب في عملية الإرسال داخل communicator المحدد.

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

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

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

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

Fortran

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

الملاحظات

تعمل الدالة MPI_Scatterv على توسيع وظيفة MPI_Scatter عن طريق السماح بإرسال عدد مختلف من البيانات، كما هو محدد في صفيف sendcounts ، إلى كل عملية.

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

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

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

إذا كانت comm عبارة عن أداة داخلية، تكون النتيجة كما لو أن الجذر نفذ عمليات MPI_Send(sendbuf + displs[i]*extent(sendtype), sendcounts[i], sendtype, I, …)إرسال n ؛ ونفذت كل عملية تلقيا، MPI_Recv(recvbuf, recvcount, recvtype, i,…).

إذا كانت معلمة comm تشير إلى متداخل، فإن الاستدعاء يتضمن جميع العمليات في التداخل، ولكن مع مجموعة واحدة، المجموعة A، التي تحدد عملية الجذر. تقوم جميع العمليات في المجموعة الأخرى، المجموعة ب، بتعيين نفس القيمة في معلمة الجذر ، أي ترتيب عملية الجذر في المجموعة 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_Gather

MPI_Gatherv

MPI_Scatter