الذاكرة المشتركة وموازاة البيانات
تتضمن موازاة الذاكرة المشتركة تشغيل سلاسل تعليمات متعددة على مساحة عنوان مشتركة، بينما تطبق موازاة البيانات نفس العملية عبر العديد من عناصر البيانات في وقت واحد.
Definition
في نموذج الذاكرة المشتركة، تتواصل سلاسل التنفيذ المتوازية ضمنيًا عن طريق قراءة وكتابة ذاكرة مشتركة، وتنسق من خلال بدائيات المزامنة؛ موازاة البيانات هي الحالة الخاصة التي يتم فيها تطبيق نفس الحساب بشكل مستقل عبر عناصر بنية البيانات.
Scope
يغطي هذا الموضوع نموذج مساحة العنوان المشتركة وواجهات برمجته (سلاسل التعليمات، OpenMP)، بدائيات المزامنة التي تنسق سلاسل التعليمات (الأقفال، الحواجز، العمليات الذرية) والمخاطر التي تديرها (تضارب البيانات، الجمود، المشاركة الزائفة)، هياكل موازاة البيانات وموازاة الحلقات، وبيئات التشغيل القائمة على المهام مع مجدولات سرقة العمل. ويتناول الجانب البرمجي الذي تظهر أسسه النظرية ضمن نماذج الذاكرة المشتركة.
Core questions
- كيف تنسق سلاسل التعليمات الوصول إلى البيانات المشتركة دون تضاربات أو جمود؟
- كيف يمكن التعبير عن الحلقات وعمليات المصفوفات للتنفيذ المتوازي؟
- كيف يتم موازنة المهام التي يتم إنشاؤها ديناميكيًا عبر النوى بكفاءة؟
Key theories
- المزامنة واتساق الذاكرة
- تعتمد برامج الذاكرة المشتركة الصحيحة على بدائيات المزامنة وفهم نموذج الذاكرة الذي يحكم متى تصبح كتابات إحدى سلاسل التعليمات مرئية لسلسلة أخرى، مع تسبب سوء الإدارة في تضاربات أو جمود.
- موازاة البيانات الموجهة
- يتيح OpenMP للمبرمجين إضافة توجيهات إلى الكود التسلسلي التي توازي الحلقات والمناطق عبر مساحة عنوان مشتركة، مما يوفر مسارًا تدريجيًا وقابلاً للنقل لموازاة الذاكرة المشتركة.
- جدولة المهام بسرقة العمل
- تقوم بيئات التشغيل القائمة على المهام بجدولة المهام التي يتم إنشاؤها ديناميكيًا عن طريق جعل المعالجات الخاملة تسرق العمل من المعالجات المشغولة، مما يحقق توازنًا جيدًا في الحمل ونفقات محدودة للحسابات المتوازية غير المنتظمة.
Clinical relevance
تعد برمجة الذاكرة المشتركة وموازاة البيانات هي الطريقة التي تستغل بها البرامج اليومية وحدات المعالجة المركزية متعددة النوى وكيف تحقق النوى العلمية والمحاكاة وأعباء العمل الكثيفة على المصفوفات تسريعًا على عقدة واحدة، مما يجعلها الشكل الأكثر انتشارًا للبرمجة المتوازية.
History
نضجت المعالجة المتعددة للذاكرة المشتركة مع نموذج سلاسل التعليمات ومعيار OpenMP لعام 1998 للموازاة الموجهة القابلة للنقل؛ قدمت مجدولات سرقة العمل من مشروع Cilk (منذ عام 1996 فصاعدًا) موازاة فعالة قائمة على المهام، وتكمن هذه الأفكار الآن وراء برمجة المعالجات متعددة النوى عبر اللغات.
Key figures
- Maurice Herlihy
- Nir Shavit
- Charles Leiserson
- Vipin Kumar
Related topics
Seminal works
- herlihy2008
- grama2003
- blumofe1996
Frequently asked questions
- ما هو تضارب البيانات ولماذا هو خطير؟
- يحدث تضارب البيانات عندما تصل سلسلتا تعليمات إلى نفس موقع الذاكرة بشكل متزامن وتقوم إحداهما على الأقل بالكتابة، دون مزامنة. تكون النتيجة غير محددة وقد تختلف بين عمليات التشغيل، مما ينتج أخطاء متقطعة يصعب إعادة إنتاجها، ولهذا السبب تعد المزامنة ضرورية في برامج الذاكرة المشتركة.