عامل تخفيض السرعة

في علوم الحاسوب ، يُعدّ عامل الاختزال [ 1 ] نوعًا من العوامل الشائعة الاستخدام في البرمجة المتوازية لاختزال عناصر المصفوفة إلى نتيجة واحدة. عوامل الاختزال تجميعية ، وغالبًا (ولكن ليس بالضرورة) تبديلية . [ 2 ] [ 3 ] [ 4 ] يُعدّ اختزال مجموعات العناصر جزءًا لا يتجزأ من نماذج البرمجة مثل MapReduce ، حيث يُطبّق عامل الاختزال ( يُربط ) على جميع العناصر قبل اختزالها. تستخدم خوارزميات متوازية أخرى عوامل الاختزال كعمليات أساسية لحلّ مشاكل أكثر تعقيدًا. يمكن استخدام العديد من عوامل الاختزال للبثّ لتوزيع البيانات على جميع المعالجات.

نظرية

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

يكون العامل عامل اختزال إذا:

  • يمكنه اختزال مصفوفة إلى قيمة عددية واحدة. [ 2 ]
  • ينبغي أن تكون النتيجة النهائية قابلة للتحصيل من نتائج المهام الجزئية التي تم إنشاؤها. [ 2 ]

يتم استيفاء هذين الشرطين بالنسبة للمشغلين التبادليين والتجميعيين اللذين يتم تطبيقهما على جميع عناصر المصفوفة.

بعض العوامل التي تفي بهذه المتطلبات هي الجمع والضرب وبعض العوامل المنطقية (و، أو، إلخ).

عامل تخفيض السرعة{\displaystyle \oplus }يمكن تطبيقها في وقت ثابت على مجموعة إدخالV={v0=(هـ00هـ0م-1)،v1=(هـ10هـ1م-1)،...،vص-1=(هـص-10هـص-1م-1)}{\displaystyle V=\left\{v_{0}={\begin{pmatrix}e_{0}^{0}\\\vdots \\e_{0}^{m-1}\end{pmatrix}},v_{1}={\begin{pmatrix}e_{1}^{0}\\\vdots \\e_{1}^{m-1}\end{pmatrix}},\dots ,v_{p-1}={\begin{pmatrix}e_{p-1}^{0}\\\vdots \\e_{p-1}^{m-1}\end{pmatrix}}\right\}}لص{\displaystyle p}متجهات معم{\displaystyle m}كل عنصر على حدة. والنتيجةر{\displaystyle r}إن جوهر العملية هو مزيج من العناصرر=(هـ00هـ10هـص-10هـ0م-1هـ1م-1هـص-1م-1)=(أنا=0ص-1هـأنا0أنا=0ص-1هـأنام-1){\displaystyle r={\begin{pmatrix}e_{0}^{0}\oplus e_{1}^{0}\oplus \dots \oplus e_{p-1}^{0}\\\vdots \\e_{0}^{m-1}\oplus e_{1}^{m-1}\oplus \dots \oplus e_{p-1}^{m-1}\end{pmatrix}}={\begin{pmatrix}\bigoplus _{i=0}^{p-1}e_{i}^{0}\\\vdots \\\bigoplus _{i=0}^{p-1}e_{i}^{m-1}\end{pmatrix}}}ويجب تخزينها في معالج الجذر المحدد في نهاية التنفيذ. إذا كانت النتيجةر{\displaystyle r}يجب أن يكون متاحًا في كل معالج بعد انتهاء الحساب، وغالبًا ما يُطلق عليه اسم Allreduce. يمكن لخوارزمية الاختزال الخطية التسلسلية المثلى تطبيق العامل بالتتابع من البداية إلى النهاية، مع استبدال متجهين دائمًا بنتيجة العملية المطبقة على جميع عناصرهما، وبالتالي إنشاء نسخة تحتوي على متجه أقل.(ص-1)م{\displaystyle (p-1)\cdot m}حتى فقطر{\displaystyle r}يتبقى مجال للتحسين. لا يمكن للخوارزميات التسلسلية أن تحقق أداءً أفضل من الوقت الخطي، لكن الخوارزميات المتوازية تترك مجالاً للتحسين.

مثال

لنفترض أن لدينا مصفوفة[2،3،5،1،7،6،8،4]{\displaystyle [2,3,5,1,7,6,8,4]}يمكن حساب مجموع هذه المصفوفة بشكل تسلسلي عن طريق اختزال المصفوفة تباعًا إلى مجموع واحد باستخدام عامل الجمع (+). بدء عملية الجمع من بداية المصفوفة ينتج عنه: ((((((2+3)+5)+1)+7)+6)+8)+4=36.{\displaystyle {\Bigg (}{\bigg (}{\Big (}{\big (}\,(\,(2+3)+5)+1{\big )}+7{\Big )}+6{\bigg )}+8{\Bigg )}+4=36.}بما أن علامة الجمع (+) تبديلية وتجميعية، فهي عامل اختزال. لذا، يمكن إجراء هذا الاختزال بالتوازي باستخدام عدة نوى، حيث تحسب كل نواة مجموع مجموعة فرعية من المصفوفة، ثم يدمج عامل الاختزال النتائج. باستخدام اختزال الشجرة الثنائية، يمكن لأربع نوى إجراء العملية.(2+3){\textstyle (2+3)}،(5+1){\textstyle (5+1)}،(7+6){\textstyle (7+6)}، و(8+4){\textstyle (8+4)}ثم يمكن لنواتين إجراء العمليات الحسابية(5+6){\displaystyle (5+6)}و(13+12){\displaystyle (13+12)}وأخيراً، تقوم نواة واحدة بالحسابات(11+25)=36{\displaystyle (11+25)=36}لذا، يمكن استخدام 4 أنوية إجمالاً لحساب المجموع فيسجل28=3{\textstyle \log _{2}8=3}خطوات بدلاً من7{\displaystyle 7}الخطوات المطلوبة للإصدار التسلسلي. تحسب تقنية الشجرة الثنائية المتوازية هذه((2+3)+(5+1))+((7+6)+(8+4)){\textstyle {\big (}\,(2+3)+(5+1)\,{\big )}+{\big (}\,(7+6)+(8+4)\,{\big )}}بالطبع، النتيجة واحدة، ولكن فقط بسبب خاصية التجميع في عامل الاختزال. أما خاصية التبديل في عامل الاختزال فتكون مهمة في حال وجود نواة رئيسية توزع العمل على عدة معالجات، إذ حينها يمكن أن تعود النتائج إلى المعالج الرئيسي بأي ترتيب. وتضمن خاصية التبديل أن تكون النتيجة واحدة.

يُعرّف معيار IEEE 754-2019 أربعة أنواع من عمليات اختزال المجموع وثلاثة أنواع من عمليات اختزال المنتج المُقاس. ولأن هذه العمليات هي عوامل اختزال، ينص المعيار على أنه "يجوز للتطبيقات الربط بأي ترتيب أو التقييم بأي صيغة أوسع". [ 5 ]

مثال غير صحيح

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

الخوارزميات

خوارزميات الشجرة ذات الحدين

فيما يتعلق بالخوارزميات المتوازية، يوجد نموذجان رئيسيان للحوسبة المتوازية: آلة الوصول العشوائي المتوازية (PRAM) التي تُعدّ امتدادًا لذاكرة الوصول العشوائي (RAM) مع ذاكرة مشتركة بين وحدات المعالجة، والحاسوب المتوازي المتزامن الضخم الذي يأخذ الاتصال والتزامن في الحسبان. ولكل نموذج آثار مختلفة على التعقيد الزمني ، لذا سيتم عرض خوارزميتين.

خوارزمية PRAM

تمثل هذه الخوارزمية طريقة شائعة الاستخدام للتعامل مع المدخلات حيثص{\displaystyle p}هو قوة للعدد اثنين. غالبًا ما تُستخدم العملية العكسية لبث العناصر. [ 6 ] [ 7 ] [ 8 ]

تصور الخوارزمية مع p = 8 و m = 1 والجمع كعامل اختزال
لك0{\displaystyle k\gets 0}لسجل2ص-1{\displaystyle \lceil \log _{2}p\rceil -1}يفعل
لأنا0{\displaystyle i\gets 0}لص-1{\displaystyle p-1}قم بذلك بالتوازي
لوصأنا{\displaystyle p_{i}}إذا كان نشطًا
إذا بتك{\displaystyle k}لأنا{\displaystyle i}يتم ضبطه بعد ذلك
تعيينصأنا{\displaystyle p_{i}}إلى غير نشط
وإلا إذاأنا+2ك<ص{\displaystyle i+2^{k}<p}
xأناxأناxأنا+2ك{\displaystyle x_{i}\gets x_{i}\oplus ^{\star }x_{i+2^{k}}}

يُعرَّف المؤثر الثنائي للمتجهات عنصرًا بعنصر بحيث(هـأنا0هـأنام-1)(هـج0هـجم-1)=(هـأنا0هـج0هـأنام-1هـجم-1).{\displaystyle {\begin{pmatrix}e_{i}^{0}\\\vdots \\e_{i}^{m-1}\end{pmatrix}}\oplus ^{\star }{\begin{pmatrix}e_{j}^{0}\\\vdots \\e_{j}^{m-1}\end{pmatrix}}={\begin{pmatrix}e_{i}^{0}\oplus e_{j}^{0}\\\vdots \\e_{i}^{m-1}\oplus e_{j}^{m-1}\end{pmatrix}}.}

وتفترض الخوارزمية كذلك أنه في البدايةxأنا=vأنا{\displaystyle x_{i}=v_{i}}للجميعأنا{\displaystyle i}وص{\displaystyle p}هو قوة للعدد اثنين ويستخدم وحدات المعالجةص0،ص1،...صن-1{\displaystyle p_{0},p_{1},\dots p_{n-1}}في كل تكرار، يصبح نصف وحدات المعالجة غير نشط ولا يساهم في العمليات الحسابية اللاحقة. يوضح الشكل تمثيلًا مرئيًا للخوارزمية باستخدام الجمع كعامل. تمثل الخطوط الرأسية وحدات المعالجة التي تُجرى فيها حسابات العناصر الموجودة على ذلك الخط. تقع عناصر الإدخال الثمانية في الأسفل، وتتوافق كل خطوة من خطوات الرسوم المتحركة مع خطوة متوازية واحدة في تنفيذ الخوارزمية. معالج نشطصأنا{\displaystyle p_{i}}يقوم بتقييم العامل المحدد على العنصرxأنا{\displaystyle x_{i}}وهي تحتفظ حالياً بـxج{\displaystyle x_{j}}أينج{\displaystyle j}هل الفهرس الأدنى يحققج>أنا{\displaystyle j>i}، لهذا السببصج{\displaystyle p_{j}}يصبح معالجًا غير نشط في الخطوة الحالية.xأنا{\displaystyle x_{i}}وxج{\displaystyle x_{j}}ليست بالضرورة عناصر من مجموعة المدخلاتX{\displaystyle X}حيث يتم استبدال الحقول وإعادة استخدامها للتعبيرات التي تم تقييمها مسبقًا. ولتنسيق أدوار وحدات المعالجة في كل خطوة دون التسبب في اتصال إضافي بينها، يتم فهرسة وحدات المعالجة بأرقام من0{\displaystyle 0}لص-1{\displaystyle p-1}يتم استخدامه. ينظر كل معالج إلىك{\displaystyle k}- البت الأقل أهمية ويحدد ما إذا كان سيتم تعطيله أو حساب المعامل على العنصر نفسه والعنصر ذي الفهرس حيثك{\displaystyle k}البت رقم -th غير مُفعّل. نمط الاتصال الأساسي للخوارزمية هو شجرة ذات الحدين، ومن هنا جاء اسم الخوارزمية.

فقط ص0{\displaystyle p_{0}}يحتفظ بالنتيجة في النهاية، ولذلك فهو المعالج الرئيسي. في عملية Allreduce، يجب توزيع النتيجة، ويمكن القيام بذلك عن طريق إضافة بث منص0{\displaystyle p_{0}}علاوة على ذلك، العددص{\displaystyle p}يقتصر عدد المعالجات على أن يكون قوة للعدد اثنين. ويمكن تجاوز هذا القيد بزيادة عدد المعالجات إلى القوة التالية للعدد اثنين. كما توجد خوارزميات مصممة خصيصًا لهذه الحالة. [ 9 ]

تحليل وقت التشغيل

يتم تنفيذ الحلقة الرئيسيةسجل2ص{\displaystyle \lceil \log _{2}p\rceil }في بعض الأحيان، يكون الوقت اللازم للجزء الذي يتم إنجازه بالتوازي فييا(م){\displaystyle {\mathcal {O}}(m)}كوحدة معالجة، إما أن تجمع متجهين أو تصبح غير نشطة. وبالتالي، فإن الوقت المتوازيتي(ص،م){\displaystyle T(p,m)}بالنسبة لعربة الأطفال الرضع (PRAM)تي(ص،م)=يا(سجل(ص)م){\displaystyle T(p,m)={\mathcal {O}}(\log(p)\cdot m)}يمكن اختيار استراتيجية للتعامل مع تعارضات القراءة والكتابة بحيث تكون مقيدة مثل القراءة والكتابة الحصريتين (EREW). يؤدي ذلك إلى تسريع العملية.S(ص،م){\displaystyle S(p,m)}جزء من الخوارزمية هوS(ص،م)يا(تيتسلسلتي(ص،م))=يا(صسجل(ص)){\textstyle S(p,m)\in {\mathcal {O}}\left({\frac {T_{\text{seq}}}{T(p,m)}}\right)={\mathcal {O}}\left({\frac {p}{\log(p)}}\right)}وبالتالي فإن الكفاءةهـ(ص،م)يا(S(ص،م)ص)=يا(1سجل(ص)){\textstyle E(p,m)\in {\mathcal {O}}\left({\frac {S(p,m)}{p}}\right)={\mathcal {O}}\left({\frac {1}{\log(p)}}\right)}تتأثر الكفاءة سلبًا لأن نصف وحدات المعالجة النشطة تصبح غير نشطة بعد كل خطوة، لذاص2أنا{\displaystyle {\frac {p}{2^{i}}}}تكون الوحدات نشطة في الخطوةأنا{\displaystyle i}.

خوارزمية الذاكرة الموزعة

على عكس خوارزمية PRAM، في نموذج الذاكرة الموزعة ، لا تتم مشاركة الذاكرة بين وحدات المعالجة، ويجب تبادل البيانات بشكل صريح بينها. لذا، يجب تبادل البيانات بشكل صريح بين الوحدات، كما هو موضح في الخوارزمية التالية.

لك0{\displaystyle k\gets 0}لسجل2ص-1{\displaystyle \lceil \log _{2}p\rceil -1}يفعل
لأنا0{\displaystyle i\gets 0}لص-1{\displaystyle p-1}قم بذلك بالتوازي
لوصأنا{\displaystyle p_{i}}إذا كان نشطًا
إذا بتك{\displaystyle k}لأنا{\displaystyle i}يتم ضبطه بعد ذلك
يرسلxأنا{\displaystyle x_{i}}لصأنا-2ك{\displaystyle p_{i-2^{k}}}
تعيينصك{\displaystyle p_{k}}إلى غير نشط
وإلا إذاأنا+2ك<ص{\displaystyle i+2^{k}<p}
يستلمxأنا+2ك{\displaystyle x_{i+2^{k}}}
xأناxأناxأنا+2ك{\displaystyle x_{i}\gets x_{i}\oplus ^{\star }x_{i+2^{k}}}

الفرق الوحيد بين الخوارزمية الموزعة وإصدار PRAM هو تضمين بدائيات الاتصال الصريحة، ويبقى مبدأ التشغيل كما هو.

تحليل وقت التشغيل

يؤدي التواصل بين الوحدات إلى بعض التكاليف الإضافية. يستخدم تحليل بسيط للخوارزمية نموذج BSP ويتضمن الوقتتييبدأ{\displaystyle T_{\text{start}}}كان من الضروري بدء التواصل وتيبايت{\displaystyle T_{\text{byte}}}الوقت اللازم لإرسال بايت واحد. ثم يكون وقت التشغيل الناتج هوΘ((تييبدأ+نتيبايت)لoز(ص)){\displaystyle \Theta ((T_{\text{start}}+n\cdot T_{\text{byte}})\cdot log(p))}، مثلم{\displaystyle m}يتم إرسال عناصر المتجه في كل تكرار ولها حجمن{\displaystyle n}إجمالاً.

خوارزمية خط الأنابيب

تصور خوارزمية خط الأنابيب مع p = 5 و m = 4 والجمع كعامل اختزال.

بالنسبة لنماذج الذاكرة الموزعة، قد يكون من المنطقي استخدام الاتصال المتسلسل. وهذا ينطبق بشكل خاص عندماتييبدأ{\displaystyle T_{\text{start}}}صغير مقارنة بـتيبايت{\displaystyle T_{\text{byte}}}عادةً، تقوم خطوط المعالجة الخطية بتقسيم البيانات أو المهام إلى أجزاء أصغر ومعالجتها على مراحل. وعلى عكس خوارزميات الشجرة الثنائية، تستخدم خوارزمية خطوط المعالجة حقيقة أن المتجهات ليست غير قابلة للفصل، ولكن يمكن تقييم العامل لعناصر منفردة: [ 10 ]

لك0{\displaystyle k\gets 0}لص+م-3{\displaystyle p+m-3}يفعل
لأنا0{\displaystyle i\gets 0}لص-1{\displaystyle p-1}قم بذلك بالتوازي
لوأناك<أنا+مأناص-1{\displaystyle i\leq k<i+m\land i\neq p-1}
يرسلxأناك-أنا{\displaystyle x_{i}^{k-i}}لصأنا+1{\displaystyle p_{i+1}}
لوأنا-1ك<أنا-1+مأنا0{\displaystyle i-1\leq k<i-1+m\land i\neq 0}
يستلمxأنا-1ك+أنا-1{\displaystyle x_{i-1}^{k+i-1}}منصأنا-1{\displaystyle p_{i-1}}
xأناك+أنا-1xأناك+أنا-1xأنا-1ك+أنا-1{\displaystyle x_{i}^{k+i-1}\gets x_{i}^{k+i-1}\oplus x_{i-1}^{k+i-1}}

من المهم ملاحظة أن عمليتي الإرسال والاستقبال يجب أن تُنفذا بالتزامن لكي تعمل الخوارزمية. يتم تخزين متجه النتائج فيصص-1{\displaystyle p_{p-1}}في النهاية. يُظهر الرسم المتحرك المصاحب تنفيذ الخوارزمية على متجهات بحجم أربعة باستخدام خمس وحدات معالجة. تُصوّر خطوتان من الرسم المتحرك خطوة تنفيذ متوازية واحدة.

تحليل وقت التشغيل

عدد الخطوات في التنفيذ المتوازي هوص+م-2{\displaystyle p+m-2}، فإنه يأخذص-1{\displaystyle p-1}خطوات حتى تتلقى وحدة المعالجة الأخيرة عنصرها الأول وعناصر إضافيةم-1{\displaystyle m-1}حتى يتم استلام جميع العناصر. لذلك، فإن وقت التشغيل في نموذج BSP هوتي(ن،ص،م)=(تييبدأ+نمتيبايت)(ص+م-2){\textstyle T(n,p,m)=\left(T_{\text{start}}+{\frac {n}{m}}\cdot T_{\text{byte}}\right)(p+m-2)}بافتراض أنن{\displaystyle n}يمثل الحجم الإجمالي للبايتات للمتجه.

بالرغم منم{\displaystyle m}إذا كانت لها قيمة ثابتة، فمن الممكن تجميع عناصر المتجه معًا منطقيًا وتقليلهام{\displaystyle m}على سبيل المثال، يمكن معالجة مسألة تتضمن متجهات بحجم أربعة عن طريق تقسيم المتجهات إلى أول عنصرين وآخر عنصرين، واللذين يتم إرسالهما وحسابهما معًا دائمًا. في هذه الحالة، يتم إرسال ضعف الحجم في كل خطوة، ولكن عدد الخطوات ينخفض ​​إلى النصف تقريبًا. هذا يعني أن المعاملم{\displaystyle m}يتم تخفيض حجمه إلى النصف، بينما يتم تقليل الحجم الإجمالي بالبايتن{\displaystyle n}يبقى كما هو. وقت التشغيلتي(ص){\displaystyle T(p)}يعتمد هذا النهج على قيمةم{\displaystyle m}والتي يمكن تحسينها إذاتييبدأ{\displaystyle T_{\text{start}}}وتيبايت{\textstyle T_{\text{byte}}}معروفة. إنها الأمثل لـم=ن(ص-2)تيبايتتييبدأ{\textstyle m={\sqrt {\frac {n\cdot (p-2)\cdot T_{\text{byte}}}{T_{\text{start}}}}}}بافتراض أن هذا يؤدي إلى حجم أصغرم{\displaystyle m}الذي يقسم الأصل.

التطبيقات

يُعدّ الاختزال أحد العمليات الجماعية الرئيسية المُطبقة في واجهة تمرير الرسائل ، حيث يُعتبر أداء الخوارزمية المُستخدمة بالغ الأهمية ويتم تقييمه باستمرار لمختلف حالات الاستخدام. [ 11 ] يمكن استخدام المُعاملات كمعلمات للعمليتين MPI_Reduce، MPI_Allreduceمع اختلاف أن النتيجة تكون متاحة في وحدة معالجة واحدة (الجذرية) أو في جميع وحدات المعالجة.

توفر OpenMP بندًا للاختزال لوصف كيفية تجميع نتائج العمليات المتوازية معًا. [ 12 ]

تعتمد تقنية MapReduce بشكل كبير على خوارزميات الاختزال الفعالة لمعالجة مجموعات البيانات الضخمة، حتى على مجموعات البيانات الكبيرة. [ 13 ] [ 14 ]

تستخدم بعض خوارزميات الفرز المتوازية عمليات الاختزال لتتمكن من التعامل مع مجموعات البيانات الكبيرة جدًا. [ 15 ]

انظر أيضاً

مراجع

  1. "بند التخفيض" . www.dartmouth.edu . كلية دارتموث. 23 مارس 2009. تم الاطلاع عليه بتاريخ 26 سبتمبر 2016 .
  2. 1 2 3 سوليهين، يان (2016). أساسيات بنية المعالجات متعددة النوى المتوازية . مطبعة سي آر سي. ص 75. ISBN  978-1-4822-1118-4.
  3. شاندرا، روهيت (2001). البرمجة المتوازية في OpenMP . مورغان كوفمان. الصفحات 59-77 . ISBN  1558606718.
  4. كول، موراي (2004). "إخراج الأسرار من الخزانة: بيان عملي للبرمجة المتوازية الهيكلية" (ملف PDF) . الحوسبة المتوازية . 30 (3): 393. doi : 10.1016/j.parco.2003.12.002 . hdl : 20.500.11820/8eb79d42-de83-4cfb-9faa-30d9ac3b3839 .
  5. جمعية مهندسي الكهرباء والإلكترونيات (IEEE) (22 يوليو 2019). "9.4 عمليات الاختزال". معيار IEEE للحسابات ذات الفاصلة العائمة . IEEE STD 754-2019. IEEE. الصفحات 1-84 . doi : 10.1109/IEEESTD.2019.8766229 . ISBN  978-1-5044-5924-2. IEEE Std 754-2019.
  6. بار-نوي، أموتز؛ كيبنيس، شلومو (1994). "بث رسائل متعددة في أنظمة الإرسال/الاستقبال المتزامنة". الرياضيات التطبيقية المنفصلة . 55 (2): 95-105 . doi : 10.1016/0166-218x(94)90001-9 .
  7. سانتوس، يونيس إي. (2002). "خوارزميات مثلى وفعالة للجمع والجمع البادئ على الأجهزة المتوازية". مجلة الحوسبة المتوازية والموزعة . 62 (4): 517-543 . doi : 10.1006/jpdc.2000.1698 .
  8. سلاتر، ب.؛ كوكاين، إ.؛ هيديتنييمي، س. (1981-11-01). "نشر المعلومات في الأشجار". مجلة SIAM للحوسبة . 10 (4): 692-701 . doi : 10.1137/0210052 . ISSN 0097-5397 . 
  9. رابنسيفنر، رولف؛ تراف، جيسبر لارسون (19-09-2004). "خوارزميات اختزال أكثر كفاءة لعدد معالجات غير قوى العدد اثنين في أنظمة تمرير الرسائل المتوازية". التطورات الحديثة في الآلة الافتراضية المتوازية وواجهة تمرير الرسائل . سلسلة محاضرات في علوم الحاسوب. المجلد 3241. سبرينغر، برلين، هايدلبرغ. الصفحات 36-46 . doi : 10.1007/978-3-540-30218-6_13 . ISBN   9783540231639.
  10. بار-نوي، أ.؛ كيبنيس، س. (1994-09-01). "تصميم خوارزميات البث في النموذج البريدي لأنظمة تمرير الرسائل". نظرية الأنظمة الرياضية . 27 (5): 431-452 . CiteSeerX 10.1.1.54.2543 . doi : 10.1007/BF01184933 . ISSN 0025-5661 . S2CID 42798826 .   
  11. بيشيفاك-غربوفيتش، يلينا؛ أنغسكون، ثارا؛ بوسيلكا، جورج؛ فاج، غراهام إي.؛ غابرييل، إدغار؛ دونغارا، جاك جيه. (2007-06-01). "تحليل أداء العمليات الجماعية لـ MPI". الحوسبة العنقودية . 10 (2): 127-143 . CiteSeerX 10.1.1.80.3867 . doi : 10.1007/s10586-007-0012-0 . ISSN 1386-7857 . S2CID 2142998 .   
  12. "10.9. الاختزال - أمثلة على واجهة برمجة تطبيقات OpenMP" . passlab.github.io .
  13. لاميل، رالف (2008). "نموذج برمجة MapReduce من جوجل - إعادة النظر". مجلة علوم برمجة الحاسوب . 70 (1): 1-30 . doi : 10.1016/j.scico.2007.07.001 .
  14. سينجر، هيرميس؛ جيل-كوستا، فيرونيكا؛ أرانتيس، لوسيانا؛ ماركونديس، سيزار أ.س؛ مارين، ماوريسيو؛ ساتو، ليريا م؛ دا سيلفا، فابريسيو أ.ب (10 يونيو 2016). "تحليل تكلفة وقابلية التوسع لـ BSP لعمليات MapReduce". التزامن والحوسبة: الممارسة والتجربة . 28 (8): 2503-2527 . doi : 10.1002/cpe.3628 . hdl : 10533/147670 . ISSN 1532-0634 . S2CID 33645927 .  
  15. أكستمان، مايكل؛ بينغمان، تيمو؛ ساندرز، بيتر؛ شولز، كريستيان (24-10-2014). "الفرز العملي المتوازي على نطاق واسع". arXiv : 1410.6754 [ cs.DS ].