سؤال

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

هل كانت مفيدة؟

المحلول

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

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

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

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

نصائح أخرى

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

يختلف من تقنيات الخيوط العامة العامة، مثل السمايات، الشاشات، إلخ. لأن لديك الآلاف من الخيوط بشكل متزامن. وبالتالي فإن مشكلة التوازية في CUDA موجودة أكثر في تقسيم بياناتك وخلط قطع البيانات لاحقا.

مجرد مثال صغير لإعادة التفكير الكامل للمشكلة التسلسلية المشتركة هو مسح خوارزمية. انها بسيطة مثل:

  • إعطاء مجموعة {A، B، C، D، E}

أريد المجموعة التالية:

{a، a + b، a + b + c، a + b + c + d، a + b + c + d + e}

حيث الرمز "+" في هذه الحالة هو أي مشغل CommutoTtive (ليس فقط بالإضافة إلى ذلك، يمكنك القيام الضرب أيضا).

كيف تفعل هذا بالتوازي؟ انها إعادة التفكير الكامل للمشكلة، هو موصوف في هذا ورق.

يمكن العثور على العديد من عمليات التنفيذ من الخوارزميات المختلفة في CUDA في NVIDIA موقع الكتروني

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

هذه الفكرة قديمة وتم نشرها (من بين أمور أخرى) من قبل مجتمع نظام التشغيل Micro-Kernel لبناء أنظمة تشغيل أكثر موثوقية. ومن المثير للاهتمام، التفرد يظهر النموذج الأولي من OS من قبل Microsoft Research أن مسافات العناوين التقليدية ليست مطلوبة حتى عند العمل مع هذا النموذج.

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

لديك looksee في openmp. للاختلاف مثير للاهتمام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top