MPI_Iallreduce الدالة
يجمع بين القيم من جميع العمليات ويوزع النتيجة مرة أخرى على جميع العمليات بطريقة غير محظورة.
بناء الجملة
int MPIAPI MPI_Iallreduce(
_In_opt_ const void *sendbuf,
_Out_opt_ void *recvbuf,
_In_ int count,
_In_ MPI_Datatype datatype,
_In_ MPI_Op op,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
المعلمات
sendbuf [in, optional]
المؤشر إلى البيانات التي سيتم إرسالها إلى جميع العمليات في المجموعة. يتم تحديد عدد ونوع البيانات للعناصر في المخزن المؤقت في معلمات العدد ونوع البيانات .إذا كانت معلمة comm تشير إلى intracommunicator، يمكنك تحديد خيار في مكانه عن طريق تحديد MPI_IN_PLACE في جميع العمليات. في هذه الحالة، يتم أخذ بيانات الإدخال في كل عملية من مخزن الاستلام المؤقت، حيث سيتم استبدالها ببيانات الإخراج.
recvbuf [out, optional]
المؤشر إلى مخزن مؤقت لتلقي نتيجة عملية التقليل.العدد [in]
عدد العناصر التي يجب إرسالها من هذه العملية.نوع البيانات [in]
نوع البيانات لكل عنصر في المخزن المؤقت. يجب أن تكون هذه المعلمة متوافقة مع العملية كما هو محدد في معلمة العملية .op [in]
عملية التخفيض العالمية التي يجب تنفيذها. يمكن أن يشير المقبض إلى عملية مضمنة أو معرفة من قبل التطبيق. للحصول على قائمة بالعمليات المعرفة مسبقا، راجع MPI_Op.comm [in]
مقبض MPI_Comm communicator.طلب [خارج]
مقبض MPI_Request يمثل عملية الاتصال.
القيمة المُرجعة
إرجاع MPI_SUCCESS عند النجاح. وإلا، فإن القيمة المرجعة هي رمز خطأ.
في Fortran، يتم تخزين القيمة المرجعة في المعلمة IERROR .
Fortran
MPI_IALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, COMM, REQUEST, IERROR
الملاحظات
يبدأ الاستدعاء غير المحظور عملية تقليل جماعية يجب إكمالها في استدعاء إكمال منفصل. بمجرد البدء، قد تتقدم العملية بشكل مستقل عن أي حساب أو اتصال آخر في العمليات المشاركة. بهذه الطريقة، يمكن لعمليات تقليل عدم الحظر التخفيف من تأثيرات المزامنة المحتملة لعمليات التخفيض عن طريق تشغيلها في "الخلفية".
يتم دعم جميع مكالمات الإكمال (على سبيل المثال، MPI_Wait) لعمليات تقليل عدم الحظر.
المتطلبات
منتج |
Microsoft MPI v7 |
الرأس |
Mpi.h؛ Mpif.h |
المكتبة |
Msmpi.lib |
Dll |
Msmpi.dll |