الحوسبة المتوازية هي المطلب الرئيسي للنظام. أنواع مختلفة من الحوسبة المتوازية

نص

1 الجزء 3. طرق الحوسبة المتوازية 6. مبادئ تطوير الأساليب المتوازية 6. مبادئ تطوير الأساليب المتوازية محاكاة البرامج المتوازية مراحل تطوير الخوارزميات المتوازية فصل الحسابات إلى أجزاء مستقلة استخراج تبعيات المعلومات قياس مجموعة من المهام الفرعية التوزيع عدد المهام الفرعية بين الأجزاء المستقلة للمعالجات تحديد تبعيات المعلومات قياس وتوزيع المهام الفرعية بواسطة المعالجات تحليل كفاءة الحوسبة المتوازية مراجعة قصيرةقسم مراجعة الأدبيات أسئلة الاختبار المهام والتمارين تطوير الخوارزميات (خاصة طرق الحوسبة المتوازية) لحل المشكلات العلمية والتقنية المعقدة غالبًا ما يكون مشكلة كبيرة. لتقليل تعقيد الموضوع قيد النظر ، دعنا نترك جانباً الجوانب الرياضية لتطوير وإثبات تقارب الخوارزميات ، تتم دراسة هذه القضايا بدرجة أو بأخرى في عدد من الدورات التدريبية الرياضية "الكلاسيكية". هنا سنفترض أن المخططات الحسابية لحل المشكلات المذكورة أدناه كأمثلة معروفة بالفعل 1). مع الأخذ في الاعتبار الافتراضات المذكورة أعلاه ، يمكن أن تكون الخطوات التالية لتحديد الطرق الفعالة لتنظيم الحوسبة المتوازية على النحو التالي: مجموعة مكونة من المهام الفرعية ، تفاعلات المعلومات التي يجب تنفيذها أثناء حل المهمة الأولية ، تحديد نظام الكمبيوتر الضروري ( أو متاح) لحل المشكلة وتوزيع مجموعة المهام الفرعية الموجودة بين معالجات النظام. في الاعتبار العام ، من الواضح أن مقدار الحساب لكل معالج مستخدم يجب أن يكون متماثلًا تقريبًا ؛ سيضمن ذلك حملًا حسابيًا موحدًا (موازنة) للمعالجات. بالإضافة إلى ذلك ، من الواضح أيضًا أن توزيع المهام الفرعية بين المعالجات يجب أن يتم بطريقة تجعل التواجد روابط المعلومات(تفاعلات الاتصال) بين المهام الفرعية كانت ضئيلة. 1) على الرغم من حقيقة أنه بالنسبة للعديد من المشكلات العلمية والتقنية ، في الواقع ، لا يُعرف فقط طرق الحل المتسلسلة ، ولكن أيضًا الموازية ، فإن هذا الافتراض ، بالطبع ، قوي جدًا ، نظرًا للمشاكل الناشئة الجديدة التي تتطلب قدرًا كبيرًا من الحسابات لحلها ، فإن عملية تطوير الخوارزميات هي جزء أساسي من جميع الأعمال المنجزة.

2 فصل الحسابات إلى أجزاء مستقلة تحديد تبعيات المعلومات قياس المهام الفرعية توزيع المهام الفرعية بين المعالجات. وفقًا لنتائج التحليل ، قد يكون من الضروري تكرار مراحل التطوير الفردية (في الحالة المحدودة ، جميعها) ، وتجدر الإشارة إلى أن العودة إلى خطوات التطوير السابقة يمكن أن تحدث في أي مرحلة من مراحل تصميم دوائر الحوسبة المتوازية. في هذا الصدد ، فإن الإجراء الإضافي الذي يتم إجراؤه غالبًا في مخطط التصميم أعلاه هو ضبط تكوين مجموعة المهام التي تم إنشاؤها بعد تحديد العدد المتاح من المعالجات ؛ يمكن توسيع المهام الفرعية (مجمعة) إذا كان هناك عدد صغير من المعالجات ، أو ، على العكس ، مفصلة خلاف ذلك. بشكل عام ، يمكن تعريف هذه الإجراءات على أنها توسيع نطاق الخوارزمية المطورة وتمييزها كمرحلة منفصلة في تصميم الحوسبة المتوازية. لتطبيق الطريقة المتوازية التي تم الحصول عليها في النهاية ، من الضروري تطوير برامج لحل المجموعة المشكلة من المهام الفرعية ووضع البرامج المطورة بين المعالجات وفقًا لنظام توزيع المهام الفرعية المختار. لإجراء العمليات الحسابية ، يتم إطلاق البرامج للتنفيذ (عادةً ما تسمى البرامج في مرحلة التنفيذ بالعمليات) ، ولتنفيذ تفاعلات المعلومات ، يجب أن يكون لدى البرامج وسائل تبادل البيانات (قنوات نقل الرسائل). تجدر الإشارة إلى أنه يتم تخصيص كل معالج عادةً لحل مهمة فرعية واحدة ، ومع ذلك ، إذا كان هناك عدد كبير من المهام الفرعية أو تم استخدام عدد محدود من المعالجات ، فقد لا تتم مراعاة هذه القاعدة ، ونتيجة لذلك ، هناك عدة برامج ( العمليات) في نفس الوقت على المعالجات. على وجه الخصوص ، أثناء التطوير والاختبار الأولي لبرنامج متوازي ، يمكن استخدام معالج واحد لتنفيذ جميع العمليات (عندما يكون موجودًا على معالج واحد ، يتم تنفيذ العمليات في وضع توزيع الوقت). بعد النظر في مخطط تم تطويره بعناية لتصميم وتنفيذ الحوسبة المتوازية ، يمكن ملاحظة أن هذا النهج يركز بشكل كبير على أنظمة الحوسبة ذات الذاكرة الموزعة ، عندما يتم تنفيذ تفاعلات المعلومات الضرورية عن طريق نقل الرسائل عبر قنوات الاتصال بين المعالجات. مع ذلك، هذا المخططيمكن استخدامها دون فقدان أي كفاءة للحوسبة المتوازية ولتطوير طرق متوازية للأنظمة ذات الذاكرة المشتركة في هذه الحالة ، آليات تمرير الرسائل لضمان استبدال تفاعلات المعلومات بعمليات الوصول إلى المتغيرات المشتركة (المشتركة) محاكاة التوازي برامج التصميم والتنفيذ المدروسة الحوسبة المتوازية توفر طريقة لفهم الخوارزميات والبرامج الموازية. في مرحلة التصميم ، يمكن تمثيل الطريقة المتوازية كرسم بياني "للمهمة الفرعية للرسالة" ، والذي لا يعدو كونه تمثيلًا موسعًا (مجمعًا) لبيان تبعية المعلومات (الرسم البياني "معاملات العمليات" ، انظر القسم 2). وبالمثل ، في مرحلة التنفيذ ، لوصف برنامج متوازي ، يمكن استخدام نموذج في شكل "قنوات عمليات" رسم بياني ، حيث يتم استخدام مفهوم العمليات بدلاً من المهام الفرعية ، ويتم استبدال تبعيات المعلومات بالقنوات 2

3 عمليات نقل الرسائل. بالإضافة إلى ذلك ، يمكن أن يُظهر هذا النموذج توزيع العمليات بين معالجات نظام الكمبيوتر ، إذا تجاوز عدد المهام الفرعية عدد المعالجات ، انظر الشكل. العملية - القناة - عمليات الاستقبال (الإرسال) - قنوات الإدخال (الإخراج) لـ تفاعل العمليات "قنوات العمليات" إن استخدام نموذجين للحوسبة المتوازية 2) يجعل من الممكن فصل المشاكل التي تظهر في تطوير الأساليب المتوازية بشكل أفضل. يسمح لك نموذج الرسم البياني الأول "رسائل المهام الفرعية" بالتركيز على تحديد المهام الفرعية بنفس التعقيد الحسابي ، مع توفير مستوى منخفض من الاعتماد على المعلومات بين المهام الفرعية. يركز النموذج الثاني من الرسم البياني "قنوات العمليات" على توزيع المهام الفرعية بين المعالجات ، مما يوفر فرصة أخرى لتقليل تعقيد تفاعلات المعلومات بين المهام الفرعية عن طريق وضع عمليات تفاعلية مكثفة على نفس المعالجات. بالإضافة إلى ذلك ، يتيح هذا النموذج إمكانية تحليل كفاءة الطريقة المتوازية المطورة بشكل أفضل ويوفر وصفًا أكثر ملاءمة لعملية الحوسبة المتوازية. دعونا نعطي تفسيرات إضافية للمفاهيم المستخدمة في نموذج "قنوات العمليات": في إطار العملية في إطار هذه المادة التعليمية ، نعني برنامجًا يتم تنفيذه على المعالج ، والذي يستخدم جزءًا من الذاكرة المحلية للمعالج لعمله و الذي يحتوي على عدد من عمليات استقبال / إرسال البيانات لتنظيم تفاعل المعلومات بين العمليات الجارية لبرنامج موازٍ ، يمكن اعتبار قناة البيانات منطقيًا على أنها قائمة انتظار الرسائل التي يمكن لعملية واحدة أو أكثر أن ترسل إليها البيانات المعاد توجيهها والتي منها عملية الوجهة يمكن استرداد الرسائل المرسلة من قبل عمليات أخرى. في الحالة العامة ، يمكننا أن نفترض أن القنوات تنشأ ديناميكيًا في وقت أول عملية إرسال / استقبال مع القناة. بشكل عام ، قد تتوافق القناة مع واحد أو أكثر من بيانات عملية الاستقبال التي تتلقى أوامر ؛ وبالمثل ، عند تمرير الرسائل ، يمكن استخدام القناة بواحد أو أكثر من تعليمات نقل البيانات لعملية واحدة أو أكثر. لتقليل تعقيد النمذجة وتحليل الطرق المتوازية ، سنفترض أن سعة القنوات غير محدودة ، ونتيجة لذلك ، يتم تنفيذ عمليات نقل البيانات دون تأخير تقريبًا عن طريق نسخ الرسائل إلى القناة. من ناحية أخرى ، يمكن أن تؤدي عمليات استلام الرسائل إلى تأخير (حظر) إذا لم يتم إرسال البيانات المطلوبة من القناة بواسطة عمليات مصدر الرسالة. وتجدر الإشارة إلى الميزة المهمة لنموذج "قنوات العمليات" المدروس في هذا النموذج ، والفصل الواضح للحسابات المحلية (التي يتم إجراؤها على معالج منفصل) و 2) يعتبر فوستر (1995) نموذجًا واحدًا فقط - "قناة المهمة "نموذج لوصف الحوسبة المتوازية ، والذي يأخذ موقعًا وسيطًا مقارنة بالنماذج المعروضة هنا. وبالتالي ، فإن نموذج "قناة المهام" لا يأخذ في الاعتبار إمكانية استخدام معالج واحد لحل عدة مهام فرعية في وقت واحد. 3

4 إجراءات لتنظيم تفاعل المعلومات للعمليات الجارية في وقت واحد. يقلل هذا النهج بشكل كبير من تعقيد تحليل فعالية الطرق المتوازية ويبسط إلى حد كبير مشاكل تطوير البرامج المتوازية. مراحل تطوير الخوارزميات المتوازية. تعتمد هذه التقنية إلى حد كبير على النهج الذي تم تناوله لأول مرة في Foster (1995) ، وكما لوحظ سابقًا ، فهي تتضمن مراحل اختيار المهام الفرعية ، وتحديد تبعيات المعلومات ، وقياس وتوزيع المهام الفرعية بين معالجات الكمبيوتر نظام (انظر الشكل 6.1). لتوضيح التوصيات الواردة أدناه ، سنستخدم مشكلة التعلم المتمثلة في إيجاد القيمة القصوى بين عناصر المصفوفة A (تنشأ مثل هذه المشكلة ، على سبيل المثال ، عند حل أنظمة المعادلات الخطية عدديًا لتحديد العنصر الرائد في طريقة Gaussian ): y = max a. 1 i، j N i j مثال كاملاستخدام هذه التقنية لتطوير الخوارزميات المتوازية. بالإضافة إلى ذلك ، سيتم تطبيق مخطط التطوير هذا عند تقديم جميع طرق الحوسبة المتوازية المذكورة أدناه. فصل الحسابات إلى أجزاء مستقلة يعتمد اختيار طريقة لتقسيم الحسابات إلى أجزاء مستقلة على تحليل المخطط الحسابي لحل الأصل مشكلة. عادة ما تكون المتطلبات التي يجب أن يستوفيها النهج المختار هي ضمان قدر متساوٍ من الحساب في المهام الفرعية المخصصة والحد الأدنى من تبعيات المعلومات بين هذه المهام الفرعية (مع افتراض ثبات العوامل الأخرى ، ينبغي تفضيل عمليات النقل غير المتكررة للرسائل الأكبر حجمًا على عمليات النقل المتكررة للبيانات الصغيرة). في الحالة العامة ، يعد تحليل المهام واختيارها مشكلة معقدة إلى حد ما.يساعد الموقف على حل وجود نوعين شائعين من المخططات الحسابية: أ) ب) الشكل. فصل البيانات للمصفوفة أ: أ) مخطط الشريط ، ب ) مخطط الكتلة بالنسبة لفئة كبيرة من المشكلات الحسابية يتم تقليلها إلى أداء نفس النوع من عناصر المعالجة لعناصر مجموعة بيانات كبيرة ، وتشمل هذه المهام ، على سبيل المثال ، حسابات المصفوفة ، والطرق العددية لحل المعادلات التفاضلية الجزئية ، وما إلى ذلك. في هذا في الحالة ، يقولون إن هناك توازيًا للبيانات ، ويتم تقليل اختيار المهام الفرعية إلى فصل البيانات المتاحة. لذلك ، على سبيل المثال ، بالنسبة لمشكلة التدريب الخاصة بنا لإيجاد القيمة القصوى عند تكوين المهام الفرعية ، يمكن تقسيم المصفوفة الأولية A إلى صفوف منفصلة (أو مجموعات متتالية من الصفوف) مخطط فصل بيانات الشريط (انظر الشكل 6.3) أو إلى مجموعات مستطيلة من العناصر مخطط فصل بيانات الكتلة. بالنسبة لعدد كبير من المهام المراد حلها ، يؤدي تقسيم العمليات الحسابية على البيانات إلى إنشاء مجموعات من المشكلات الفرعية أحادية وثنائية وثلاثية الأبعاد والتي لا توجد لها روابط معلومات إلا بين أقرب الجيران (تسمى هذه المخططات عادةً بالشبكات أو المشابك) ، 4

الشكل 5 الهياكل العادية أحادية وثنائية وثلاثية الأبعاد للمهام الفرعية الأساسية بعد مهام تحليل البيانات لمعالجة سلسلة من الطلبات قواعد المعلومات البيانات والحسابات مع الاستخدام المتزامن لخوارزميات حسابية مختلفة ، وما إلى ذلك). في كثير من الأحيان ، يمكن استخدام التحليل الوظيفي لتنظيم معالجة خط أنابيب البيانات (على سبيل المثال ، عند إجراء أي تحويلات للبيانات ، يمكن تقليل العمليات الحسابية إلى تسلسل وظيفي لإدخال البيانات ومعالجتها وحفظها). من القضايا المهمة في اختيار المهام الفرعية اختيار المستوى المطلوب لتحلل الحسابات. يضمن تشكيل أكبر عدد ممكن من المهام الفرعية استخدام الحد الأقصى من مستوى التوازي الممكن تحقيقه للمشكلة التي يتم حلها ، ومع ذلك ، فإنه يعقد تحليل الحوسبة المتوازية. يؤدي استخدام المهام الفرعية "الكبيرة" بشكل كافٍ فقط في تحلل الحسابات إلى مخطط واضح للحسابات المتوازية ، ومع ذلك ، يمكن أن يعيق الاستخدام الفعال لعدد كبير بما فيه الكفاية من المعالجات. قد يكون الجمع المعقول المحتمل لهذين النهجين هو استخدام عناصر بناءة للتحلل فقط تلك المهام الفرعية التي تُعرف طرق الحوسبة الموازية لها. لذلك ، على سبيل المثال ، عند تحليل مشكلة ضرب المصفوفة ، يمكن للمرء استخدام طرق المنتج القياسي للمتجهات أو خوارزميات منتج متجه المصفوفة كمهام فرعية. ستجعل مثل هذه الطريقة الوسيطة في تحليل الحوسبة من الممكن ضمان بساطة تمثيل المخططات الحسابية وكفاءة الحسابات المتوازية. ستتم الإشارة إلى المهام الفرعية المحددة في هذا النهج على أنها مهام فرعية أساسية ، والتي يمكن أن تكون أولية (غير قابلة للتجزئة) إذا لم تسمح بمزيد من الفصل ، أو مركبة بطريقة أخرى. بالنسبة لمهمة التدريب قيد النظر ، قد يتكون المستوى الكافي من التحلل ، على سبيل المثال ، في تقسيم المصفوفة A إلى مجموعة من الصفوف المنفصلة ، وعلى هذا الأساس ، الحصول على مجموعة من المهام الفرعية للعثور على القيم القصوى في الصفوف الفردية ؛ تتوافق بنية روابط المعلومات التي تم إنشاؤها في هذه الحالة مع رسم بياني خطي ، انظر الشكل. لتقييم صحة مرحلة تقسيم الحسابات إلى أجزاء مستقلة ، يمكنك استخدام قائمة مراجعة الأسئلة المقترحة في Foster (1995): هل تم إجراء التحلل زيادة حجم العمليات الحسابية ومقدار الذاكرة المطلوب؟ هل يمكن لطريقة التحلل المختارة تحميل جميع المعالجات المتاحة بالتساوي؟ هل هناك ما يكفي من الأجزاء المخصصة لعملية الحساب لتحميل المعالجات المتاحة بشكل فعال (مع مراعاة إمكانية زيادة عددها)؟ تحديد تبعيات المعلومات إذا كان هناك مخطط حسابي لحل المشكلة بعد اختيار المهام الفرعية الأساسية ، فإن تحديد تبعيات المعلومات بين المهام الفرعية عادة لا يسبب صعوبات كبيرة. ومع ذلك ، في الوقت نفسه ، تجدر الإشارة إلى أنه ، في الواقع ، من الصعب للغاية الفصل بين مراحل تحديد المهام الفرعية وتبعيات المعلومات. يجب أن يأخذ اختيار المهام الفرعية في الاعتبار روابط المعلومات الناشئة ؛ بعد تحليل حجم وتكرار تبادل المعلومات الضرورية بين المهام الفرعية ، قد يكون من الضروري تكرار مرحلة فصل الحسابات. عند تحليل تبعيات المعلومات بين المهام الفرعية ، يجب التمييز بين (يتم وضع خط تحت الأشكال المفضلة لتفاعل المعلومات):

6 ، كقاعدة عامة ، على المعالجات المجاورة) ، لعمليات نقل البيانات العالمية ، تشارك جميع المهام الفرعية في عملية الاتصال ، والطرق الهيكلية والتعسفية للتفاعل للأساليب الهيكلية ، ويؤدي تنظيم التفاعلات إلى تكوين بعض مخططات الاتصال القياسية ( على سبيل المثال ، في شكل حلقة ، شعرية مستطيلة ، وما إلى ذلك) ، بالنسبة لهياكل التفاعل التعسفي ، فإن مخطط عمليات نقل البيانات المنفذة ليس مخططات نقل بيانات متجانسة أو ثابتة أو ديناميكية للمخططات الثابتة واللحظات و يتم إصلاح المشاركين في تفاعل المعلومات في مراحل تصميم وتطوير البرامج المتوازية ، بالنسبة لمتغير التفاعل الديناميكي ، يتم تحديد هيكل عملية نقل البيانات في سياق العمليات الحسابية المستمرة ، وطرق التفاعل المتزامنة وغير المتزامنة للطرق المتزامنة للبيانات يتم تنفيذ عمليات النقل فقط عندما يكون جميع المشاركين في التفاعل جاهزين ولا يكتمل إلا بعد اكتمال الكل x إجراءات الاتصال ، مع التنفيذ غير المتزامن للعمليات ، قد لا ينتظر المشاركون في التفاعل اكتمال إجراءات نقل البيانات. بالنسبة لأساليب التفاعل المقدمة ، من الصعب تحديد الأشكال المفضلة لتنظيم نقل البيانات: عادةً ما يكون الخيار المتزامن أسهل في الاستخدام ، بينما تسمح لك الطريقة غير المتزامنة غالبًا بتقليل التأخير الزمني الناجم عن عمليات تفاعل المعلومات. كما لوحظ في الفقرة السابقة ، بالنسبة لمشكلة التدريب المتمثلة في إيجاد القيمة القصوى عند استخدامها العناصر الأساسيةالمهام الفرعية للبحث عن القيم القصوى في الصفوف الفردية للمصفوفة الأصلية أ ، بنية روابط المعلومات لها الشكل الموضح في الشكل. بنية روابط المعلومات للمهمة التعليمية كما في السابق ، لتقييم مدى صحة مرحلة الاستخراج تبعيات المعلومات ، يمكنك استخدام قائمة الأسئلة المقترحة في فوستر (1995): ما إذا كان التعقيد الحسابي للمشكلات الفرعية هو كثافة تفاعلاتها المعلوماتية؟ هل كثافة تفاعلات المعلومات هي نفسها بالنسبة للمهام الفرعية المختلفة؟ هل مخطط الاتصال محلي؟ هل الاعتماد على المعلومات المكشوفة يمنع الحل المتوازي للمهام الفرعية؟ قياس مجموعة المهام الفرعية يتم تنفيذ مقياس المخطط الحسابي المطور للحوسبة المتوازية إذا كان عدد المهام الفرعية المتاحة يختلف عن عدد المعالجات المخطط استخدامها. لتقليل عدد المهام الفرعية ، من الضروري إجراء تجميع (تجميع) الحسابات. تتوافق القواعد المطبقة هنا مع توصيات المرحلة الأولية من اختيار المهام الفرعية: يجب أن يكون للمهام الفرعية المحددة ، كما كان من قبل ، نفس التعقيد الحسابي ، ويجب أن يظل حجم وشدة تفاعلات المعلومات بين المهام الفرعية عند أدنى مستوى ممكن. نتيجة لذلك ، فإن أول المتنافسين على الدمج هم المهام الفرعية مع بدرجة عاليةترابط المعلومات. إذا كانت مجموعة المهام الفرعية الحالية غير كافية لتحميل جميع المعالجات المتاحة للاستخدام ، فمن الضروري تحسين (تحليل) الحسابات. مثل 6

كقاعدة عامة ، لا يتسبب إجراء مثل هذا التحلل في أي صعوبات إذا كانت طرق الحوسبة المتوازية معروفة للمهام الأساسية. يجب أن ينخفض ​​تنفيذ مرحلة قياس الحساب في النهاية إلى تطوير قواعد تجميع وتفكيك المهام الفرعية ، والتي يجب أن تعتمد بشكل حدودي على عدد المعالجات المستخدمة في الحسابات. بالنسبة لمسألة التدريب المدروسة لإيجاد القيمة القصوى ، يمكن أن يتكون تجميع الحسابات من دمج الصفوف الفردية في مجموعات (مخطط شريط لتقسيم مصفوفة ، انظر الشكل 6.3 أ) ؛ عند تفكيك المهام الفرعية ، صفوف المصفوفة الأصلية A يمكن تقسيمها إلى عدة أجزاء (كتل). قائمة نقاط التفتيش التي اقترحها فوستر (1995) لتقييم صحة خطوة القياس هي كما يلي: هل سيتدهور موقع الحسابات بعد قياس مجموعة معينة من المشاكل الفرعية؟ هل المهام الفرعية لها نفس التعقيد الحسابي والاتصال بعد القياس؟ هل يتطابق عدد المهام مع عدد المعالجات المتاحة؟ هل تعتمد قواعد القياس حدوديًا على عدد المعالجات؟ توزيع المهام الفرعية بين المعالجات توزيع المهام الفرعية بين المعالجات هو المرحلة الأخيرة في تطوير طريقة موازية. وتجدر الإشارة إلى أن التحكم في توزيع الحمل للمعالجات ممكن فقط لأنظمة الحوسبة ذات الذاكرة الموزعة ؛ بالنسبة للمعالجات المتعددة (الأنظمة ذات الذاكرة المشتركة) ، يتم عادةً توزيع الحمل تلقائيًا بواسطة نظام التشغيل. بالإضافة إلى ذلك ، تعد هذه المرحلة من توزيع المهام الفرعية بين المعالجات زائدة عن الحاجة إذا كان عدد المهام الفرعية يتزامن مع عدد المعالجات المتاحة ، وكانت طوبولوجيا شبكة نقل البيانات لنظام الحوسبة عبارة عن رسم بياني كامل (أي أن جميع المعالجات متصلة ببعضها البعض عن طريق مباشر خطوط الاتصال). مؤشر الأداء الرئيسي هذه المرحلةكفاءة استخدام المعالج ، تُعرّف على أنها النسبة النسبية للوقت التي تم خلالها استخدام المعالجات للحسابات المتعلقة بحل المشكلة الأصلية. تظل طرق تحقيق نتائج جيدة في هذا الاتجاه كما كانت من قبل ، فمن الضروري ضمان التوزيع المتساوي للحمل الحسابي بين المعالجات وتقليل عدد الرسائل المنقولة بين المعالجات. بنفس الطريقة كما في مراحل التصميم السابقة ، يعتمد الحل الأمثل لمشكلة توزيع المهام الفرعية بين المعالجات على تحليل الاتصال المعلوماتي للرسم البياني "المهام الفرعية - الرسائل". لذلك ، على وجه الخصوص ، يجب وضع المهام الفرعية التي توجد بينها تفاعلات إعلامية على المعالجات التي توجد بينها خطوط نقل بيانات مباشرة. وتجدر الإشارة إلى أن شرط تقليل تبادل المعلومات بين المعالجات قد يتعارض مع حالة التحميل المنتظم للعمليات. لذلك ، يمكننا وضع جميع المهام الفرعية على معالج واحد والتخلص تمامًا من مرور رسائل المعالجات ، ومع ذلك ، من الواضح أن الحمل على معظم المعالجات في هذه الحالة سيكون ضئيلاً للغاية. بالنسبة لمهمتنا التدريبية المتمثلة في إيجاد القيمة القصوى ، فإن توزيع المهام الفرعية بين المعالجات لا يسبب أي صعوبات ؛ إنه يكفي لضمان وضع المهام الفرعية التي توجد بينها روابط معلومات حول المعالجات التي توجد لها قنوات نقل بيانات مباشرة. نظرًا لأن بنية روابط المعلومات الخاصة بالمهمة التعليمية لها شكل رسم بياني خطي ، فإن التنفيذ هذا المتطلبيمكن توفيرها تقريبًا مع أي طوبولوجيا شبكة لنظام الكمبيوتر. يصبح حل مشكلات موازنة الحمل الحسابي أكثر تعقيدًا إذا كان مخطط الحساب يمكن أن يتغير في سياق حل المشكلة. يمكن أن يكون سبب ذلك ، على سبيل المثال ، الشبكات غير المتجانسة عند حل المعادلات التفاضلية الجزئية والمصفوفات المتفرقة وما إلى ذلك. 3). بالإضافة إلى ذلك ، يمكن أن تكون تقديرات التعقيد الحسابي لحل المهام الفرعية المستخدمة في مراحل التصميم تقريبية ، وأخيرًا ، يمكن أن يتغير عدد المهام الفرعية أثناء العمليات الحسابية. في مثل هذه الحالات ، قد يكون من الضروري إعادة توزيع المهام الفرعية الأساسية بين 3) ويمكن ملاحظة أنه حتى بالنسبة لمهمة التدريب البسيطة لدينا ، يمكن ملاحظة التعقيد الحسابي المختلف للمهام الأساسية التي تم إنشاؤها. لذلك ، على سبيل المثال ، فإن عدد العمليات عند البحث عن الحد الأقصى لقيمة سلسلة حيث يكون للعنصر الأول القيمة القصوى ، والسلسلة التي يتم فيها فرز القيم بترتيب تصاعدي ، ستختلف بمعامل اثنين . 7

8 معالجات تعمل بالفعل بشكل مباشر في عملية تنفيذ برنامج مواز (أو ، كما يقولون عادةً ، سيتعين عليك إجراء موازنة تحميل ديناميكية). هذه الأسئلة هي واحدة من أكثر الأسئلة تعقيدًا (والأكثر إثارة للاهتمام) في مجال الحوسبة الموازية ، وللأسف ، فإن النظر في هذه القضايا هو خارج نطاق هذه المادة التعليمية ( معلومات إضافيةيمكن الحصول عليها ، على سبيل المثال ، في Buyya (1999) و Wilkinson and Allen (1999)). كمثال ، دعنا نقدم وصفًا موجزًا ​​لطريقة مستخدمة على نطاق واسع لإدارة توزيع الحمل الحسابي ديناميكيًا ، والتي يشار إليها عادةً باسم "مخطط المدير-العامل". عند استخدام هذا النهج ، يُفترض أن المهام الفرعية يمكن أن تنشأ وتنتهي في سياق العمليات الحسابية ، بينما تكون تفاعلات المعلومات بين المهام الفرعية إما غائبة تمامًا أو قليلة. وفقًا للمخطط قيد النظر ، يتم تخصيص مدير معالج منفصل لإدارة توزيع الحمل في النظام ، والذي يمكنه الوصول إلى المعلومات حول جميع المهام الفرعية المتاحة. المعالجات المتبقية للنظام هي المنفذين ، والتي من أجل تلقي الحمل الحسابي ، يرجى الرجوع إلى مدير المعالج. يتم تمرير المهام الفرعية الجديدة التي تم إنشاؤها في سياق العمليات الحسابية مرة أخرى إلى مدير المعالج ويمكن الحصول عليها لحلها في المكالمات اللاحقة لمعالجات المنفذ. يتم الانتهاء من الحسابات في الوقت الذي يكمل فيه معالجات المنفذ حل جميع المهام الفرعية المنقولة إليهم ، ولا يوجد لدى مدير المعالج أي عمل حسابي لأداءه. قائمة مراجعة فوستر (1995) المقترحة لاختبار خطوة توزيع المهام الفرعية هي: هل يؤدي توزيع المهام المتعددة لكل معالج إلى زيادة الحمل الحسابي؟ هل هناك حاجة للتوازن الديناميكي للحسابات؟ أليس مدير المعالج هو عنق الزجاجة عند استخدام مخطط المدير المنفذ؟ 6.3 الحل المتوازي لمشكلة الجاذبية N-body يتم تقليل العديد من المشكلات الحسابية في مجال الفيزياء إلى عمليات معالجة البيانات لكل زوج من الكائنات في النظام الفيزيائي الحالي. مثل هذه المشكلة ، على وجه الخصوص ، هي المشكلة المعروفة على نطاق واسع في الأدبيات باسم مشكلة الجاذبية N-body (أو ببساطة مشكلة الجسم N) انظر ، على سبيل المثال ، Andrews (2000) نظرة عامةيمكن وصف المشكلة على النحو التالي. دع عددًا كبيرًا من الأجسام (الكواكب والنجوم وما إلى ذلك) ، والتي تُعرف كتلة كل منها ، وضع البدايةوالسرعة. تحت تأثير الجاذبية ، يتغير موضع الأجسام ، ويتمثل الحل المطلوب للمشكلة في نمذجة ديناميكيات التغييرات في نظام الأجسام N خلال فترة زمنية محددة. لتنفيذ مثل هذه المحاكاة ، عادةً ما يتم تقسيم فترة زمنية معينة إلى فترات زمنية قصيرة ، وبعد ذلك ، في كل خطوة من خطوات المحاكاة ، يتم حساب القوى المؤثرة على كل جسم ، ثم يتم تحديث سرعات الأجسام ومواقعها. تتمثل إحدى الخوارزمية الواضحة لحل مشكلة الجسم N في النظر في جميع أزواج كائنات النظام المادي في كل خطوة نمذجة وإجراء جميع الحسابات اللازمة لكل زوج ناتج. نتيجة لذلك ، مع هذا النهج ، سيكون وقت تنفيذ تكرار محاكاة واحد 4) T = τ N (N 1) / 2 ، 1 حيث τ هو وقت إعادة حساب معلمات زوج واحد من الهيئات. على النحو التالي من الوصف أعلاه ، فإن المخطط الحسابي للخوارزمية المدروسة بسيط نسبيًا ، مما يجعل من الممكن استخدام مشكلة N-body كدليل واضح آخر لتطبيق التقنية لتطوير خوارزميات متوازية. 4) وتجدر الإشارة إلى أن هناك خوارزميات متسلسلة أكثر كفاءة لحل مشكلة الجسم N ، ولكن دراستهم قد تتطلب الكثير من الجهد. مع الأخذ في الاعتبار هذا الظرف ، يتم اختيار هذه الطريقة "الواضحة" (ولكن ليست الأسرع) لمزيد من الدراسة ، على الرغم من أنه ، في الحالة العامة ، بالطبع ، يجب اختيار أفضل المخططات لإجراء الحسابات للتوازي. 8

9 فصل العمليات الحسابية إلى أجزاء مستقلة لا يسبب اختيار طريقة لفصل الحسابات أي صعوبات - تتمثل الطريقة الواضحة في اختيار مجموعة كاملة من الحسابات المرتبطة بمعالجة بيانات أي جسم واحد من نظام مادي كمهمة فرعية أساسية تصبح المهمة الفرعية ممكنة فقط عندما تحتوي المهام الفرعية على بيانات (موضع وسرعة الحركة) حول جميع أجسام النظام المادي الحالي. نتيجة لذلك ، قبل البدء في كل تكرار للمحاكاة ، يجب أن تحصل كل مهمة فرعية على جميع المعلومات الضرورية من جميع المهام الفرعية الأخرى للنظام. يُطلق على إجراء نقل البيانات هذا ، كما هو مذكور في القسم 3 ، عملية جمع البيانات (تجميع العقدة الواحدة). في الخوارزمية قيد الدراسة ، يجب إجراء هذه العملية لكل مهمة فرعية ، ويشار عادةً إلى خيار نقل البيانات هذا على أنه تجميع متعدد العقد أو عملية تجميع كاملة. إن تحديد متطلبات النتائج الضرورية لتبادل المعلومات لا يؤدي إلى إنشاء لا لبس فيه لتبادل المعلومات الضرورية بين المهام الفرعية ، ويمكن ضمان تحقيق النتائج المطلوبة باستخدام خوارزميات مختلفة لأداء عملية جمع البيانات المعممة. إن أبسط طريقة لإجراء تبادل المعلومات الضرورية هي تنفيذ سلسلة من الخطوات ، يتم في كل منها تقسيم جميع المهام الفرعية الحالية إلى أزواج ويتم تبادل البيانات بين المهام الفرعية للأزواج المشكلة. مع التنظيم المناسب للتقسيم الزوجي للمهام الفرعية (N-1) ، سيؤدي التكرار المضاعف للإجراءات الموصوفة إلى التنفيذ الكامل لعملية جمع البيانات المطلوبة. إن طريقة تنظيم تبادل المعلومات المذكورة أعلاه شاقة إلى حد ما ، فجمع كل البيانات الضرورية يلزم تكرار (N-1) ، كل منها يؤدي في وقت واحد (N / 2) عمليات نقل البيانات. لتقليل العدد المطلوب من التكرارات ، يمكن للمرء الانتباه إلى حقيقة أنه بعد تنفيذ الخطوة الأولى من عملية جمع البيانات ، ستحتوي المهام الفرعية بالفعل ليس فقط على البيانات الخاصة بهم ، ولكن أيضًا على بيانات المهام الفرعية التي يقومون بها. أزواج مشكلة. نتيجة لذلك ، في التكرار الثاني لجمع البيانات ، سيكون من الممكن تكوين أزواج من المهام الفرعية لتبادل البيانات حول جسمين من النظام الفعلي في وقت واحد ، وبالتالي ، بعد الانتهاء من التكرار الثاني ، ستحتوي كل مهمة فرعية على معلومات حول أربع هيئات للنظام ، إلخ. كما ترون، هذه الطريقةيسمح تنفيذ التبادلات بإكمال الإجراء المطلوب في تكرارات السجل 2 N. تجدر الإشارة إلى أنه في هذه الحالة ، يتضاعف مقدار البيانات المرسلة في كل عملية تبادل من التكرار إلى التكرار ؛ في التكرار الأول ، يتم إرسال البيانات حول جسم واحد من النظام بين المهام الفرعية ، في التكرار الثاني ، حوالي جسمين ، إلخ. يؤدي استخدام الطريقة المدروسة لتنفيذ عملية جمع البيانات المعمم إلى تحديد بنية روابط المعلومات بين المهام الفرعية في شكل مكعب فائق الأبعاد N قياس وتوزيع المهام الفرعية بواسطة المعالجات كقاعدة عامة ، عدد أجسام النظام المادي يتجاوز N بشكل كبير عدد المعالجات p. نتيجة لذلك ، يجب توسيع المهام الفرعية التي تم النظر فيها مسبقًا من خلال الجمع بين الحسابات لمجموعة (N / p) من الهيئات في مهمة فرعية واحدة. بعد تنفيذ هذا التجميع ، سيتزامن عدد المهام الفرعية وعدد المعالجات ، وعند توزيع المهام الفرعية بين المعالجات ، يبقى فقط ضمان وجود خطوط اتصال مباشرة بين المعالجات ذات المهام الفرعية التي يتم تبادل المعلومات بينها أثناء جمع البيانات العملية .. لحل مشكلة الجسم N. نظرًا لاختلاف الخيارات المقترحة فقط في طرق إجراء تبادل المعلومات ، من أجل مقارنة الأساليب ، يكفي تحديد مدة عملية جمع البيانات المعممة. دعونا نستخدم النموذج الذي اقترحه Hockney (انظر القسم 3) لتقدير وقت إرسال الرسالة ، ثم يمكن التعبير عن مدة عملية جمع البيانات للمتغير الأول من الحوسبة المتوازية على أنها 1 T p (comm) = (p 1) (α + m (N / p) / β) ، حيث α ، هي معلمات نموذج Hockney (زمن الوصول والإنتاجية لشبكة نقل البيانات) ، وتحدد m كمية البيانات التي سيتم إرسالها لجسم واحد من النظام المادي. 9

10 بالنسبة للطريقة الثانية لتبادل المعلومات ، كما ذكرنا سابقًا ، يختلف مقدار البيانات المرسلة في التكرارات المختلفة لعملية جمع البيانات. في التكرار الأول ، يكون حجم الرسائل المرسلة (mn / p) ، وفي التكرار الثاني ، يتضاعف هذا الحجم ويساوي 2 (mN / p) ، وهكذا. بشكل عام ، بالنسبة لرقم التكرار i ، يقدر حجم الرسائل بـ 2 i-1 (mn / p). نتيجة لذلك ، يمكن تحديد مدة عملية جمع البيانات في هذه الحالة باستخدام التعبير التالي T 2 p log p i = 1 i 1 (comm) = (α + 2 m (N / p) / β) = α log ص + م (N / ع) (ص 1) / β. توضح المقارنة بين التعبيرات التي تم الحصول عليها أن الطريقة الثانية المطورة للحوسبة المتوازية تتمتع بكفاءة أعلى بكثير ، وتتحمل تكاليف اتصال أقل ، وتسمح بقابلية التوسع بشكل أفضل مع زيادة عدد المعالجات المستخدمة. نظرة عامة على القسم في هذا القسم ، طريقة التطوير المتوازي تم النظر في الخوارزميات التي اقترحها فوستر (1995). تتضمن هذه التقنية مراحل اختيار المهام الفرعية ، وتحديد تبعيات المعلومات ، وتوسيع نطاق المهام الفرعية وتوزيعها بين معالجات نظام الكمبيوتر. عند تطبيق التقنية ، من المفترض أن المخطط الحسابي لحل المشكلة قيد الدراسة معروف بالفعل. المتطلبات الرئيسية التي يجب الوفاء بها في تطوير الخوارزميات المتوازية هي ضمان التحميل المنتظم للمعالجات مع تفاعل معلومات منخفض لمجموعة المهام الفرعية المشكلة. لوصف الدوائر الحسابية المتوازية التي تم الحصول عليها أثناء التطوير ، تم النظر في نموذجين. يمكن استخدام نموذج "المهام الفرعية - الرسائل" الأول في مرحلة تصميم الخوارزميات المتوازية ، ويمكن تطبيق نموذج "قنوات العمليات" الثاني في مرحلة تنفيذ الأساليب في شكل برامج متوازية. في نهاية القسم ، يتم عرض تطبيق التقنية المدروسة لتطوير خوارزميات متوازية على مثال حل مشكلة الجاذبية N- الجسم.مراجعة الأدبيات تقنية تطوير الخوارزميات المتوازية التي تم النظر فيها في القسم تم اقتراحها لأول مرة في فوستر (1995 ). في هذا العمل ، يتم عرض المنهجية بمزيد من التفصيل ؛ بالإضافة إلى ذلك ، تحتوي الورقة على عدة أمثلة لاستخدام التقنية لتطوير طرق متوازية لحل عدد من المشكلات الحسابية. قد يكون عمل كوين (2004) مفيدًا أيضًا في النظر في تصميم وتطوير الخوارزميات المتوازية. تمت مناقشة مشكلة الجاذبية N-body بمزيد من التفصيل في أسئلة اختبار Andrews (2000) 1. ما هي الافتراضات الأولية لإمكانية تطبيق منهجية تطوير الخوارزميات المتوازية التي تم تناولها في القسم؟ 2. ما هي المراحل الرئيسية في تصميم وتطوير أساليب الحوسبة المتوازية؟ 3. كيف يتم تعريف نموذج "رسالة المهام الفرعية"؟ 4. كيف يتم تعريف نموذج قنوات العملية؟ 5. ما هي المتطلبات الأساسية التي يجب تلبيتها عند تطوير الخوارزميات المتوازية؟ 6. ما هي الإجراءات الرئيسية في مرحلة اختيار المهام الفرعية؟ 7. ما هي الخطوات الرئيسية في مرحلة تحديد التبعيات المعلوماتية؟ 8. ما هي الإجراءات الرئيسية في مرحلة قياس مجموعة المهام الفرعية الحالية؟ 9. ما هي أهم الإجراءات في مرحلة توزيع المهام الفرعية بين معالجات نظام الحاسب؟ 10. كيف يحدث ذلك تحكم ديناميكيتوزيع الحمل الحاسوبي باستخدام مخطط "المدير المنفذ"؟ 11. ما هي طريقة الحوسبة المتوازية التي تم تطويرها لحل مشكلة الجاذبية N- الجسم؟ 10

11 12. ما هي الطريقة الأكثر فعالية لأداء عملية جمع البيانات المعممة؟ 6.7 المهام والتمارين 1. قم بتنفيذ مخطط التسلسل لحساب مجموع تسلسل القيم الرقمية (انظر القسم 2) وقارن بين وقت تنفيذ التنفيذ المكتمل ووظيفة MPI_Bcast لمكتبة MPI. 2. تنفيذ الأساليب المدروسة لأداء عملية جمع البيانات المعممة ومقارنة وقت تنفيذها. قارن خصائص الوقت التي تم الحصول عليها مع التقديرات النظرية. قارن مع وقت تنفيذ دالة MPI_Allgather لمكتبة MPI. 3. تطوير مخطط الحوسبة المتوازية باستخدام منهجية تصميم وتطوير طرق متوازية تمت مناقشتها في القسم: لمشكلة إيجاد القيمة القصوى بين العناصر الدنيا لصفوف المصفوفة (تحدث هذه المشكلة لحل ألعاب المصفوفة) y = max min a، 1 i N 1 j N ij (انتبه بشكل خاص للموقف عندما يتجاوز عدد المعالجات ترتيب المصفوفة ، أي p> n) ، لمهمة حساب تكامل محدد باستخدام طريقة المستطيلات b N 1 y = f (x) dx h fi، a i = 0 f i = f (x)، x = i h، h = (b a) / N. i i (تم تقديم وصف طرق التكامل ، على سبيل المثال ، في Kahaner ، Moler and Nash (1988)) لمشكلة ضرب مصفوفة في متجه ، باستخدام منهجية تصميم وتطوير طرق متوازية تم تناولها في القسم. الأدب أندروز ، جي آر (2000). أسس البرمجة متعددة مؤشرات الترابط والمتوازية والموزعة .. القراءة ، ماجستير: أديسون ويسلي ، ج. (1989) الحساب المتوازي والموزّع. الطرق العددية. - برنتيس هول ، إنجليوود كليفس ، نيو جيرسي. بوييا ، ر. (محرر) (1999). الحوسبة العنقودية عالية الأداء. المجلد 1: البنى والأنظمة. المجلد 2: البرمجة والتطبيقات. - Prentice Hall PTR، Prentice-Hall Inc. كاهانر ، د. ، مولير ، سي ، ناش ، س. (1988). الطرق العددية والبرمجيات. برنتيس هول (الترجمة الروسية Kahaner D.، Moler L.، Nash S. Numerical. طرق وبرامج. M: Mir، 2001) Foster، I. (1995). تصميم وبناء البرامج الموازية: مفاهيم وأدوات لهندسة البرمجيات. القراءة ، ماجستير: أديسون ويسلي. كوين ، إم ج. (2004). البرمجة المتوازية بلغة C مع MPI و OpenMP. نيويورك ، نيويورك: ماكجرو هيل. ويلكينسون ، ب ، ألين ، إم (1999). البرمجة الموازية. قاعة الأمير. أحد عشر


الفصل 3 مبادئ تطوير الطرق الموازية

طرق وخوارزميات للحوسبة المتوازية تصميم خوارزميات متوازية كولاكوف كيريل ألكساندروفيتش 2016 أهداف تصميم بتروزافودسك موازنة الأحمال كفاءة التوسع

محاضرة حاسوبية عالية الأداء 2. تقدير أقصى قدر ممكن من التوازي لضمان الأفضل أفضل تسارع S T = الكفاءة E = 1 ربما لا تكون لجميع العمالة كثيفة الاستخدام حسابيًا

محاضرة المحاضرات 1. مبادئ بناء أنظمة الحوسبة المتوازية ... 23 محاضرة 2. النمذجة و تحليل الحوسبة المتوازية .... 49 محاضرة 3. تقييم الاتصال

جامعة ولاية نيجني نوفغورود N.I. Lobachevsky كلية الرياضيات الحاسوبية وعلم التحكم الآلي مجمع تعليمي مقدمة لأساليب البرمجة الموازية القسم 9. متوازي

مشروع اللجنة الرئاسية للتحديث والتطوير التكنولوجي للاقتصاد الروسي "إنشاء نظام لتدريب الموظفين المؤهلين تأهيلا عاليا في مجال تقنيات الحواسيب العملاقة والمتخصصة

الموضوع: موازاة التعبيرات في المثال الحسابي الخصائص الأساسية للتعقيد والتوازي ما الذي يخضع للتوازي؟ المشكلة (التحلل إلى مشاكل فرعية ذات أبعاد أصغر) 2 الطريقة

أسئلة للاختبار للدورة "أنظمة الحوسبة الموازية" 1. مبادئ بناء أنظمة الحوسبة المتوازية (15) 1. مخططات الأنظمة متعددة المعالجات ذات الوصول المتجانس وغير المتجانس. 2.

تصميم الخوارزميات المتوازية محاضرة 3.1 29.03.2012 T.Yu.Lymar 1 3.1 منهجية التصميم الفصل إنشاء الروابط التجميع الربط بجهاز كمبيوتر معين 29.03.2012 T.Yu.Lymar 2 3.1.1

جامعة موسكو م. Lomonosov تاريخ ومنهجية البرمجة المتوازية 9. تصميم الخوارزميات المتوازية المطورون: L.B. سوكولينسكي ، دكتور في الفيزياء والرياضيات ، أستاذ

الوكالة الفيدرالية للتعليم جامعة ولاية نيجني نوفغورود. ن. مشروع Lobachevsky الوطني "التعليم" برنامج تعليمي مبتكر من UNN. التربوية والعلمية

جامعة ولاية نيجني نوفغورود NI Lobachevsky كلية الرياضيات الحاسوبية وعلم التحكم الآلي قسم تكنولوجيا معلومات برامج الكمبيوتر مختبر تكنولوجيا المعلومات ITLab عملي

جامعة ولاية نيجني نوفغورود ن. Lobachevsky - جامعة البحوث الوطنية - محاضرة. محاكاة الحوسبة المتوازية Gergel V.P. عميد VMK UNN

خوارزميات لأنظمة الحوسبة المتوازية 1. أنواع التوازي وطرق تجميع الخوارزميات المتوازية. 2. تقييم كفاءة الخوارزميات المتوازية. 1. أنواع التوازي وطرق توليف التوازي

اتحاد الحواسيب الفائقة للجامعات الروسية برمجة

تقدير كفاءة الخوارزميات المتوازية محاضرة 4. 29.03.2012 T.Yu. مقدمة Lymar 1 النقطة الأساسية في تطوير الخوارزميات المتوازية هي تحليل فعالية استخدام التوازي:

تقدير كفاءة الخوارزميات المتوازية المحاضرة 7 T.Yu. ليمار

المفاهيم الأساسية للحوسبة الموازية الحوسبة الموازية (المعالجة المتوازية) هي استخدام عدة أو العديد من أجهزة الحوسبة لتنفيذ أجزاء مختلفة من جهاز واحد في نفس الوقت.

النماذج والطرق الرياضية للاستخدام الفعال لأنظمة الطب ثلاثي الأبعاد للحوسبة الرقمية الموزعة عرض الكمبيوترالرسومات والهندسية

UDC 681.5 الخوارزميات الموازية للحل العددي للمشكلة الصعبة لـ SODE Nazarova I.A. جامعة دونيتسك التقنية الوطنية

نمذجة الفصل وتحليل الحوسبة الموازية عند تطوير خوارزميات متوازية لحل المشكلات العلمية والتقنية المعقدة ، فإن النقطة الأساسية هي تحليل كفاءة استخدام التوازي ،

1. أهداف وغايات التخصص: أصبحت تقنيات الحواسيب العملاقة والحوسبة عالية الأداء باستخدام أنظمة الحوسبة متعددة المعالجات (MCS) عاملاً مهمًا في المجال العلمي والتقني

بناء النماذج الإحصائية لكفاءة البرامج الموازية VN Beletsky، SA Reznikova، AA Chemeris أكاديمية جي إي بوكوفا الوطنية للعلوم في أوكرانيا المقال يعتبر

علوم الكمبيوتر والإدارة والاقتصاد MIPT PROCEEDINGS 2 Volume 2، (5) UDC 59687 + 475 AS Khritankov Moscow Institute of Physics and Technology (State University) النموذج الرياضي لخصائص الأداء

الخوارزميات الخاصة بمعالج الموازنة تحميل نظام الحوسبة الموازي Belkov D.V. جامعة دونيتسك التقنية الوطنية ، قسم دونيتسك للرياضيات الحاسوبية والبرمجة

أجهزة الكمبيوتر والبرمجيات UDC 681.3.06 P.A. كفاءة Pavlov للحوسبة الموزعة في الأنظمة القابلة للتطوير تعد قابلية التوسع أحد أهم المتطلبات

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

طريقة قطرية لمصفوفة الكثافة المتعددة Knyazkova TV ، دكتوراه ، أستاذ مشارك ، جامعة ولاية فياتكا ، كيروف

مقدمة 1 الفصل 1 الواجبات 1.1 الإحماء المهمة الأولى لكتابة برنامج يستخدم مكتبة MPI هي نفسها للجميع. 1.1.1 حساب الرقم π احسب الرقم π باستخدام الصيغة التالية: 1 1 dx 4 1 + x

العمل المخبري 4 التنفيذ المتوازي لطريقة جاكوبي في مجال ثلاثي الأبعاد الغرض من العمل: التطوير العملي لطرق موازنة الخوارزميات العددية على شبكات منتظمة باستخدام مثال للتنفيذ

R. I. Idrisov استعراض زمني للتمثيل الداخلي IR2 من SISAL 3.1 اللغة

استراتيجية البحث الأمثل وطرق حل مشاكل التحسين الثابت والديناميكي للكائنات التكنولوجية تتم صياغة مهام التحسين الثابت للكائنات التكنولوجية بشكل تقليدي

تنظيم عمليات حوسبة الحبوب المتوازية (الحصول على تسلسلات متوازية من الحسابات الحبيبية) دعونا نعطي أمثلة على الحصول على خوارزميات متوازية ، ومجموعات العمليات منها

الخصائص الموازية للخوارزمية تم تصميم أجهزة الكمبيوتر الموازية (أجهزة الكمبيوتر العملاقة) لحل المشكلات الكبيرة بسرعة. كلما زادت قوة الكمبيوتر ، زادت سرعة حل المشكلة عليه. بعيدا

كاليايف أ. برمجة العمارة الافتراضية وتنظيم الحوسبة الهيكلية والإجرائية في الأنظمة متعددة المعالجات ذات التشابه الشامل 1

خوارزميات لضرب المصفوفات المتوازية 1 خوارزميات الشريط لمضاعفة المصفوفة في هذه الخوارزميات ، يتم تقسيم المصفوفات إلى تسلسلات مستمرة من الصفوف أو الأعمدة (النطاقات). في أبسط الحالات

تخصيص الذاكرة تخصيص الذاكرة هو العملية التي يتم من خلالها تعيين العنوان والحجم والسمات الخاصة بمنطقة الذاكرة المطلوبة للتخصيص لعناصر فردية من البرنامج المصدر.

حل المعادلات غير الخطية وأنظمة المعادلات غير الخطية حل المعادلات غير الخطية بالشكل الحل العددي للمعادلات الجبرية غير الخطية أو المعادلات التجاوزية. هو إيجاد القيم

"الجبر والهندسة" 13. نظم المعادلات الجبرية الخطية (SLAE). نظرية كرونيكر كابيلي. الحلول العامة والخاصة لـ SLAE. 14. منحنيات الرتبة الثانية: القطع الناقص ، القطع الزائد ، القطع المكافئ ، وخصائصها.

UDC 681.32 زيادة أداء مجموعات محطات العمل باستخدام توزيع المروحة للمهام الإضافية للمعدات الخاملة 2012 V. M. Dovgal 1، S.G.Spirin 2 1 Professor

الرسم البياني الخوارزمية والحساب المتوازي. التوازي الداخلي للبرامج. المحاضرة 3 2012/04/12 (С) L.B. Sokolinsky 1 3.1 التوازي الداخلي البرنامج يحتوي على التوازي إذا كانت بعض أجزائه (المشغلين)

وزارة التعليم والعلوم في روسيا الفيدرالية لميزانية الدولة الفيدرالية المؤسسة التعليمية للتعليم المهني العالي "جامعة سامراء الجوية بولاية سامراء التي تم تسميتها بعد الأكاديمي S.P.KOROLEV"

المحاضرة 5 5 - نظرية الوجود والتفرد لحل مشكلة كوشي لنظام عادي من وحدات ODE بيان المشكلة.

جامعة ولاية نيجني نوفغورود NI Lobachevsky كلية الرياضيات الحاسوبية وعلم التحكم الآلي مجمع تعليمي مقدمة لطرق البرمجة الموازية القسم 2. النمذجة

الفصل 5. أساليب الصيف الضمنية حلول مجديةد.

المحتويات مقدمة ... 12 الجزء الأول. أساسيات الموازاة محاضرة 1. حول صياغة مشكلة الموازاة ... 17 1.1. مقدمة 17 1.2. عن البعض مهام الحوسبة.... 19 1.3. عددي

UDC 68.3.06 - تحديد عدد وموضوعات وضع محطات نظام حوسبة متعدد المستخدمين А.V. Pogrebny Institute "Cybernetic Center" TPU البريد الإلكتروني: [بريد إلكتروني محمي]تم النظر في المهام

كتلة الاستخراج طرق ذات خطوة واحدة لحل رقمي عالي الدقة لمشكلة الكآبة Kulakov V.V. Nazarova I.A. Feldman L.P. جامعة دونيتسك التقنية الوطنية الموازية

وقائع ISA RAS ، 2008. V. 32 حول مفهوم الأداء في أنظمة الحوسبة الموزعة M. A. Posypkin ، A. S. Khritankov معهد تحليل الأنظمة التابع لأكاديمية العلوم الروسية (ISA RAS) في هذا

2007 النشرة العلمية MSTU GA 26 series فيزياء الراديو وهندسة الراديو UDC 6236: 6239 تقييم إمكانية مواءمة المشكلات المعتمدة على المعلومات في أنظمة الكمبيوتر RN AKINSHIN المقالة مقدمة

الحد الأقصى من موازاة الخوارزميات بناءً على مفهوم Q- محدد فالنتينا نيكولاييفنا أليفا جامعة ولاية جنوب الأورال (NRU) نوفوسيبيرسك ، 2015 مقدمة

وزارة التربية والعلوم الاتحاد الروسيجامعة ولاية نيجني نوفغورود ن. Lobachevsky V.P. حاسوب Gergel عالي الأداء متعدد المعالجات

LK 1. النمذجة. 1. مفاهيم أساسية. 2 مبادئ النمذجة. 3 خصائص النماذج 4 تصنيف طرق النمذجة. 5. النمذجة الرياضية 1. المفاهيم الأساسية. استبدال المحاكاة

الوكالة الاتحادية للتعليم مؤسسة تعليميةالتعليم المهني العالي "جامعة ولاية نوفوسيبيرسك" (NSU) بكلية تكنولوجيا المعلومات

جامعة ولاية نيجني نوفغورود ن. جامعة Lobachevsky للبحوث العلمية إنشاء مكتبة تعليمية للطرق المتوازية Parlib تم بواسطة: Kozinov E.A. Kutlaev M.V. اوسوكين

UDC 681.3.06 تصميم هيكل الشبكة المحلية لنظام الحوسبة الموزعة في الوقت الفعلي А.V. بوغريبني ، دي. Pogrebny Institute "Cybernetic Center" TPU البريد الإلكتروني: [بريد إلكتروني محمي]

خوارزمية موازية لطريقة الاجتياح LOOP Golovashkin DL، Filatov M.V. Institute for Image Processing Systems RAS Samara State Aerospace University Abstract العمل مكرس لـ

UDC 519.856 ؛ 519.854 ؛ 519.85 البحث الإحصائي لهياكل شبكة الكمبيوتر للمعلومات V.V. Malygin يتم التحقيق في خصائص تقارب وظيفة تقدير بنية شبكة المعلومات الحاسوبية. على

بناء خوارزميات عودية متوازية لحل مشاكل الهندسة الحسابية على أساس استراتيجية "التوزيع والقهر" V.N. Tereshchenko تعتبر الورقة أحد الأساليب لبناء فعالة

12.1. I / O حسب استطلاع الجاهزية للجهاز يتم فحص الجاهزية أو عدم توفر جهاز خارجي للإدخال / الإخراج في سجل حالة الجهاز الخارجي للإدخال / الإخراج المتحكم فيه بواسطة البرامج

تصنيف فلين Yuliya Kirillova 6057/2 22.11.11 تصنيف Flynn هو تصنيف عام لهياكل الكمبيوتر بناءً على وجود التوازي في تدفقات الأوامر والبيانات. اقترحه مايكل فلين في عام 1972.

العمل المخبري 4 حل مشكلة بواسون بطريقة جاكوبي في مجال ثلاثي الأبعاد الهدف هو التطوير العملي لطرق موازنة الخوارزميات للمشكلات التي يتم حلها بواسطة طرق الشبكة باستخدام مثال الحل

Plaksin M.A.

الجامعة الوطنية للبحوث المدرسة العليا للاقتصاد (فرع بيرم) ، بيرم ، مرشح العلوم الفيزيائية والرياضية ، أستاذ مشارك في قسم تكنولوجيا المعلومات في الأعمال التجارية ، mapl @ list. en

"SUPERCOMPUTERS" مقابل "البرمجة الموازية". "البرمجة الموازية" مقابل "الأنشطة المشتركة". كيف تدرس موضوع "الحوسبة الموازية" في المدرسة الثانوية؟

الكلمات الدالة

المعلوماتية ، البرمجة المتوازية ، الحوسبة المتوازية ، الخوارزميات المتوازية ، الحواسيب العملاقة ، المدرسة الابتدائية ، المدرسة الثانوية ، TRIZformashka.

حاشية. ملاحظة

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

ترتبط المرحلة الحالية في تطوير علوم الكمبيوتر بالانتشار الهائل للحوسبة المتوازية على جميع المستويات (مجموعات متعددة الآلات ، وأجهزة كمبيوتر متعددة المعالجات ، ومعالجات متعددة النواة).

الانتشار الهائل للتزامن له عواقب وخيمة لم يتم تحديدها وتحليلها بعد. لنبدأ بسرد بعض المشاكل النظرية.

تم إنشاء النظرية الحديثة للخوارزميات بناءً على مفهوم الخوارزمية المتسلسلة. كيف سيتأثر مفهوم الخوارزمية برفض طلب سلسلة من الخطوات؟

على مدار العشرين عامًا الماضية على الأقل ، تم إدخال مفهوم "الخوارزمية" في المدرسة في ارتباط وثيق بمفهوم "المنفذ". بالنسبة للخوارزمية المتسلسلة ، هذا طبيعي. ماذا عن الخوارزمية المتوازية؟ هل يؤديها فنان واحد أم مجموعة من المؤدين؟ للتجسيد ، كمثال ، ضع في اعتبارك برنامج التدريب على الكمبيوتر "Tank Crew". في هذا البرنامج ، يُطلب من الطالب برمجة تصرفات طاقم الدبابة المكون من ثلاثة أشخاص: مدفعي وسائق ومحمل. كل واحد منهم لديه نظام قيادة خاص به. من أجل إكمال المهمة القتالية (إصابة جميع الأهداف) ، يجب أن يعمل جميع أفراد الطاقم في تناسق. يظهر في الشكل 1 مثال على ساحة اللعب لبرنامج "Tank Crew".

سؤال: هل ينبغي اعتبار هؤلاء الممثلين الثلاثة كفنانين مستقلين أم أنهم ثلاثة أجزاء (أجهزة) لفناني أداء معقد واحد؟ بالنسبة لطاقم الدبابة ، يبدو الخيار الثاني أكثر طبيعية ، حيث لا يمكن لشخصية واحدة إكمال المهمة بمفردها. ولكن ماذا لو كانت اللعبة معقدة ، والمهمة القتالية محددة لدبابتين في وقت واحد؟ لثلاث دبابات؟ يمكن اعتبار ثلاثة أعضاء من طاقم واحد على أنهم ثلاثة أجزاء من فنان واحد. لكن من الواضح أن كل طاقم مؤدٍ مستقل. هذا يعني أنه سيتم تنفيذ خوارزمية متوازية للعديد من الدبابات على الفور من قبل مجموعة من المؤدين. اتضح أنه بالنسبة للخوارزمية الموازية ، يجب النظر في كلا الاحتمالين: تنفيذ الإجراءات المتوازية من قبل فنان واحد ومجموعة من المؤدين. في حالة وجود طاقم دبابة ، من السهل رسم الحدود. المنفذ هو الشخص القادر على حل المهمة. قد يتكون هذا المنفذ من عدة مكونات ، كل منها يؤدي جزءًا معينًا من المهمة ، ولكن لا يمكنه إكمال المهمة بأكملها بشكل مستقل دون مساعدة المكونات الأخرى. ولكن ما إذا كان الفصل بين "فناني الأداء الكامل" وأجزاء من مؤدي معقد سيكون دائمًا بهذه البساطة - من المستحيل تحديد ذلك الآن.

ملف 1 * ra Window About

Vpoliet كل شيء

Bbno.n "fTb للخط المحدد

العودة إلى الصفحة الأولى **

خطوة بخطوة (بعد تنفيذ ".lady command no ^" سوف تضغط على الزر gV ygolg "p-b next uwr")

يو lgvd iTHWTt. خطوة خاصة

تعلم خطوة بخطوة

رسم بياني 1. جزء من ملعب برنامج "Tank Crew"

يتطلب اختيار أجزاء المؤدي القادرة على العمل المستقل بعض الأسماء لهذه الأجزاء. علاوة على ذلك ، يجب أن يسمح الاسم بالعودة ، حيث يمكن أن يكون للأجزاء النشطة من المؤدي بنية معقدة.

من الضروري الاتفاق على مصطلح للدلالة على مجموعة من فناني الأداء التعاوني. مصطلح "فريق" غير مناسب ، فهو مرتبط بـ "نظام أوامر المنفذ" و "الأوامر وحدة المعالجة المركزية". "فريق من المؤدين"؟ "لواء فناني الأداء"؟

الشيخ الخوارزمية

ن ضرب 1 "؛ سائق محمل

1 بوق الموت * بواسطة "master sgcll V Stop V Charge 1

g Pci V Stop V Charge 2

3 اختيار! V يدور في اتجاه عقارب الساعة 90 درجة V شحن 1 فولت

تحميل L V V persh V؟ الخامس

5 حريق! V Stop V Charge 1

Í P ^ chm V St * p V Zaryas؟ الخامس

7 حريق! V Stop V Charge 1 فولت

3 Pa ^ V استدر في اتجاه عقارب الساعة 45 درجة V الشحن 2 فولت

S وقفة V أول V وقفة V

10 Pvdea V Forward V وقفة ¿د

11 خلط V للأمام V إيقاف مؤقت V

12 Paum V استدر في اتجاه عقارب الساعة 45 درجة V وقفة V

13 وسادة V للأمام V وقفة V

14 V n & stpHyTbtft ثم أغلق السهم بمقدار 45 درجة V.

الصورة 2. جزء من برنامج "Tank Crew" (مثال على سطور الأوامر) يحتاج المفهوم التقليدي "لنظام أوامر المنفذ" (SCI) ومفهوم الأمر نفسه إلى التحسين. إذا اعتبرنا أن ثلاثة أعضاء من طاقم الدبابة يشكلون مؤديًا واحدًا ، فما الذي يجب اعتباره SKI لهذا المؤدي؟ وماذا يعتبر الفريق؟ أو ترك مفهوم SKI لكل شخصية؟ أي أن هذا لم يعد نظام أوامر من المنفذ ، بل نظام أوامر لأحد مكونات المنفذ (الذي لا يوجد اسم له بعد)؟

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

من بين خصائص الخوارزميات ، تبرز خاصية جديدة مهمة عمليًا: القدرة على الموازاة. السؤال التوضيحي يدور حول الدرجة المحتملة للتوازي (إلى أي مدى يكون من المنطقي زيادة عدد المعالجات عند تنفيذ هذه الخوارزمية).

هناك مسألة منفصلة تتمثل في طرق الموازنة بين الخوارزميات المتسلسلة الموجودة بالفعل.

حتى وقت قريب ، كانت البرمجة الموازية حكراً على عدد صغير من مبرمجي الأنظمة ذوي المهارات العالية. اليوم أصبح جزءًا من الكفاءة المهنية. لكن تقنية البرمجة المتوازية تختلف اختلافًا كبيرًا عن البرمجة التسلسلية التقليدية. دعماً لهذا التأكيد ، بعد L.L. Bosovaya ، سنقتبس من أكبر متخصص روسي في مجال الحوسبة المتوازية V.V. فويفودينا:

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

"من المهم فقط أن يتعلم الطالب في أقرب وقت ممكن أن هناك طرقًا أخرى لتنظيم العمليات الحسابية ، وليس فقط التنفيذ المتسلسل" العملية بعد العملية "، وأن أقوى تقنية كمبيوتر حديثة مبنية على هذه الأساليب الأخرى ، وهذا فقط هذه التكنولوجيا يمكن أن تحل مشاكل كبيرة. المهام الصناعية والعلمية ، إلخ. من المهم ، أولاً وقبل كل شيء ، لفت انتباه الطلاب في أقرب وقت ممكن إلى الحاجة إلى موقف نقدي لفلسفة الحوسبة المتسلسلة. بعد كل شيء ، يجب أن يتعاملوا مع هذه الفلسفة طوال فترة تعليمهم ، سواء في المدرسة أو في الجامعة. وهذه الفلسفة بالتحديد هي التي تعيق فهم خصوصيات العمل على أجهزة الكمبيوتر ذات العمارة المتوازية ".

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

قبل ثلاثين عامًا ، تطلبت بداية الحوسبة الجماعية للإنتاج زيادة في المستوى محو الأمية الحاسوبيةسكان. أدى ذلك إلى إدخال دورة علوم الكمبيوتر في المناهج الدراسية في عام 1985. لكن دورة علوم الكمبيوتر في النسخة السوفيتية (لاحقًا بالروسية) لم تقتصر على "علوم الكمبيوتر الزر" - لإتقان تقنية العمل مع الحزم برامج التطبيقاتوألعاب الكمبيوتر. بدأ في تغيير أسلوب تفكير جيل الشباب. بادئ ذي بدء ، يتعلق الأمر بالخوارزمية والدقة والصرامة. ثم تضمنت دورة المعلوماتية عناصر المنطق وتحليل النظام. في وقت لاحق ، كل هذا سهل إلى حد كبير توزيع ما هو ضروري في القرن الحادي والعشرين. نهج المشروع. الآن نحن نتحدث عن حقيقة أنه خلال العقد القادم ، يجب أن تصبح الخوارزميات المتوازية

عنصر الثقافة العامة للتفكير. سؤال: كيف سيؤثر تطوير مفهوم الخوارزمية الموازية على تفكير الجيل القادم ، ما الذي ستؤدي إليه إعادة هيكلة الوعي "بطريقة موازية"؟

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

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

اليوم ، تطور الوضع بحيث يرتبط موضوع الحوسبة الموازية في المدرسة الثانوية بشكل أساسي بموضوع الحواسيب العملاقة. يركز مؤلفو التطورات المنهجية المختلفة على أجهزة الكمبيوتر العملاقة على الطلاب ، حتى عندما لا يكون ذلك ضروريًا. يكفي أن نقول إن القسم المقابل في مجلة "Computer Science at School" يسمى "Supercomputer Education at School". هذا الوضع له جوانب إيجابية وسلبية. ضمن الجوانب الإيجابيةيجب أن يسمى:

الاهتمام الذي يثير في المجتمع ، بما في ذلك بين الطلاب ، موضوع أجهزة الكمبيوتر العملاقة. يكرر هذا الاهتمام على المستوى الحديث الاهتمام الذي كان سببًا منذ نصف قرن بسبب الآلات الكبيرة - أجهزة الكمبيوتر العملاقة في عصرها ؛

الدعم التنظيمي من مجتمع الحوسبة الفائقة. في كل صيف ، تستضيف كلية الرياضيات الحاسوبية وعلم التحكم الآلي في جامعة موسكو الحكومية أكاديمية الكمبيوتر العملاق الصيفية. وفي كل صيف ، في إطار هذه الأكاديمية ، يتم تنظيم مسار مدرسي لمدرسي علوم الكمبيوتر. يتم توفير التدريب مجانًا. يتم تزويد الطلاب من المدن الأخرى بالسكن بشروط مواتية للغاية. في مؤتمر أيام الحوسبة الفائقة الروسية في سبتمبر 2015 ، تم تنظيم قسم مدرسي وفصل ماجستير لمعلمي علوم الكمبيوتر. أدى العمل التنظيمي المتسق إلى تحديد وتشكيل مجموعة من المعلمين المهتمين بالترويج لهذا الموضوع ؛

وجود قائد كاريزمي لامع ، وهو فلاديمير فالنتينوفيتش فويفودين - دكتور في العلوم الفيزيائية والرياضية ، وأستاذ ، وعضو مراسل في الأكاديمية الروسية للعلوم ، ونائب مدير مركز أبحاث الحوسبة بجامعة موسكو الحكومية ؛

الاهتمام والدعم (بما في ذلك المواد) من المكتب التمثيلي الروسي لشركة Intel وإيجور أوليجوفيتش أودينتسوف ، مدير التطوير الاستراتيجي لشركة Intel.

عيب نهج "الكمبيوتر العملاق" هو ​​تضييق موضوع الحوسبة المتوازية. أجهزة الكمبيوتر العملاقة نفسها ، كقاعدة عامة ، ليست متاحة لأطفال المدارس (باستثناء أنه في المدن الكبيرة يمكنك التحديق عليهم في الرحلات). المهام التي يهدفون إلى حلها معقدة للغاية بالنسبة لأطفال المدارس ، وفي معظم الحالات ، ليس لها أهمية عملية مباشرة وليست ذات فائدة عملية.

الامتداد الطبيعي لموضوعات الحوسبة الفائقة هو دراسة البرمجة المتوازية. في الوقت الحاضر ، ليس من الضروري على الإطلاق أن يكون لديك كمبيوتر عملاق لتنفيذ برامج متوازية. يكفي معالج متعدد النواة أو بطاقة فيديو مع مجموعة من مسرعات الرسومات. وهو متاح للجميع تقريبًا. من الأعمال في هذا الاتجاه ، نلاحظ أطروحة المرشح ماجستير. سوكولوفسكايا حول منهجية تعليم معلمي المعلوماتية المستقبليين أساسيات البرمجة المتوازية وتجربة E.Yu. Kiseleva على تطوير تكنولوجيا CUDA من قبل أطفال المدارس.

وفقًا لمؤلف هذا المقال ، فإن التركيز على أجهزة الكمبيوتر العملاقة والبرمجة الموازية يؤدي بشكل كبير إلى إفقار موضوع الحوسبة الموازية وتعقيده ، ويشتت انتباه الطلاب عن العديد من المشكلات المهمة التي يمكن الوصول إليها. الغرض من موضوع "موازية

الحوسبة "في المدرسة الثانوية لا تقوم بتدريس البرمجة الموازية" الحقيقية "(تعلم تراكيب اللغة ذات الصلة ولغات البرمجة والتقنيات) ، ولكن تعريف الطلاب بمجموعة المفاهيم المقابلة وفهم ميزات العمل الموازي. العالم من حولنا وداخلنا هو نظام مواز معقد. وهذا النظام في حد ذاته يوفر الكثير من المواد لإتقان مفاهيم وآليات التوازي. ليست هناك حاجة إلى هياكل اصطناعية معقدة مثل تقنيات MPI و OpenMP لهذا الغرض. يجب أن تقوم علوم الكمبيوتر بالمدرسة بتعليم التفكير المضبوط "بطريقة موازية". ثم دع الجامعة تضع المعرفة والمهارات والقدرات المهنية في هذا التفكير. في المدرسة ، من المنطقي التأكيد على عدم التعارف مع أجهزة الكمبيوتر العملاقة ودراسة البرمجة الموازية ، ولكن على تطوير آليات "النشاط المشترك" التي يتم استخدامها باستمرار وعلى نطاق واسع في الحياة. ستتناول الدورة الأسئلة التالية:

1) عمل مشترك لعدة فنانين (حفر حفرة بواسطة عدة حفارين) والتوازي "داخل" أحد الفنانين في وجود عدة أجهزة معالجة (أقرأ وأكل تفاحة). في علوم الكمبيوتر ، سيكون هذا مجمعًا متعدد الأجهزة ومعالجًا متعدد النواة.

2) أنواع التوازي: التوازي الحقيقي والتوازي الزائف (معالج واحد ينفذ عدة برامج في أجزاء).

3) المؤدون من نفس النوع (حفارون) وأنواع مختلفة (طاقم الدبابة).

4) الأعمال من نفس النوع وأنواع مختلفة.

5) نسبة "المؤدين - الوظائف": 1 مؤدي - وظيفة واحدة ، فنان واحد - وظائف N (تنفيذ شبه متوازي أو توازي حقيقي في وجود العديد من أجهزة المعالجة لوظائف مختلفة) ، N Performers - وظيفة واحدة ، N Performers - وظائف N.

6) تنسيق أنشطة فناني الأداء. أنواع التنسيق: حسب أجزاء العمل ، والوقت ، ونتائج الأنشطة ، والموارد.

7) الموارد. الموارد مشتركة وغير مشتركة وقابلة للاستهلاك وقابلة لإعادة الاستخدام. التخلص من الموارد المستهلكة ("جمع القمامة" بالمعنى الواسع).

8) أداء نفس العمل من قبل فنان واحد ومجموعة من المؤدين. اعتماد سرعة العمل على عدد المؤدين. اعتماد تكلفة العمل على عدد المؤدين. زيادة سرعة العمل غير الخطية مع زيادة عدد المؤدين. المسار الحرج. العدد الأمثل لفناني الأداء. التحميل الأمثل لفناني الأداء. مسار العمل الأمثل. توزيع الحمل.

9) منافسة فناني الأداء على الموارد. المنع. الحسم (طريق مسدود).

10) آليات تنسيق أعمال فناني الأداء.

11) التنفيذ الزائف المتوازي للعمليات على الكمبيوتر (الفصل بين عمليات المنفذ لمورد واحد - المعالج).

12) ملاءمة الخوارزميات للتوازي. الدرجة الممكنة من الموازاة. وجود خوارزميات لا يمكن موازنتها.

لاحظ أن القائمة أعلاه هي الرأي الشخصي لمؤلف المقال وهي مفتوحة للنقاش والإضافات والتصحيحات. علاوة على ذلك ، وفقًا للمؤلف ، سيكون من المفيد جدًا "لمجتمع الحواسيب العملاقة" صياغة "نظام اجتماعي" للمدرسة: أي نوع من المهارات - المعرفة - المهارات التي يريد أن يراها في خريجي المدارس. كيف يجب أن يختلف خريج مدرسة "عالم الكمبيوتر العملاق" عن خريج اليوم؟ سيكون هناك طلب - ستكون هناك نتيجة. مثال جديد. في اليوم الأول من أيام الحوسبة الفائقة الروسية -2015 ، أعرب تقريران عن فكرة أن سرعة أجهزة الكمبيوتر العملاقة الحديثة لا تحددها قوة المعالجات (التي تحتل مركز الاهتمام العام) ، ولكن من خلال سرعة ذاكرة الوصول العشوائي. هي التي تصبح عنق الزجاجة ، الذي يحدد إنتاجيته إنتاجية النظام بأكمله. نتيجة لذلك ، في اليوم الثاني من المؤتمر ، ركض المشاركون في الفصل الرئيسي للمدرس في لعبة اخترعها مؤلف هذا المقال ، والتي توضح تفاعل المعالج المركزي وذاكرة الوصول العشوائي وذاكرة التخزين المؤقت. يعتبر ترتيب وشكل عرض المواد سؤالاً مفتوحًا.

يجب عرض المادة باستخدام أمثلة لا تتعلق بتشغيل الكمبيوتر. يجب على فناني الأداء معالجة الأشياء المادية.

يجب أن يكون أكبر قدر ممكن من التدريب في طبيعة ألعاب الأعمال (التنظيمية والنشاطية).

سيؤدي استيفاء هذه المتطلبات إلى تبسيط فهم المادة المدروسة. سيكون هذا مفيدًا عند استخدام هذه التقنية في دروس علوم الكمبيوتر في المدرسة (بما في ذلك الدروس الابتدائية!) ، وعند تعليم الكبار: مدرسو علوم الكمبيوتر والطلاب. سيتمكن تلميذ المدرسة أو مدرس المدرسة أو طالب تخصص غير أساسي من التوقف عند مستوى الإلمام والفهم. يجب على الطالب المحترف اتخاذ الخطوة التالية والانتقال من التعارف إلى دراسة هذه الآليات على المستوى المهني. لكن هذه بالفعل خطوة أبعد من منهجية التعارف الأولي مع الموضوع.

بدأ مؤلف هذا المقال العمل على إعداد منهجية لدراسة الحوسبة المتوازية في عام 2013 أثناء التحضير لمسابقة TRIZformashka-2013 واستمرت في السنوات اللاحقة.

("TRIZformashka" هي مسابقة أقاليمية على الإنترنت في مجال المعلوماتية وتحليل النظام و TRIZ. تُعقد سنويًا في النصف الثاني من شهر آذار / مارس. عمر المشاركين - من الصف الأول إلى الصف الرابع. الجغرافيا - من فلاديفوستوك إلى ريغا. متوسط ​​عدد المشاركين - 100 فرق (300 شخص) بحد أقصى 202 فريق (أكثر من 600 شخص) موقع المسابقة هو www. trizformashka. ru) ثم في عام 2013 تم صياغة هدف العمل على النحو التالي:

1. في غضون سنتين إلى ثلاث سنوات ، قم بإعداد وصف لفناني الأداء ومجموعة من الألعاب والمهام المتعلقة بالحوسبة المتوازية ؛

2. عرضها (على أجزاء ، سنويًا) للمشاركين في المسابقة ؛

3. تحليل رد فعلهم (تقدير عدد صناع القرار ، وأعمارهم ، ونجاح الحل ، أخطاء نموذجية، اكتشف عدم الدقة في صياغة المهام ، وما إلى ذلك). تحولت مسابقة TRIZformashka إلى أداة ملائمة لتصحيح الأخطاء منذ ذلك الحين

جعل من الممكن الحصول على رد فعل من جميع الأعمار (من الصف الأول إلى الصف الرابع) ، من مناطق مختلفة ، من مختلف المؤسسات التعليمية.

على مدى السنوات الماضية ، تم إعداد المجموعة التالية من الأدوات والمنصات المنهجية لاختبارها.

1. أدرجت مهام التوازي ، بدءًا من عام 2013 ، في مسابقة TRIZformashka (بدءًا من عام 2013 ، تحمل المنافسة العنوان الفرعي "الحوسبة المتوازية"). قائمة أنواع الوظائف معطاة أدناه ؛

2. تم إعداد فصل عن التوازي للإصدار الجديد من كتاب علوم الكمبيوتر للصف الرابع. تم اختبار المادة في الصفين الثالث والرابع من المدرسة الثانوية رقم 10 في بيرم ؛

3. تم تطويره واستخدامه في مسابقة TRIZformashka منذ عام 2014 لعبة كومبيوتر"طاقم الدبابة" ؛

4. تم تطوير واختبار عدد من الألعاب التي تعكس القضايا التالية:

تنسيق أنشطة فناني الأداء. أنواع مختلفة من الاتفاقات ؛

أداء نفس العمل من قبل فنان واحد ومجموعة من فناني الأداء. اعتماد سرعة العمل على عدد المؤدين. زيادة سرعة العمل غير الخطية مع زيادة عدد المؤدين. المسار الحرج. العدد الأمثل لفناني الأداء. التحميل الأمثل لفناني الأداء. مسار العمل الأمثل ؛

موارد. الموارد مشتركة وغير مشتركة ؛

المؤدون المتنافسون على الموارد. المنع. الحسم (طريق مسدود). تم اقتراح واختبار الأنواع التالية من المهام:

1. مهام لأنواع التنسيق. (ما هي أنواع التنسيق الموجودة في كافيتريا المدرسة؟) ؛

2. لعبة "Tank Crew". مهمة لبناء خوارزمية موازية ؛

3. مؤدي "البناء". تقوم فرق العمل في نفس الوقت ببناء هيكل من الحزم الأفقية والعمودية. تشمل المهام مهام تنفيذ الخوارزمية المحددة ، لتطوير خوارزمية جديدة ، للعثور على أخطاء في خوارزمية معينة ، لدراسة الخوارزميات (مقارنة أوقات البناء للخوارزميات المختلفة ، مقارنة تكاليف البناء ، تقييم الاحتمالية من الادخار من خلال إعادة توزيع العمالة ، وما إلى ذلك) ؛

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

5. مخطط الشبكة. بالنظر إلى مخطط الشبكة. مطلوب تصوير (تخطيطيًا) الهيكل الذي سيتم بناؤه ، لتحديد عدد الأيام التي سيستغرقها البناء مع عدد معين من الفرق ، وأي جزء من العمل سيتم الانتهاء منه في وقت معين ؛

6. الأشكال المتدرجة المتوازية. تخطيط العمل وفق معايير مختلفة. يتم تحديد مهمة العمل وإنتاجية العمال وقواعد الدفع. مطلوب تحديد عدد العمال اللازمين لإكمال العمل في وقت معين ، لتحديد فترة العمل لعدد معين من العمال ، لتحديد عدد العمال اللازمين لتقليل تكلفة العمل ؛

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

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

حتى الآن لدينا النتائج التالية:

1. تمت صياغة نهج لدراسة موضوع "الحوسبة المتوازية": ليس الانتقال من مشاكل علوم الكمبيوتر ، ولكن "من الحياة" ، للتركيز على "الأنشطة المشتركة" ؛

2 - تمت صياغة قائمة بالمسائل المقترح إدراجها في المسار الأولي للحوسبة المتوازية ؛

3. تمت صياغة بعض أصناف المشاكل. بناءً على الخبرة المتراكمة ، من الممكن تقييم نوع المهام التي تستحق الاختراع ؛

4. تم إعداد مجموعة من المهام للفئات المسماة. تم اختبار المهام في مسابقات TRIZformashka للأعوام 2013 و 2014 و 2015. و / أو في المدرسة الابتدائية (في الفصول مع طلاب الصف الثالث أو الرابع من مدرسة ليسيوم رقم 10 في بيرم) ؛

5. تم إعداد مجموعة من الألعاب التجارية. تم اختبار الألعاب في المدرسة الابتدائية وفي عدد من الأحداث للمعلمين. على وجه الخصوص ، تم تقديمها على المسار المدرسي لأكاديمية الحوسبة الفائقة الصيفية التابعة لـ VMK MSU في عام 2014 ، في الفصل الرئيسي للمعلمين في أيام الحوسبة الفائقة الروسية -2015 ، في العديد من المؤتمرات الأخرى (بما في ذلك مؤتمر IT-0education-2015 لـ رابطة APKIT) وغيرها من الأحداث لمعلمي علوم الكمبيوتر ؛

6. تم إعداد مجموعة من النصوص حول التوازي لكتاب الصف الرابع. تم اختبار النصوص في مدرسة ليسيوم رقم 10 في بيرم.

7. تم إعداد لعبة كمبيوتر "تانك كرو". تم اختبار اللعبة في مسابقات TRIZformashka 2014 و 2015 ؛

8. مسابقة "TRIZformashka" بررت نفسها على أنها منصة قبول ؛

9. تمت صياغة مهمة "التبييت" في عملية تعلم الخوارزمية: لتعليم البرمجة المتوازية في وقت واحد ، تمثل خوارزمية متسلسلة كجزء من خوارزمية موازية. هناك أفكار حول كيفية تحقيق هذه الفكرة. هناك فرصة لتجربة هذه الأفكار خلال العام الدراسي الحالي (للطلاب في الصفوف 4-5) ؛

10. هناك حاجة ورغبة وفرصة لمواصلة العمل.

الأدب

1. الخوارزمية: الصفوف 5-7: الكتاب المدرسي وكتاب المشكلة للتعليم العام. المؤسسات التعليمية / A.K. زفونكين ، أ. كولاكوف ، س. لاندو ، أ. سيمينوف ، أ. شين. - م: بوستارد ، 1996.

2. Bosova L.L. الخوارزميات الموازية في المدارس الابتدائية والأساسية. // علوم الكمبيوتر في المدرسة. 2015 ، رقم 2. الجزء 24 - 27.

3. Voevodin V.V. الرياضيات الحسابية وهيكل الخوارزميات: 10 محاضرات عن سبب صعوبة حل المشكلات في أنظمة الحوسبة ذات العمارة المتوازية وما تحتاج إلى معرفته بشكل إضافي. للتغلب على هذه الصعوبات بنجاح: كتاب مدرسي. موسكو: دار نشر جامعة موسكو الحكومية 2010.

4. Gavrilova I.V. الرحلة الأولى إلى "العالم الموازي". // علوم الكمبيوتر في المدرسة. 2015 ، رقم 6. ص 16 - 19.

5. ديتر إم إل ، بلاكسين إم إيه. الحوسبة الموازية في المعلوماتية المدرسية. لعبة البناء. // المعلوماتية في المدرسة: الماضي والحاضر والمستقبل: مواد لعموم روسيا. طريقة علمية. أسيوط. حول استخدام تكنولوجيا المعلومات والاتصالات في التعليم ، 6-7 فبراير 2014 / بيرم. ولاية نات. بحث un-t. - بيرم ، 2014. - S.258-261.

6. Ivanova N.G.، Plaksin M.A.، Rusakova O.L. TRIZform. //علوم الكمبيوتر. N05 تم استرجاعه في 10/10/2015.

14. Plaksin M.A. المعلوماتية: كتاب مدرسي للصف الرابع: في ساعتين / MA Plaksin ، N.G. Ivanova ، O.L. Rusakova. - م: بينوم. معمل المعرفة ، 2012.

15. Plaksin M.A. حول طريقة التعارف الأولي مع الحوسبة المتوازية في المدرسة الثانوية. // المعلوماتية في المدرسة: الماضي والحاضر والمستقبل: مواد لعموم روسيا. طريقة علمية. أسيوط. حول استخدام تكنولوجيا المعلومات والاتصالات في التعليم ، 6-7 فبراير 2014 / بيرم. ولاية نات. بحث un-t. - بيرم ، 2014. - S.256-258.

16. Plaksin M.A. مجموعة من ألعاب الأعمال للتعرف على الحوسبة الموازية في المدرسة الابتدائية. // تدريس تكنولوجيا المعلومات في الاتحاد الروسي: مواد المؤتمر المفتوح الثالث عشر لعموم روسيا "تعليم تكنولوجيا المعلومات - 2015" (بيرم ، 14-15 مايو ، 2015). جامعة بيرم الحكومية الوطنية للبحوث ، - بيرم ، 2015. ص 60-62.

17. Plaksin M.A.، Ivanova N.G.، Rusakova O.L. مجموعة من المهام للتعرف على الحوسبة الموازية في مسابقة "TRIZformashka". // تدريس تكنولوجيا المعلومات في الاتحاد الروسي: وقائع المؤتمر الثالث عشر المفتوح لعموم روسيا "تعليم تكنولوجيا المعلومات - 2015" (بيرم ، 14-15 مايو ، 2015). جامعة بيرم الحكومية الوطنية للبحوث ، بيرم ، 2015 ، ص 232-234.

18. سوكولوفسكايا م. النظام المنهجي لتعليم أساسيات البرمجة الموازية لمعلمي المعلوماتية المستقبليين: دكتوراه. ديس. ... كان. بيد. العلوم ، كراسنويارسك ، 2012.

مفهوم الحوسبة المتوازية

أساسيات الحوسبة الموازية

محاضرة # 6


تحت الحوسبة المتوازية (الحسابات المتوازية أو المتزامنة)يمكنك فهم عمليات حل المشكلات التي يمكن فيها إجراء العديد من العمليات الحسابية في وقت واحد في نفس الوقت

تشكل الحوسبة المتوازية أساس تقنيات الحواسيب العملاقة والحوسبة عالية الأداء

المعالجة المتوازية

إذا أجرى جهاز معين عملية واحدة لكل وحدة زمنية ، فسيقوم بإجراء ألف عملية في ألف وحدة. إذا افترضنا أن هناك خمسة أجهزة مستقلة من هذا القبيل يمكنها العمل في وقت واحد ، فإن نظام خمسة أجهزة يمكن أن يؤدي نفس الألف عملية ليس في ألف ، ولكن في مائتي وحدة من الوقت.

وبالمثل ، فإن نظام الأجهزة N سوف يقوم بنفس المهمة في 1000 / N وحدة زمنية. يمكن العثور على تشابهات مماثلة في الحياة: إذا قام جندي ما بحفر حديقة في 10 ساعات ، فإن مجموعة مكونة من خمسين جنديًا لديهم نفس القدرات ، تعمل في وقت واحد ، ستقوم بنفس الوظيفة في 12 دقيقة - مبدأ التوازي في العمل!

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

كان هناك الكثير من العمل ، وتعبت السيدات ، وسار ألكسندر أندريفيتش بينهما وشجعهن. يمكن القول أن هذا كان أول نظام موازٍ. على الرغم من أن حسابات القنبلة الهيدروجينية تم إجراؤها ببراعة ، إلا أن دقتها كانت منخفضة جدًا ، لأن الشبكة المستخدمة بها عدد قليل من العقد ، ووقت الحساب كان طويلاً للغاية.

· نقل

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

افترض أنه يمكن تقسيم العملية إلى خمس عمليات صغيرة ، يتم تنفيذ كل منها في وحدة زمنية واحدة. إذا كان هناك جهاز تسلسلي واحد غير قابل للتجزئة ، فسيقوم بمعالجة 100 زوج من الوسائط لـ 500 وحدة. إذا تم فصل كل عملية دقيقة إلى مرحلة منفصلة (أو بطريقة أخرى يقولون - مرحلة) من جهاز ناقل ، فعندئذ في الوحدة الخامسة من الوقت في مرحلة مختلفة من معالجة مثل هذا الجهاز ، فإن أول خمسة أزواج من الوسائط سوف سيتم العثور عليها ، وستتم معالجة المجموعة الكاملة المكونة من مائة زوج في 5 + 99 = 104 وحدة زمنية - وهو تسارع مقارنة بجهاز متسلسل بمقدار خمس مرات تقريبًا (وفقًا لعدد خطوات خط الأنابيب).



نماذج الحواسيب المتوازية (تصنيف فلين)

"تعليمات فردية مفردة" (SISD - "بيانات فردية تعليمات فردية")

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

"دفق تعليمات واحد - العديد من تدفقات البيانات" (SIMD - "تعليمات فردية - بيانات متعددة")

SIMD (تعليمات فردية ، بيانات متعددة)- مبدأ الحوسبة الحاسوبية التي تسمح بالتوازي على مستوى البيانات. تتكون أجهزة كمبيوتر SIMD من معالج أوامر واحد (وحدة تحكم) ، يسمى وحدة التحكم ، والعديد من وحدات معالجة البيانات ، تسمى عناصر المعالج. تستقبل وحدة التحكم الأوامر وتحللها وتنفذها.

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

"تعليمات متعددة - بيانات مفردة" (MISD - "تعليمات متعددة - بيانات مفردة")

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

يتم استدعاء صفيفات PEs ذات الوصلات المباشرة بين PEs القريبة الانقباضي. هذه المصفوفات فعالة للغاية ، لكن كل منها يركز على حل فئة ضيقة جدًا من المشكلات. ضع في اعتبارك كيف يمكنك بناء مصفوفة انقباضية لحل بعض المشكلات. دعنا ، على سبيل المثال ، مطلوب إنشاء جهاز لحساب المصفوفة D = C + AB، أين

هنا جميع المصفوفات هي مصفوفات شريطية ، من أجل ن. مصفوفة أقطري واحد فوق وقطرين أسفله الرئيسي ؛ مصفوفة ب- قطري واحد أدناه وقطران فوق الرئيسي ؛ مصفوفة جثلاثة أقطار فوق وتحت الرئيسي. دع كل PE يمكنه إجراء عملية عددية ج + أبونقل البيانات في نفس الوقت. لذلك ، يجب أن يكون لكل PE ثلاثة مدخلات: أ ، ب ، جوثلاثة نواتج: أ ، ب ، ج. مدخل ( في) وعطلات نهاية الأسبوع ( خارج) البيانات مرتبطة بالعلاقات

أ خارج = أ في ، ب خارج = ب في ، ج خارج = ج في + أ في * ب في ؛

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

المصفوفة تعمل في دورات. لكل دورة ، يتم نقل جميع البيانات إلى العقد المجاورة في الاتجاهات المشار إليها بواسطة الأسهم.

يوضح الشكل حالة الصفيف الانقباضي في وقت ما. في الدورة التالية ، ستنتقل جميع البيانات إلى عقدة وعناصر واحدة أ 11 ، ب 11 ، ج 11سيكون في PE واحد يقع عند تقاطع الخطوط المتقطعة. لذلك ، سيتم تقييم التعبير c11 + a11b11في نفس الدورة البيانات أ 12و ب 21اقترب من PE الموجود في الجزء العلوي من الصفيف الانقباضي.

في الدورة التالية ، ستتحرك جميع البيانات مرة أخرى عقدة واحدة في اتجاه الأسهم وستكون في PE العلوي أ 12و ب 21ونتيجة العملية السابقة لـ PE الموجودة أدناه ، أي c11 + a11b11. لذلك ، سيتم تقييم التعبير c11 + a11b11 + a12b21. هذا عنصر د 11المصفوفات د.

بالاستمرار في النظر في العملية بدورة بضربة ، يمكننا التأكد من أنه عند مخرجات PE ، المقابلة للحد الأعلى للصفيف الانقباضي ، يتم إخراج عناصر المصفوفة بشكل دوري بعد ثلاث دورات. د، مع ظهور عناصر من نفس القطر عند كل مخرج. تقريبا من خلال 3nدورات ، سيتم الانتهاء من حساب المصفوفة بأكملها د. في هذه الحالة ، يكون عبء العمل لكل خلية انقباضية مساويًا بشكل مقارب 1/3 .

"العديد من تدفقات التعليمات - العديد من تدفقات البيانات" (MIMD - "تعليمات متعددة - بيانات متعددة")

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

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

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

مقدمة

كانت نهاية عصر الأحجار ذات 32 بت تقترب ، وكان من الواضح أنه كان من الضروري زيادة ليس فقط القوة ، ولكن أيضًا عمق البت. واجه مصممو المعالجات عددًا من التحديات في الزيادة تردد الساعة: من المستحيل تبديد الحرارة الناتجة عن البلورة ، من المستحيل تقليل حجم الترانزستورات بشكل أكبر ، ومع ذلك ، كانت المشكلة الرئيسية هي أنه مع زيادة تردد الساعة ، لم تزد سرعة البرامج. كان السبب في ذلك هو العمل الموازي للحديث أنظمة الكمبيوتر، ومعالج واحد ، مهما كانت قوته ، يمكنه أداء مهمة واحدة فقط في كل مرة. على سبيل المثال ، لدي 119 عملية تعمل على نظام Windows 7 الخاص بي في وقت كتابة هذا التقرير. على الرغم من عدم وجودهم جميعًا في الخلفية ، إلا أنهم لا يحتاجون جميعًا إلى طاقة عالية. على حجر واحد ، يمكن أن يكون تنفيذ العديد من العمليات / الخيوط تنافسية فقط. أي ، عملهم يتناوب: بعد أن يكمل خيط معين وقته الكمي ، والذي ينفذ خلاله الحمولة ، سيتم تخزين حالته الحالية في الذاكرة ، وسيتم تفريغه من المعالج واستبداله بالخيط التالي في التنفيذ قائمة الانتظار - سيحدث تبديل السياق الذي يضيع وقتًا ثمينًا. في غضون ذلك ، يتم تبادل البيانات بين المعالج وذاكرة الوصول العشوائي ، بسبب محدودية عرض النطاقمعالج دقيق لنظام ناقل النظام يدخن البامبو بعصبية ، في انتظار البيانات على الهامش. الأجهزة والبرامج (على سبيل المثال ، من نظام التشغيل) يمكن للمجدولين أن ينقذوا من أجل تحميل البيانات في ذاكرة التخزين المؤقت. ومع ذلك ، فإن حجم ذاكرة التخزين المؤقت محدود للغاية ، لذا لا يمكن أن يكون هذا الحل بمثابة الدواء الشافي. كان الحل هو المعالجة المتوازية ، حيث يتم تنفيذ العديد من العمليات في وقت واحد في الوقت الفعلي. ومن أجل تحقيق ذلك ، كان من الضروري إعادة تصميم الحجر بشكل أساسي وإعادة بنائه - لدمج بلورتين أو أكثر في حالة واحدة.

تخطيط

عند تطوير برنامج موازٍ ، تصبح مرحلة التصميم أكثر أهمية من تطوير التطبيقات أحادية الترابط. وبما أنه في الواقع تم استخدام البرمجة المتوازية في نطاق ضيق من المشكلات لعقود ، فقد تم تحديد بعض المفاهيم التي أثبتت جدواها. أهم شيء هو النظر إلى التطوير بشكل مختلف ، وليس بشكل متسق ، لتمييز وحدة العمل المنجز ، لتحليل المهمة. هناك ثلاث طرق: التحلل حسب المهام ، التحلل بالبيانات ، التحلل بواسطة تدفق المعلومات. طريقة التحلل الأولى هي الأبسط: نحن ببساطة نربط وظيفة منفصلة بخيط معين ونشغلها للتنفيذ. المعالجة المتوازية جاهزة. ومع ذلك ، قد تكون هناك مشاكل - خلاف ، إذا كانت الوحدة القابلة للتنفيذ تستخدم بيانات عالمية مشتركة. لكن سنتحدث عن هذا لاحقًا. الطريقة الثانية هي أيضًا طريقة مفهومة إلى حد ما للتوازي: على سبيل المثال ، تتم معالجة مجموعة كبيرة من البيانات بواسطة عدة خيوط ، كل منها يعمل على جزء محدد بحدود معينة. يتم استخدام التحليل بواسطة تدفقات المعلومات للمهام عندما يعتمد عمل مؤشر ترابط على نتيجة تنفيذ آخر. على سبيل المثال ، أثناء القراءة من ملف ، لا يمكن بدء مؤشر ترابط معالج البيانات للقراءة حتى يقوم مؤشر ترابط القارئ بقراءة قدر معين من البيانات.

حلول الأجهزة


قبل الانتقال إلى متعدد النواة ، اكتشف مصممو المعالجات أنه عند تنفيذ مؤشر ترابط واحد ، لا يتم تحميل نواة المعالج بالكامل (أعتقد أنك لست بحاجة إلى أن تكون عرافًا لهذا). ونظرًا لأنه لا يتم استخدام جميع موارد المعالج الدقيق لتنفيذ مؤشر ترابط البرنامج الثاني (نظرًا لأنه يمكن تخزين حالة الأجهزة - المشغلات وذاكرة التخزين المؤقت - في مثيل واحد) ، عندئذٍ فقط يجب تكرار منطقة حالة بنية البرنامج (منطق المقاطعة) . هذه التقنية تسمى Hyper-Threading. Hyperthreading عبارة عن آلية للأجهزة يتم فيها تنفيذ العديد من خيوط الأجهزة المستقلة في نفس دورة الساعة على نواة معالج فائق السعة. بمساعدتها ، يتم تمثيل معالج مادي واحد على أنهما معالجان منطقيان ، وهذا هو ما يراه نظام التشغيل ، لأن التخطيط والتنفيذ ، في الواقع ، يتم تنفيذهما مع توقع نواتين. هذا بسبب التدفق المستمر للأوامر التي تعمل على الأجهزة المشتركة. تمت إضافة هذه التقنية إلى بنية NetBurst المطبقة في معالجات Pentium 4. لذلك ، تم تطبيق تقنية hyperthreading مرة أخرى في أحدث الإصداراتبنتيوم 4 ، لكنني فشلت بطريقة ما في العثور عليه في ذلك الوقت. لكن يمكنني الآن مشاهدته في معالج Atom المثبت في netbook. في هذا الحجر ، بالإضافة إلى hyperthreading ، يتم تنفيذ متعدد النواة (بمقدار قطعتين) ، لذلك أرى أربعة أحجار في نظام التشغيل. ولكن ، على سبيل المثال ، في Core 2 Duo لا يوجد خيوط مفرطة ، وكذلك في Core i5. بمساعدة hyperthreading ، تمت زيادة سرعة تنفيذ البرامج المحسّنة لتعدد مؤشرات الترابط بنسبة 30٪. أؤكد أن مكاسب الأداء لن تتم إلا في التطبيقات المعدة خصيصًا.

بالتزامن مع hyperthreading ، بالإضافة إلى بنية superscalar ، تم إنشاء بنية EPIC جديدة ، وتنفيذها في معالجات Itanium ، ولكن هذا الموضوع لم يعد مناسبًا لمقال اليوم.

ثم تم اختراع المعالجات متعددة النواة ، والتي تستخدم الآن في كل مكان. تدعم المعالجات متعددة النواة المعالجة المتعددة على الرقاقة. في هذه البنية ، يتم تنفيذ نواتين أو أكثر في معالج واحد مثبت في مقبس واحد. اعتمادًا على التصميم ، يمكن لهذه النوى مشاركة ذاكرة تخزين مؤقت كبيرة على نفس القالب. تتطلب المعالجات متعددة النواة أيضًا مجموعة شرائح متوافقة. نظرًا لأن كل نواة هي وحدة تنفيذ مستقلة ، فإن المعالجات متعددة النواة توفر توازيًا حقيقيًا - تنفيذ كل مؤشر ترابط في بيئة منفصلة. في حالة وجود عدة نوى تنفيذية ، يجب أن تكون هناك طريقة لتبادل المعلومات فيما بينها ، والتي بدونها يستحيل ببساطة إنشاء نظام موازٍ ، وهناك حاجة إلى مورد خاص. لهذا الغرض ، تم اختراع وحدة التحكم في المقاطعة القابلة للبرمجة المتقدمة (APIC). يقوم بتبادل المعلومات بين المعالجات / النوى باستخدام آلية مقاطعة المعالجات (Interprocessor Interrupt). الأخير ، بدوره ، يستخدم من قبل نظام التشغيل لجدولة / تنفيذ مؤشرات الترابط.

يأتي استهلاك الطاقة في المقدمة أيضًا. وهذا لا ينطبق فقط على مختلف منصات المحمولتعمل بالبطاريات ، ولكن أيضًا أنظمة الخادم وأجهزة الكمبيوتر المكتبية. استهلكت معالجات x86 الأولى أجزاءً من الواط ، في حين أن الطرازات المتطورة اليوم يمكن أن تستهلك 130 واط أو أكثر. وفي الوقت نفسه ، يمكن للمعالجات متعددة النواة توفير الطاقة ، حيث يتم تحقيق مكاسب في الأداء من خلال التوازي ، وليس عن طريق زيادة سرعة الساعة.

حلول البرمجيات

تلعب قرارات البرامج دورًا كبيرًا في التنفيذ المتوازي للكود. تدخل منتجات برامج النظام (أنظمة التشغيل والمجمعات) والتطبيقات على مستوى المستخدم إلى المشهد. من وجهة نظر مبرمج التطبيق ، يمكننا فقط استخدام المجموعة الفرعية الثانية. في الواقع ، هذا يكفي تمامًا إذا كان نظام التشغيل موثوقًا به. تستند بقية القصة في الغالب إلى Windows NT 6.1 ما لم يُذكر خلاف ذلك. كما تعلم ، يستخدم Windows NT نموذجًا استباقيًا متعدد مؤشرات الترابط. عند بدء تشغيل أحد التطبيقات ، تبدأ العملية ، يمكن لواحد أو أكثر من الخيوط القيام بعملهم فيه ، وهم جميعًا يتشاركون في ذاكرة مشتركة ومساحة عنوان مشتركة. الخيط ، بدوره ، هو سلسلة منفصلة من التعليمات يتم تنفيذها بشكل مستقل. هناك ثلاثة أنواع من التدفقات:

  • مستوى المستخدم - تم إنشاؤه في برنامج المستخدم (على مستوى المستخدم). يتم تعيين مؤشرات الترابط هذه في Windows NT إلى مؤشرات ترابط مستوى kernel كما يراها المعالج؛
  • مؤشر ترابط النواة - تدار بواسطة نواة نظام التشغيل ؛
  • خيط الأجهزة هو وحدة تعمل على معالج.

يتم إنشاء التدفق في ثلاث خطوات. أولاً ، يتم وصفه باستخدام واجهة برمجة تطبيقات مؤشر الترابط ، ثم في مرحلة التنفيذ تتم معالجة هذه المكالمة على أنها استدعاء kernel ، ونتيجة لذلك يتم إنشاء مؤشر ترابط ، ثم يتم تنفيذه داخل العملية الخاصة به. ولكن نظرًا لحقيقة تنفيذ العديد من الإجراءات في وقت واحد في البرنامج ، فقد تنشأ الكثير من المشكلات. يتم تصنيفها بسهولة إلى أربعة أنواع. تحدث مشكلة في المزامنة عندما ينتظر مؤشر ترابط آخر تنفيذ مؤشر ترابط آخر ، والذي يتعذر عليه إكمال التنفيذ لسبب ما. مع مشكلة التفاعل ، لا يمكن لأحد الخيوط نقل المعلومات إلى آخر في الوقت المناسب ، على سبيل المثال ، بسبب التأخيرات. عندما يتم التأكيد على أحد الخيوط ويتم تبريد الآخر ، تكون هناك مشكلة في الموازنة. إذا لم يزداد أدائه في وقت نقل البرنامج إلى جهاز كمبيوتر أكثر قوة ، فإنهم يتحدثون عن مشكلة قابلية التوسع. لحل كل هذه المشكلات ، تم تصميم العناصر الأولية للعمل في بيئة متعددة الخيوط. دعونا نلقي نظرة سطحية عليهم.

أساسيات الترميز المتوازية

تسمى أقسام الكود التي يمكن استخدامها في وقت واحد من قبل عدة خيوط وتحتوي على متغيرات شائعة الأقسام الحرجة. في نفوسهم ، يمكن أن تحدث قيم القراءة والكتابة تحت تأثير خيطين أو أكثر بشكل غير متزامن. هذه الحالة تسمى حالة السباق. لذلك ، يجب تشغيل مؤشر ترابط واحد فقط داخل القسم الحرج في أي وقت. لضمان ذلك ، يتم استخدام أساسيات التزامن - أقفال -. تعتبر السيمافور من الناحية التاريخية أول آلية للتزامن ، تم تطويرها بواسطة Dijkstra في عام 1968. يسمح لعدد معين من سلاسل الرسائل بالدخول إلى القسم الحرج ؛ عندما يدخل موضوع ما ، فإنه يقلل من قيمته ويزيد عند خروجه. الشرط الأساسي هو التنفيذ الذري لعمليات التحقق من قيمة السيمافور + زيادة القيمة ، وكذلك التحقق من القيمة + تقليل القيمة. تطور الإشارة هو كائن المزامنة (mutex) ، وهو ببساطة إشارة ثنائية وبالتالي يسمح فقط لخيط واحد بالتنفيذ في قسم حرج. تسمح أقفال القراءة والكتابة بخيوط متعددة لقراءة قيمة متغير مشترك في قسم هام ، ولكن الكتابة إلى واحد فقط. أثناء الانتظار ، لا يتم حظر spinlock ، ولكنه يستمر في الاستقصاء الفعال للمورد المقفل. يعد spinlock حلاً ضعيفًا لمشكلة المزامنة لمعالج واحد ، حيث يستهلك جميع موارد الحوسبة.

تتشابه متغيرات الشرط مع الإشارات ، ولكنها لا تحتوي على قيم حقيقية على عكس الإشارات (وكائنات المزامنة). يراقبون استيفاء الشروط الخارجية.

لغات البرمجة الحديثة لها آليات عالية المستوى لتبسيط استخدام الأقفال ومتغيرات الحالة ("أجهزة المراقبة"). بدلاً من كتابة عمليات بشكل صريح لقفل وفتح جزء من التعليمات البرمجية ، يعلن المطور ببساطة أن القسم الحرج يجب مزامنته.

لتبادل المعلومات بين العمليات / الخيوط ، يتم استخدام الرسائل ، مقسمة إلى ثلاث مجموعات: قيد التشغيل (لنقل المعلومات بين خيوط عملية واحدة) ، عملية بينية (لنقل المعلومات بين العمليات - مع الاعتماد على الخيوط) والعملية - عملية (نقل خيط مستقل للمعلومات بين العمليات).
في الوقت نفسه ، عند استخدام الأقفال لتجنب السباقات ، يمكن أن تحدث الأقفال الميتة والأقفال الحية. يحدث طريق مسدود عندما يتم حظر مؤشر ترابط واحد في انتظار مورد معين من مؤشر ترابط آخر ، ولكن هذا الخيط لا يمكنه توفيره (على سبيل المثال ، ينتظر نتيجة من الأول). يمكن أن يحدث طريق مسدود عند استيفاء أربعة شروط محددة جيدًا (لن نغطي هذه الشروط في هذه المقالة). لذلك ، عند كتابة كود متعدد الخيوط ، فإن المبرمج لديه الفرصة لتجنب didlock ، لكن من الناحية العملية يبدو الأمر أكثر تعقيدًا. يعتبر القفل المباشر أسوأ من القفل المسدود في ذلك في الحالة الأولى ، يتم حظر الخيوط ، وفي الحالة الثانية تتعارض باستمرار.

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


خيوط Win32

بعد ظهور الأول إصدارات Windowsتم تحسين البرمجة متعددة مؤشرات الترابط الخاصة بـ NT من إصدار إلى إصدار ، بينما تم تحسين واجهة برمجة التطبيقات المرتبطة بالخيوط. لذلك ، عندما تبدأ العملية بوظيفة CreateProcess ، يكون لها مؤشر ترابط واحد لتنفيذ الأوامر. يتكون الخيط من كائنين: كائن kernel (من خلاله يدير النظام الخيط) ومكدس يخزن معلمات ووظائف ومتغيرات الخيط. لإنشاء سلسلة محادثات إضافية ، يجب عليك استدعاء وظيفة CreateThread. والنتيجة هي كائن kernel ، وهي بنية بيانات مضغوطة يستخدمها النظام للتحكم في التدفق. هذا الكائن ليس ، في الواقع ، موضوع. يتم تخصيص الذاكرة أيضًا من مساحة العنوان للعملية الأصل لمؤشر الترابط. ونظرًا لأنه سيتم تنفيذ جميع مؤشرات الترابط الخاصة بعملية واحدة في مساحة العنوان الخاصة بها ، فسيتم مشاركة بياناتها العالمية. دعنا نعود إلى وظيفة CreateThread ونفكر في معلماتها. المعلمة الأولى هي مؤشر لبنية PSECURITY السمات التي تحدد سمات الأمان وخصائص الوراثة ، فإن تمرير NULL كافٍ لتعيين القيم الافتراضية. تحدد المعلمة الثانية من النوع DW0RD مقدار مساحة العنوان التي يمكن أن يستخدمها مؤشر الترابط للمكدس الخاص به. المعلمة الثالثة PTHREAD START_ROUTIME pfnStartAddr هو مؤشر لوظيفة لربط الخيط والتي سيتم تنفيذها. يجب أن تكون هذه الوظيفة من النموذج DWORD WINAPI ThreadFunc (PVOID pvParam) ، يمكنها تنفيذ أي عملية ؛ عندما يكتمل ، فإنه يعيد التحكم ، وسيتم إنقاص عداد المستخدم الخاص بكائن نواة مؤشر الترابط بمقدار 1 ، في الحالة التي يكون فيها هذا العداد مساوياً لـ 0 ، كائن معينسوف تدمر. المعلمة الرابعة لوظيفة CreateThread هي مؤشر إلى بنية PVOID تحتوي على معلمة لتهيئة الوظيفة المنفذة في مؤشر الترابط (انظر وصف المعلمة الثالثة). تحدد المعلمة الخامسة (DWORD) إشارة تشير إلى ما إذا كان مؤشر الترابط نشطًا بعد إنشائه. المعلمة السادسة الأخيرة (PDWORD) هي عنوان المتغير حيث سيتم وضع معرف مؤشر الترابط إذا تم تمرير NULL ، وبالتالي سنعلم أننا لسنا بحاجة إليه. في حالة نجاحها ، تقوم الدالة بإرجاع مؤشر مؤشر ترابط يمكن استخدامه لمعالجة مؤشر الترابط ؛ عند الفشل ، تُرجع الدالة 0.


هناك أربع طرق لإنهاء مؤشر ترابط ، ثلاثة منها غير مرغوب فيها: إنهاء مؤشر الترابط من خلال استدعاء وظيفة ExitThread ، من خلال استدعاء إلى TerminateThread ، عندما تنتهي العملية الأصلية دون إنهاء مؤشر الترابط أولاً. طريقة واحدة فقط - الإكمال الذاتي للخيط ، والذي يحدث عند تنفيذ الإجراءات المخصصة له ، يكون مواتياً. لأنه في هذه الحالة فقط ، يتم ضمان إطلاق جميع موارد نظام التشغيل ، وتدمير جميع كائنات C / C ++ باستخدام أدوات التدمير الخاصة بهم.

بضع كلمات أخرى حول إنشاء موضوع. تم العثور على وظيفة CreateThread في Win32 API ، في حين أن مكتبة Visual C ++ لها ما يعادله ، _beginthreadex ، والذي يحتوي على نفس قائمة المعلمات تقريبًا. يوصى بإنشاء سلاسل رسائل بمساعدتها ، لأنها لا تستخدم فقط CreateThread ، ولكنها تؤدي أيضًا عمليات إضافية. بالإضافة إلى ذلك ، إذا تم إنشاء الخيط باستخدام الأخير ، فعند التدمير ، يتم استدعاء _endthreadex ، والذي يمسح كتلة البيانات المشغولة بالهيكل الذي يصف الخيط.

يتم جدولة المواضيع للتنفيذ على أساس الأولوية. إذا كانت جميع سلاسل الرسائل لها أولويات متساوية ، فسيكون لكل منها (في WinNT) 20 مللي ثانية للتنفيذ. لكنها ليست كذلك. يحتوي WinNT على 31 (من الصفر) من أولويات الموضوع. في الوقت نفسه ، 31 هو الأعلى ، فقط التطبيقات الأكثر أهمية - يمكن تشغيل برامج تشغيل الأجهزة عليها ؛ 0 ، الأدنى ، محجوز لتشغيل مؤشر ترابط التصفير للصفحة. ومع ذلك ، لا يمكن للمطور تحديد رقم الأولوية بشكل صريح لتنفيذ مؤشر الترابط الخاص به. ولكن يوجد في Windows جدول أولويات ، حيث يشار إلى تعيينات رمزية لأرقام مجمعة للأولويات. في هذه الحالة ، يتم تكوين الرقم النهائي ليس فقط على أساس هذا الجدول ، ولكن أيضًا على قيم أولوية العملية الأصلية. القيم مخفية خلف ثوابت رمزية لأن Microsoft تحتفظ بالحق في تغييرها واستخدامها من إصدار إلى إصدار من نظام التشغيل الخاص بها. عند إنشاء سلسلة رسائل ، يتم تعيين مستوى أولوية عادي لها. يمكن تغييره باستخدام وظيفة SetThreadPriority ، والتي تأخذ معلمتين: HANDLE hThread - مقبض مؤشر الترابط للتغيير ، int nPriority - مستوى الأولوية (من الجدول). باستخدام وظيفة GetThreadPriority ، يمكنك الحصول على الأولوية الحالية عن طريق تمرير مقبض الخيط المطلوب إليه. قبل تغيير أولوية سلسلة الرسائل ، يجب تعليقها ، ويتم ذلك بواسطة وظيفة SuspendThread. بعد تغيير الأولوية ، يجب إعطاء مؤشر الترابط مرة أخرى إلى المجدول لجدولة التنفيذ بواسطة وظيفة ResumeThread. تتلقى كلتا الوظيفتين مؤشرًا للتيار الذي تعملان معه. تنطبق جميع العمليات الموصوفة ، باستثناء التعليق والاستئناف ، على العمليات. لا يمكن إيقافها مؤقتًا / استئنافها لأنها لا تستهلك وقت وحدة المعالجة المركزية ، لذلك لم تتم جدولتها.

تجنب السباق في Win32

في التطبيقات متعددة الخيوط ، كلما كان ذلك ممكنًا ، استخدم العمليات الذرية غير القابلة للتجزئة ، والتي لا يمكن أن يتدخل مؤشر ترابط آخر في تنفيذها. تكون هذه الوظائف في Win32 API مسبوقة بـ Interlocked ، على سبيل المثال ، لزيادة متغير ، استخدم InterlockedExchangeAdd (& i، 1) بدلاً من i ++. بالإضافة إلى عمليات الزيادة / التناقص ، توجد أيضًا عمليات للمقارنة الذرية ، لكننا سنتركها كواجب منزلي.

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

CRITICAL_SECTION g_cs ؛ DWORD WINAPI ThreadRun (PVOID pvParam) (EnterCriticalSection (& g_cs) ؛ // احسب شيئًا LeaveCriticalSection (& g_cs) ؛ إرجاع 0 ؛)

الأقسام الحرجة في Win32 ليست مجرد تعليمات برمجية يمكن تنفيذها بواسطة مؤشرات ترابط متعددة ، فهي آلية مزامنة بيانات كاملة. يجب أن تكون الأقسام الحرجة صغيرة قدر الإمكان ، أي تتضمن أقل عدد ممكن من العمليات الحسابية.
للسماح لخيوط متعددة بقراءة قيمة متغير وتغييره إلى متغير واحد ، يمكنك استخدام بنية "قفل رفيع" SRWLock. الخطوة الأولى هي تهيئة البنية عن طريق استدعاء InitializeSRWLock لتمرير مؤشر إليها. بعد ذلك ، أثناء التسجيل ، نقيد المورد بالوصول الحصري:

AcquireSRWLockExclusive (PSRWLOCK SRWLock) ؛ // اكتب قيمة ReleaseSRWLockExclusive (PSRWLOCK SRWLock) ؛

من ناحية أخرى ، أثناء القراءة ، نشارك الوصول:

AcquireSRWLockShared (PSRWLOCK SRWLock) ؛ // قراءة القيمة ReleaseSRWLockShared (PSRWLOCK SRWLock) ؛

لاحظ أن جميع الوظائف تأخذ بنية SRWLock مهيأة كمعامل.
بمساعدة المتغيرات الشرطية ، من الملائم تنظيم تبعية "المورد - المستهلك" (انظر التحلل بواسطة تدفقات المعلومات) ، أي أن الحدث التالي يجب أن يحدث اعتمادًا على الحدث السابق. تستخدم هذه الآلية الدالتين SleepConditionVariableCS و SleepConditionVariableSRW لتأمين قسم هام أو بنية "قفل رفيع". يأخذون ثلاثة وأربعة معلمات ، على التوالي: مؤشر لمتغير حالة متوقع بواسطة مؤشر الترابط ، أو مؤشر إلى قسم حرج ، أو SRWLock يستخدم لمزامنة الوصول. المعلمة التالية- الوقت (بالمللي ثانية) لانتظار الخيط حتى يتم الوفاء بالشرط ، إذا لم يتم استيفاء الشرط ، ستعيد الوظيفة False ؛ المعلمة الأخيرة للوظيفة الثانية هي نوع القفل. لتنبيه سلاسل الرسائل المحظورة ، اتصل بوظيفة WakeConditionVariable أو WakeAllConditionVariable من مؤشر ترابط آخر. إذا كان الفحص الذي تم إجراؤه نتيجة لاستدعاء هذه الوظائف يؤكد الشرط الذي تم تمريره كمعامل لهذه الوظائف ، فسيتم إيقاظ مؤشر الترابط.

في الوصف أعلاه ، تعرفنا على التعريفات العامة لآليات السيمافور وكائن المزامنة. الآن دعونا نرى كيف يتم تنفيذها في Win32. يمكنك إنشاء إشارة باستخدام وظيفة CreateSemaphore. يتم تمرير المعلمات التالية إليه: مؤشر إلى بنية PSECURITY_ATTRIBUTES تحتوي على معلمات الأمان ؛ الحد الأقصى لعدد الموارد التي يتعامل معها التطبيق ؛ مقدار هذه الموارد المتاحة في البداية ؛ مؤشر لسلسلة تحدد اسم الإشارة. عندما يريد مؤشر ترابط في انتظار الإشارة الوصول إلى مورد يخضع لحراسة الإشارة ، فإن وظيفة انتظار مؤشر الترابط تستعلم عن حالة الإشارة. إذا كانت قيمته أكبر من 0 ، فإن الإشارة تكون مجانية وتنخفض قيمتها بمقدار 1 ، ويتم جدولة مؤشر الترابط للتشغيل. إذا كانت الإشارة مشغولة عند الاستقصاء ، تكون قيمتها 0 ، ثم يدخل مؤشر ترابط الاستدعاء في حالة الانتظار. في اللحظة التي يغادر فيها الخيط الإشارة ، يتم استدعاء وظيفة ReleaseSemaphore ، حيث يتم زيادة قيمة الإشارة بمقدار 1. كائنات الكائنات ، مثل الإشارات ، هي كائنات kernel. تشبه وظائف Mutex أقسام Win32 الهامة ، مع اختلاف أن الأخير يعمل في وضع المستخدم. يسمح كائن المزامنة (mutex) بتشغيل مؤشر ترابط واحد فقط في كل مرة ويوفر الوصول إلى مورد واحد فقط. في الوقت نفسه ، يسمح لك بمزامنة خيوط متعددة عن طريق تخزين معرف الخيط الذي استحوذ على المورد وعداد عدد اللقطات. لإنشاء كائن المزامنة (mutex) ، يمكنك استخدام وظيفة CreateMutex ، حيث تتشابه معلماتها مع تلك التي تمت مناقشتها أعلاه. عندما ينتظر مؤشر ترابط كائن المزامنة (mutex) بنجاح ، يكون للخيط وصول خاص إلى المورد المحمي. تدخل جميع سلاسل الرسائل الأخرى التي تحاول الوصول إلى هذا المورد في حالة الانتظار. عند الانتهاء من الخيط الذي يحتفظ بالمورد به ، يجب أن يحرر كائن المزامنة عن طريق استدعاء وظيفة ReleaseMutex. تعمل هذه الوظيفة على تقليل عداد العودية في كائن المزامنة بواسطة 1. يعتمد اختيار آلية المزامنة التي سيتم استخدامها إلى حد كبير على توقيت تنفيذها والرمز الذي يتم استخدامه فيه.

من بين أشياء أخرى ، في Windows NT ، بدءًا من الإصدار الرابع ، يوجد مستوى دفق آخر من التفاصيل - الألياف (أو الخيوط). على مستوى المستخدم ، يمكن تقسيم كائن kernel لمؤشر الترابط إلى سلاسل رسائل متعددة. وفي هذه الحالة ، لا يعرف نظام التشغيل شيئًا عنهم ، فكل أعمال التخطيط وإدارة المواضيع تقع على عاتق مطور التطبيق.

خاتمة

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

في هذه المقالة ، تعاملنا أولاً مع أساسيات التشفير المتوازي - المفاهيم العامة ، ثم اكتشفنا كيفية تنفيذها في سلاسل API محددة - Win 32. لم يسمح لنا نطاق المقالة بالنظر في واجهات برمجة التطبيقات الأخرى للترميز متعدد الخيوط. دعونا نأمل أن تتاح لنا الفرصة يومًا ما لمواصلة مناقشة هذا الموضوع الضروري.

أتمنى لك حظًا سعيدًا ، أراك قريبًا!

الحوسبة المتوازية هي طريقة لتنظيم الحوسبة الحاسوبية ، حيث يتم تطوير البرامج كمجموعة من عمليات الحوسبة المتفاعلة التي تعمل في وقت واحد.

يخرج طرق مختلفةتطبيقات الحوسبة المتوازية: يمكن تنفيذ كل عملية حوسبة كعملية نظام تشغيل ، أو يمكن أن تكون عمليات الحوسبة مجموعة من مؤشرات التنفيذ داخل عملية واحدة. الخيط (أو بشكل صحيح خيط تنفيذ) هو أصغر وحدة معالجة يمكن تعيينها للتنفيذ بواسطة نواة نظام التشغيل. يمكن أن توجد سلاسل تنفيذ متعددة داخل نفس العملية ومشاركة الموارد مثل الذاكرة ، بينما لا تشارك العمليات هذه الموارد. يمكن تنفيذ البرامج المتوازية ماديًا إما بالتسلسل على معالج واحد - بالتناوب في خطوات التنفيذ لكل عملية حسابية ، أو بالتوازي - تخصيص معالج واحد أو أكثر لكل عملية حسابية (تقع في مكان قريب أو موزعة في شبكة الكمبيوتر).

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

في بعض أنظمة البرمجة المتوازية ، يكون نقل البيانات بين المكونات مخفيًا عن المبرمج ، بينما في أنظمة أخرى يجب تحديده بشكل صريح. يمكن تقسيم التفاعلات الصريحة إلى نوعين:

1. التفاعل من خلال الذاكرة المشتركة (على سبيل المثال ، في Java أو C #). عادة ما يتطلب هذا النوع من البرمجة المتوازية شكلاً من أشكال التقاط التحكم لتنسيق الخيوط فيما بينها.

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

هناك عدد لا بأس به تقنيات مختلفةالبرمجة المتوازية. علاوة على ذلك ، لا تختلف هذه التقنيات في لغات البرمجة بقدر ما تختلف في الأساليب المعمارية لبناء أنظمة متوازية. على سبيل المثال ، تتضمن بعض التقنيات إنشاء حلول متوازية تعتمد على العديد من أجهزة الكمبيوتر (كلاهما واحد و أنواع مختلفة) ، بينما يتضمن البعض الآخر العمل على جهاز واحد به عدة مراكز معالج. حاليًا ، الأدوات البرمجية الرئيسية لإنشاء برامج موازية هي:

1. برنامج openmpتستخدم في أنظمة متوازية ذات ذاكرة مشتركة (على سبيل المثال ، أجهزة الكمبيوتر الحديثة ذات المعالجات متعددة النواة) ؛

2. MPI (واجهة تمرير الرسائل)هو معيار لأنظمة تمرير الرسائل بين العمليات التنفيذية المتوازية ، ويستخدم في تطوير برامج الحواسيب العملاقة ؛

3. خيوط POSIXهو معيار لتنفيذ خيوط التنفيذ ؛

4. نظام التشغيليحتوي Windows على دعم مدمج لتطبيقات C ++ متعددة الخيوط على مستوى API ؛

5. PVM (آلة افتراضية متوازية)يسمح لك بدمج أجهزة الكمبيوتر المتصلة بالشبكة غير المتجانسة في مورد حوسبة مشترك.

يتم تصنيف الأنظمة القائمة على العديد من أجهزة الكمبيوتر على أنها أنظمة للحوسبة الموزعة. تم استخدام هذه الحلول لفترة طويلة. المثال الأكثر وضوحا لتكنولوجيا الحوسبة الموزعة هو MPI (واجهة تمرير الرسائل). MPI هو معيار واجهة تبادل البيانات الأكثر شيوعًا في البرمجة المتوازية ؛ هناك تطبيقات لعدد كبير من منصات الكمبيوتر. يوفر MPI للمبرمج آلية موحدة لتفاعل الفروع داخل تطبيق متوازي ، بغض النظر عن بنية الآلة (معالج واحد / متعدد المعالجات بذاكرة مشتركة / منفصلة) ، الموضع النسبي للفروع (على نفس المعالج أو على مختلف تلك).

نظرًا لأن MPI مخصص بشكل أساسي للأنظمة ذات الذاكرة المنفصلة ، فإن استخدامه لتنظيم عملية متوازية في نظام بذاكرة مشتركة أمر صعب للغاية وغير مناسب. ومع ذلك ، لا شيء يمنعك من صنع حلول MPI لجهاز واحد.

لكن أنظمة البرمجة المتوازية للعمل على آلة واحدة بدأت في التطور مؤخرًا نسبيًا. بالطبع ، هذه ليست أفكارًا جديدة في الأساس ، ولكنها مع ظهور أنظمة متعددة النواة في السوق هي تلك حواسيب شخصية, أجهزة محمولة، فقد تلقت تقنيات مثل OpenMP تطورًا كبيرًا.

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

OpenMP (Open Multi-Processing) عبارة عن مجموعة من توجيهات المترجم وإجراءات المكتبة ومتغيرات البيئة المخصصة لبرمجة التطبيقات متعددة مؤشرات الترابط على أنظمة متعددة المعالجات ذات ذاكرة مشتركة.

يتم تطوير مواصفات OpenMP من قبل العديد من بائعي أجهزة وبرامج الكمبيوتر الرئيسيين ، والذين يتم تنظيم عملهم من قبل منظمة غير ربحية تسمى مجلس مراجعة هندسة OpenMP (ARB).

ظهرت النسخة الأولى في عام 1997 ، وهي مخصصة للغة فورتران. تم تطوير الإصدار لـ С / С ++ في عام 1998. في عام 2008 ، تم إصدار OpenMP 3.0. أصبحت واجهة OpenMP واحدة من أكثر تقنيات البرمجة المتوازية شيوعًا. تم استخدام OpenMP بنجاح في برمجة أنظمة الحواسيب العملاقة التي تحتوي على عدد كبير من المعالجات ، وفي أنظمة مستخدم سطح المكتب أو ، على سبيل المثال ، في Xbox 360.

يقوم OpenMP بتنفيذ الحوسبة المتوازية باستخدام multithreading ، حيث يقوم الخيط "الرئيسي" (الرئيسي) بإنشاء مجموعة من خيوط الرقيق (التابعة) ويتم توزيع المهمة بينها. من المفترض أن تعمل الخيوط بالتوازي على جهاز به معالجات متعددة (لا يلزم أن يكون عدد المعالجات أكبر من أو يساوي عدد الخيوط).

يتم وصف المهام التي تؤديها الخيوط بالتوازي ، وكذلك البيانات المطلوبة لأداء هذه المهام ، باستخدام توجيهات خاصة للمعالج المسبق للغة المقابلة - براغماس. على سبيل المثال ، جزء من كود Fortran يجب أن يتم تنفيذه بواسطة خيوط متعددة ، لكل منها نسخته الخاصة من المتغير N ، مسبوقًا بالتوجيه التالي:! $ OMP PARALLEL PRIVATE (N)

يمكن تنظيم عدد الخيوط التي تم إنشاؤها بواسطة البرنامج نفسه عن طريق استدعاء إجراءات المكتبة ، ومن الخارج ، باستخدام متغيرات البيئة.

العناصر الرئيسية لبرنامج OpenMP هي

1. إنشاءات لإنشاء الخيوط (التوجيه الموازي) ؛

2. إنشاءات لتوزيع العمل بين الخيوط (توجيهات DO / لـ و section) ؛

3. إنشاءات لإدارة العمل بالبيانات (التعبيرات المشتركة والخاصة لتحديد فئة الذاكرة المتغيرة).

4. إنشاءات لمزامنة الخيط (التوجيهات الحرجة والذرية والحاجز) ؛

5. وقت التشغيل دعم إجراءات المكتبة (على سبيل المثال ، omp_get_thread_num) ؛

6. متغيرات البيئة (على سبيل المثال ، OMP_NUM_THREADS).

يستخدم OpenMP نموذج تنفيذ متوازٍ لدمج الفروع. يبدأ برنامج OpenMP كسلسلة تنفيذ واحدة تسمى سلسلة البداية. عندما يصادف الخيط تركيبًا متوازيًا ، فإنه ينشئ مجموعة سلاسل رسائل جديدة تتكون من نفسها وعددًا من سلاسل الرسائل الإضافية ، وتصبح رائدة المجموعة الجديدة. كل الأعضاء مجموعة جديدة(بما في ذلك الرئيسي) تنفيذ الكود داخل البناء المتوازي. يوجد حاجز ضمني في نهاية البناء المتوازي. بعد البناء المتوازي ، يستمر تنفيذ كود المستخدم فقط على مؤشر الترابط الرئيسي. يمكن أن تتداخل المناطق المتوازية الأخرى في منطقة متوازية ، حيث يصبح كل خيط من المنطقة الأصلية هو النطاق الرئيسي لمجموعة مؤشرات الترابط الخاصة به. يمكن أن تتضمن المناطق المتداخلة بدورها مناطق ذات مستوى أعمق من التداخل.

يمكن التحكم في عدد الخيوط في المجموعة التي تعمل بالتوازي بعدة طرق. واحد منهم يستخدم متغير البيئة OMP_NUM_THREADS. هناك طريقة أخرى وهي استدعاء إجراء omp_set_num_threads (). هناك طريقة أخرى وهي استخدام تعبير num_threads جنبًا إلى جنب مع التوجيه المتوازي.

في هذا البرنامج ، تمت إضافة صفيفين (أ و ب) بالتوازي بواسطة عشرة مؤشرات ترابط.

#يشمل

#يشمل

int main (int argc، char * argv)

تعويم a [N] ، b [N] ، c [N] ؛

omp_set_dynamic (0) ، // منع مكتبة openmp من تغيير عدد سلاسل الرسائل في وقت التشغيل

omp_set_num_threads (10) ، // اضبط عدد الخيوط على 10

// تهيئة المصفوفات

لـ (أنا = 0 ؛ أنا< N; i++)

// حساب مجموع المصفوفات

#pragma omp المتوازي مشترك (أ ، ب ، ج) خاص (ط)

لـ (أنا = 0 ؛ أنا< N; i++)

ج [i] = أ [i] + ب [i] ؛

printf ("٪ f \ n"، c) ؛

يمكن تجميع هذا البرنامج باستخدام gcc-4.4 والإصدارات الأحدث التي تحمل العلامة --fopenmp. من الواضح ، إذا قمت بإزالة تضمين ملف الرأس omp.h ، بالإضافة إلى استدعاءات وظيفة تكوين OpenMP ، يمكن تجميع البرنامج على أي مترجم C كبرنامج تسلسلي عادي.

OpenMP مدعوم من قبل العديد من المترجمات الحديثة:

1. تدعم برامج التحويل البرمجي لـ Sun Studio المواصفات الرسمية - OpenMP 2.5 - مع أداء محسن ضمن نظام التشغيل Solaris OS ؛ دعم Linuxمجدولة للإصدار القادم.

2. يدعم Visual C ++ 2005 وما بعده OpenMP في إصداري Professional و Team System.

3. يدعم مجلس التعاون الخليجي 4.2 برنامج OpenMP ، وقد تضمنت بعض التوزيعات (مثل Fedora Core 5 gcc) دعمًا في إصدارات GCC 4.1.

4. إنتل C ++ مترجم بما في ذلك نسخة إنتلالكتلة OpenMP للبرمجة في أنظمة الذاكرة الموزعة.

واجهة تمرير الرسائل (MPI ،واجهة تمرير الرسائل) - واجهة برمجة (API) لنقل المعلومات التي تتيح لك تبادل الرسائل بين العمليات التي تؤدي نفس المهمة. صممه ويليام جروب وإيفين لاسك وآخرين.

MPI هو معيار واجهة تبادل البيانات الأكثر شيوعًا في البرمجة المتوازية ، وهناك تطبيقات لعدد كبير من منصات الكمبيوتر. يتم استخدامه في تطوير برامج المجموعات وأجهزة الكمبيوتر العملاقة. الوسيلة الرئيسية للاتصال بين العمليات في MPI هي تمرير الرسائل لبعضها البعض. تم توحيد MPI من قبل منتدى MPI. يصف معيار MPI واجهة تمرير الرسائل التي يجب دعمها على كل من النظام الأساسي وتطبيقات المستخدم. يوجد حاليًا عدد كبير من التطبيقات المجانية والتجارية لـ MPI. هناك تطبيقات لـ Fortran 77/90 و C و C ++.

بادئ ذي بدء ، يتم توجيه MPI للأنظمة ذات الذاكرة الموزعة ، أي عندما تكون تكاليف نقل البيانات مرتفعة ، بينما يتم توجيه OpenMP للأنظمة ذات الذاكرة المشتركة (متعددة النواة مع ESH مشترك). يمكن استخدام كلتا التقنيتين معًا لتحقيق الاستخدام الأمثل للأنظمة متعددة النواة في مجموعة.

تم تطوير الإصدار الأول من MPI في 1993-1994 ، و MPI 1 خرج في 1994.

تدعم معظم تطبيقات MPI الحديثة الإصدار 1.1. يتم دعم معيار MPI الإصدار 2.0 من قبل معظم التطبيقات الحديثة ، ومع ذلك ، قد لا يتم تنفيذ بعض الميزات بالكامل.

إرسال واستقبال الرسائل بين عمليات منفصلة ؛

التفاعلات الجماعية للعمليات ؛

التفاعلات في مجموعات العمليات ؛

تنفيذ طوبولوجيا العملية ؛

توليد العملية الديناميكية والتحكم في العملية ؛

اتصالات أحادية الاتجاه (Get / Put) ؛

المدخلات والمخرجات المتوازية ؛

عمليات جماعية موسعة (يمكن للعمليات أن تؤدي عمليات جماعية ليس فقط داخل متواصل واحد ، ولكن أيضًا ضمن عدة جهات اتصال).

تم إصدار MPI 2.1 في أوائل سبتمبر 2008.

الآلية الأساسية للاتصال بين عمليات MPI هي إرسال واستقبال الرسائل. تحمل الرسالة البيانات والمعلومات المرسلة التي تتيح للجانب المستلم استقبالها بشكل انتقائي:

1. المرسل - رتبة (رقم في المجموعة) لمرسل الرسالة ؛

2. المتلقي - رتبة المتلقي.

3. تسجيل - يمكن استخدامها لفصل أنواع مختلفة من الرسائل ؛

4. جهاز الاتصال - عملية رمز المجموعة.

يمكن أن تكون عمليات الإرسال والاستقبال محظورة أو غير محظورة. بالنسبة للعمليات غير المحظورة ، يتم تحديد وظائف التحقق من الجاهزية وانتظار تنفيذ العملية.

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

فيما يلي مثال على برنامج لحساب الرقم π في لغة C باستخدام MPI:

// قم بتوصيل الرؤوس المطلوبة

#يشمل

#يشمل

// توصيل ملف رأس MPI

# تضمين "mpi.h"

// وظيفة للحسابات الوسيطة

مزدوج و (مزدوج أ)

العودة (4.0 / (1.0 + a * a)) ؛

// الوظيفة الأساسيةالبرامج

int main (int argc، char ** argv)

// إعلان المتغيرات

تم القيام به = 0، n، myid، numprocs، I؛

مزدوج PI25DT = 3.141592653589793238462643 ؛

مزدوج mypi ، pi ، h ، sum ، x ؛

وقت البدء المزدوج = 0.0 ، وقت النهاية ؛

حرف المعالج_اسم ؛

// تهيئة النظام الفرعي MPI

MPI_Init (& argc، & argv) ؛

// احصل على حجم جهاز الاتصال MPI_COMM_WORLD

// (إجمالي عدد العمليات داخل المهمة)

MPI_Comm_size (MPI_COMM_WORLD، & numprocs) ؛

// احصل على رقم العملية الحالية في الداخل

// Communicator MPI_COMM_WORLD

MPI_Comm_rank (MPI_COMM_WORLD، & myid) ؛

MPI_Get_processor_name (اسم_المعالج ، & الاسم) ؛

// عرض رقم الموضوع في التجمع المشترك

fprintf (stdout ، "العملية٪ d من٪ d على٪ s \ n" ، myid ، numprocs ، اسم المعالج) ؛

// عدد الفترات

fprintf (stdout، "أدخل عدد الفواصل الزمنية: (0 quits)") ؛

إذا (scanf ("٪ d"، & n)! = 1)

fprintf (stdout، "لم يتم إدخال رقم ؛ إنهاء \ n") ؛

MPI_Bcast (& n، 1، MPI_INT، 0، MPI_COMM_WORLD) ؛

ح = 1.0 / (مزدوج) ن ؛

// حساب النقطة المخصصة للعملية

لـ (I = myid + 1؛ (I<= n) ; I += numprocs)

س = ح * ((مزدوج) أنا - 0.5) ؛

// إعادة تعيين النتائج من جميع العمليات وإضافة

MPI_Reduce (& mypi، & pi، 1، MPI_DOUBLE، MPI_SUM، 0، MPI_COMM_WORLD) ؛

// إذا كانت هذه هي العملية الرئيسية ، فاخرج النتيجة

printf ("PI تساوي٪ .16f تقريبًا ، الخطأ هو٪ .16f \ n" ، pi ، fabs (pi - PI25DT)) ؛

endwtime = MPI_Wtime () ،

printf ("وقت ساعة الحائط =٪ f \ n"، endwtime-startwtime) ؛

// حرر النظام الفرعي MPI

أكثر تطبيقات MPI شيوعًا اليوم هي:

MPICH - التطبيق المجاني الأكثر شيوعًا ، يعمل على أنظمة UNIX و Windows NT

LAM / MPI هو تطبيق مجاني آخر لـ MPI. يدعم التكوينات غير المتجانسة ، يدعم LAM (http://www.lam-mpi.org) التكوينات غير المتجانسة ، وحزمة Globus ويلبي IMPI (MPI القابل للتشغيل البيني).

يتم دعم أنظمة اتصالات مختلفة (بما في ذلك Myrinet).

WMPI - تطبيق Windows لـ MPI

MPI / PRO for Windows NT - تطبيق تجاري لـ Windows NT

Intel MPI - التطبيق التجاري لنظامي التشغيل Windows / Linux

يعد Microsoft MPI جزءًا من Compute Cluster Pack SDK. استنادًا إلى MPICH2 ولكنه يتضمن عناصر تحكم إضافية في الوظائف. يتم دعم مواصفات MPI-2.

HP-MPI - التنفيذ التجاري من HP

SGI MPT - مكتبة MPI مدفوعة من SGI

Mvapich هو تطبيق مجاني لـ MPI لـ Infiniband

Open MPI هو تطبيق مجاني لـ MPI ، خلف LAM / MPI

Oracle HPC ClusterTools - تطبيق مجاني لنظام التشغيل Solaris SPARC / x86 و Linux على أساس Open MPI

MPJ - MPI للجافا

خيوط POSIX- معيار POSIX لتنفيذ سلاسل التنفيذ ، والذي يحدد واجهة برمجة تطبيقات لإنشاء سلاسل الرسائل وإدارتها.

المكتبات التي تطبق هذا المعيار (ووظائف هذا المعيار) تسمى عادة Pthreads (الوظائف مسبوقة بـ "pthread_"). على الرغم من أن أشهر المتغيرات هي لأنظمة التشغيل الشبيهة بـ Unix مثل Linux أو Solaris ، إلا أن هناك أيضًا تطبيقًا لنظام التشغيل Microsoft Windows (Pthreads-w32)

تحدد Pthreads مجموعة من الأنواع والوظائف في لغة البرمجة C. ملف الرأس هو pthread.h.

أنواع البيانات:

1. pthread_t - واصف الخيط ؛

2. pthread_attr_t - قائمة سمات الموضوع.

ميزات التحكم في التدفق:

1. pthread_create () - إنشاء خيط ؛

2. pthread_exit () - إنهاء الخيط (يجب استدعاؤه بواسطة وظيفة الخيط عند الإنهاء) ؛

3. pthread_cancel () - إلغاء الخيط ؛

4. pthread_join () - منع تنفيذ الخيط حتى إنهاء مؤشر ترابط آخر محدد في استدعاء الوظيفة ؛

5. pthread_detach () - حرر الموارد التي يشغلها الخيط (إذا كان الخيط قيد التشغيل ، فسيتم تحرير الموارد بعد انتهائه) ؛

6. pthread_attr_init () - تهيئة بنية سمات الخيط ؛

7. pthread_attr_setdetachstate () - أخبر النظام أنه بعد نهاية الخيط ، يمكنه تحرير الموارد التي يشغلها الخيط تلقائيًا ؛

8. pthread_attr_destroy () - حرر الذاكرة من هيكل سمة الخيط (تدمير المقبض).

وظائف تزامن الموضوع:

2. pthread_mutex_init () ، pthread_mutex_destroy () ، pthread_mutex_lock () ، pthread_mutex_trylock () ، pthread_mutex_unlock () ؛

3. pthread_cond_init () ، pthread_cond_signal () ، pthread_cond_wait ().

مثال على استخدام الخيوط في لغة سي:

#يشمل

#يشمل

#يشمل

#يشمل

فراغ ثابت wait_thread (باطل)

time_t start_time = الوقت (NULL) ؛

بينما (الوقت (NULL) == وقت البدء)

/ * لا تفعل شيئًا سوى مضغ شرائح وحدة المعالجة المركزية لمدة تصل إلى ثانية واحدة. * /

ثابت باطل * thread_func (باطل * vptr_args)

لـ (أنا = 0 ؛ أنا< 20; i++)

fputs ("b \ n" ، stderr) ؛

خيط pthread_t ؛

إذا (pthread_create (& thread، NULL، thread_func، NULL)! = 0)

عودة EXIT_FAILURE ؛

لـ (أنا = 0 ؛ أنا< 20; i++)

إذا (pthread_join (موضوع ، NULL)! = 0)

عودة EXIT_FAILURE ؛

عودة EXIT_SUCCESS ؛

البرنامج الموضح يستخدم خيطين يقومان بطباعة الرسائل إلى وحدة التحكم ، أحدهما يطبع "a" والآخر يطبع "b". يتم خلط إخراج الرسالة كنتيجة للتبديل بين التنفيذ أو التنفيذ المتزامن على أنظمة متعددة المعالجات.

يقوم برنامج C بإنشاء خيط واحد جديد لطباعة "b" ويطبع الخيط الرئيسي "a". الخيط الرئيسي (بعد طباعة "aaaaa….") ينتظر انتهاء الخيط الفرعي.

أسئلة التحكم

  1. ما هو البرنامج الموازي؟
  2. ما هو الفرق بين العملية وخيط التنفيذ؟
  3. هل يمكن للبرنامج إنشاء 5 خيوط عند تشغيل معالج رباعي النواة؟
  4. ما هي مميزات البرامج المتوازية ذات الذاكرة المشتركة؟
  5. ما هي الأدوات البرمجية الموجودة لتطوير البرامج الموازية؟
  6. لماذا أصبح OpenMP ، وليس MPI ، على سبيل المثال ، ذائع الصيت عند إنشاء برامج لأجهزة الكمبيوتر؟


تحميل...
قمة