MPI_Alltoall الدالة
يجمع البيانات من البيانات ويبعثرها إلى جميع أعضاء المجموعة. MPI_Alltoall هو امتداد للدالة MPI_Allgather. ترسل كل عملية بيانات مميزة إلى كل جهاز استقبال. يتم تلقي كتلة jth التي يتم إرسالها من العملية i بواسطة العملية j ويتم وضعها في كتلة iمن المخزن المؤقت للاستلام.
بناء الجملة
int MPIAPI MPI_Alltoall(
_In_ void *sendbuf,
int sendcount,
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 للمخزن المؤقت للاستلام.
عدد الإرسال
عدد العناصر في المخزن المؤقت المحدد في المعلمة sendbuf . إذا كان عدد الإرسال صفرا، يكون جزء البيانات من الرسالة فارغا.نوع الإرسال
نوع بيانات MPI للعناصر في المخزن المؤقت لإرسال.recvbuf [out]
المؤشر إلى مخزن مؤقت يحتوي على البيانات التي يتم تلقيها من كل عملية. يتم تحديد رقم ونوع البيانات للعناصر في المخزن المؤقت في معلمات recvcount و recvtype .إعادة الفرز
عدد العناصر في المخزن المؤقت للاستلام. إذا كان العدد صفرا، يكون جزء البيانات من الرسالة فارغا.نوع مستطيل
نوع بيانات MPI للعناصر في المخزن المؤقت للاستلام.الاتصالات
مقبض MPI_Comm communicator.
القيمة المُرجعة
إرجاع MPI_SUCCESS عند النجاح. وإلا، فإن القيمة المرجعة هي رمز خطأ.
في Fortran، يتم تخزين القيمة المرجعة في المعلمة IERROR .
Fortran
MPI_ALLTOALL(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE,
COMM, IERROR)
<type> SENDBUF(*), R.ECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
الملاحظات
جميع المعلمات مهمة في جميع العمليات. يجب أن تكون معلمة comm متطابقة في جميع العمليات.
يجب أن يكون توقيع النوع المحدد بواسطة معلمات sendcountوsendtype لعملية ما مساويا لتوقيع النوع المحدد بواسطة معلمات recvcount و recvtype . لذلك، يجب أن تكون كمية البيانات المرسلة مساوية لكمية البيانات التي يتم تلقيها بين أي زوج من العمليات. لا يزال يسمح بخرائط النوع المميزة بين المرسل والمتلقي.
إذا كانت معلمة comm تشير إلى intracommunicator، فإن نتيجة الاستدعاء إلى MPI_ALLGATHER(...)
كما لو كانت كل عملية تنفذ إرسالا إلى كل عملية بما في ذلك نفسها باستخدام MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)
، وتلقي من كل عملية أخرى باستخدام MPI_Recv(recvbuf + i*recvcount*extent(recvtype), recvcount, recvtype, I, …)
.
إذا كانت معلمة comm تشير إلى متداخل، فإن النتيجة هي كما لو أن كل عملية في المجموعة A ترسل رسالة إلى كل عملية في المجموعة B، والعكس صحيح. يجب أن يكون المخزن المؤقت j th send من العملية i في المجموعة A متسقا مع المخزن المؤقت ith تلقي العملية j في المجموعة 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 |