خوارزمية كانون

في علوم الحاسوب ، تُعد خوارزمية كانون خوارزمية موزعة لضرب المصفوفات للشبكات ثنائية الأبعاد، وقد وصفها لين إليوت كانون لأول مرة عام 1969. [ 1 ] [ 2 ]

يُعدّ هذا الأسلوب مناسبًا بشكل خاص لأجهزة الكمبيوتر المصممة على شبكة N × N. [ 3 ] في حين أن خوارزمية كانون تعمل بكفاءة في الشبكات ثنائية الأبعاد المتجانسة، فقد تبيّن أن توسيعها لتشمل الشبكات ثنائية الأبعاد غير المتجانسة أمرٌ صعب. [ 4 ]

تتمثل الميزة الرئيسية للخوارزمية في أن متطلبات التخزين الخاصة بها تظل ثابتة ولا تعتمد على عدد المعالجات. [ 2 ]

تُعدّ خوارزمية ضرب المصفوفات الشاملة القابلة للتوسع (SUMMA) [ 5 ] خوارزمية أكثر عملية تتطلب مساحة عمل أقل وتتجاوز الحاجة إلى شبكة مربعة ثنائية الأبعاد. وهي مستخدمة في مكتبات ScaLAPACK و PLAPACK و Elemental .

نظرة عامة على الخوارزمية

عند ضرب مصفوفتين من الرتبة n × n ، A و B، نحتاج إلى n × n عقدة معالجة p مرتبة في شبكة ثنائية الأبعاد.

// PE(i , j) k := (i + j) mod N; a := a[i][k]; b := b[k][j]; c[i][j] := 0; for (l := 0; l < N; l++) { c[i][j] := c[i][j] + a * b; في وقت واحد { أرسل a إلى PE(i, (j + N − 1) mod N)؛ أرسل b إلى PE((i + N − 1) mod N, j)؛ } مع { استلام a' من PE(i, (j + 1) mod N)؛ استلام b' من PE((i + 1) mod N, j ); } a := a'; b := b'; }

نحتاج إلى تحديد قيمة k في كل تكرار لكل عنصر معالجة (PE) حتى لا تصل المعالجات إلى نفس البيانات لإجراء العمليات الحسابية.أأناك*بكج{\displaystyle a_{ik}*b_{kj}}.

لذلك، يجب أن تبدأ المعالجات في نفس الصف/العمود عملية الجمع بمؤشرات مختلفة. على سبيل المثال، إذا قامت PE(0,0) بحسابأ٠٠*ب٠٠{\displaystyle a_{00}*b_{00}}في الخطوة الأولى، يختار PE(0,1)أ01*ب11{\displaystyle a_{01}*b_{11}}أولاً. إن اختيار k  := (i + j) mod n لـ PE(i,j) يفي بهذا القيد للخطوة الأولى.

في الخطوة الأولى، نقوم بتوزيع مصفوفات الإدخال بين المعالجات بناءً على القاعدة السابقة.

في التكرارات التالية، نختار قيمة جديدة لـ k'  := (k + 1) mod n لكل معالج. بهذه الطريقة، سيستمر كل معالج في الوصول إلى قيم مختلفة للمصفوفات. وبالتالي، تكون البيانات المطلوبة موجودة دائمًا لدى المعالجات المجاورة. يحتاج المعالج PE(i,j) حينها إلىأ{\displaystyle a}من PE(i,(j + 1) mod n) وب{\displaystyle b}من PE((i + 1) mod n,j) للخطوة التالية. هذا يعني أنأ{\displaystyle a}يجب تمريرها بشكل دوري إلى اليسار وأيضًاب{\displaystyle b}بشكل دوري تصاعدي. تُجمع نتائج عمليات الضرب كالمعتاد. بعد n خطوة، يكون كل معالج قد حسب جميعأأناك*بكج{\displaystyle a_{ik}*b_{kj}}مرة واحدة، ومجموعها هو المطلوب.جأناج{\displaystyle c_{ij}}.

بعد التوزيع الأولي لكل معالج، لا يلزم سوى تخزين بيانات الخطوة التالية. وهذه هي النتيجة الوسيطة للمجموع السابق، وهي أأأناك{\displaystyle a_{ik}}و أبكج{\displaystyle b_{kj}}وهذا يعني أن المصفوفات الثلاث تحتاج فقط إلى التخزين في الذاكرة بمجرد توزيعها بالتساوي عبر المعالجات.

تعميم

عمليًا، لدينا عدد أقل بكثير من المعالجات مقارنةً بعناصر المصفوفة. يمكننا استبدال عناصر المصفوفة بمصفوفات فرعية، بحيث يعالج كل معالج عددًا أكبر من القيم. يتحول الضرب والجمع القياسيان إلى ضرب وجمع مصفوفات متسلسلين. سيكون عرض وارتفاع المصفوفات الفرعيةشمال=ن/ص{\displaystyle N=n/{\sqrt {p}}}.

زمن تشغيل الخوارزمية هو تي(ن،ص)=تيجoلل(ن/شمال،ص)+شمال*تيsهـq(ن/شمال)+2(شمال-1)(تيsتأرت+تيبyتهـ(ن/شمال)2){\displaystyle T{\mathcal {(n,p)}}=T_{coll}(n/N,p)+N*T_{seq}(n/N)+2(N-1)(T_{start}+T_{byte}(n/N)^{2})}، أينتيجoلل{\displaystyle T_{coll}}يمثل وقت التوزيع الأولي للمصفوفات في الخطوة الأولى،تيsهـq{\displaystyle T_{seq}}وهي عملية حساب النتائج الوسيطة وتيsتأرت{\displaystyle T_{start}}وتيبyتهـ{\displaystyle T_{byte}}يمثل الوقت اللازم لإنشاء اتصال ونقل البايت على التوالي.

من عيوب هذه الخوارزمية كثرة الاتصالات وصغر حجم الرسائل. من الأفضل لو أمكن نقل كمية أكبر من البيانات في كل رسالة.

انظر أيضاً

مراجع

  1. كانون، لين إليوت (14 يوليو 1969). حاسوب خلوي لتنفيذ خوارزمية مرشح كالمان (دكتوراه). جامعة ولاية مونتانا.
  2. 1 2 غوبتا، هـ.؛ سادايابان، ب. (1994). ضرب المصفوفات بكفاءة الاتصال على المكعبات الفائقة (تقرير فني). مختبر ستانفورد للمعلومات.
  3. "4.2 ضرب المصفوفات على جهاز ذاكرة موزعة" . الجبر الخطي العددي . مشروع تعليم علوم الحاسوب. 1991-1995. مؤرشف من الأصل في 1 أبريل 2018.
  4. ^ بينو ، جان فرانسوا (أكتوبر 2010). جدولة مدركة للاتصالات على منصات العمل الرئيسية غير المتجانسة (دكتوراه). المدرسة العادية العليا في ليون. هاتف-00530131.
  5. فان دي جين، روبرت أ.؛ واتس، جيريل (أبريل 1997). "سوما: خوارزمية ضرب المصفوفات الشاملة القابلة للتوسع" . التزامن: الممارسة والتجربة . 9 (4): 255-274 . doi : 10.1002/(SICI)1096-9128(199704)9:4 < 255::AID-CPE250 > 3.0.CO ; 2-2 .
  • ديميل، ج. (1996). "المحاضرة 9: ضرب المصفوفات المتوازي" . تطبيقات الحواسيب المتوازية CS267 . جامعة كاليفورنيا، بيركلي.
  • هاروود، آرون (2003). "ضرب المصفوفات §خوارزمية كانون" . 433-498 الشبكات وتعقيد المعالجة المتوازية . جامعة ملبورن. مؤرشف من الأصل في 3 يوليو 2007.