شميم
SHMEM (اختصارًا لمكتبة "الذاكرة المشتركة" من شركة Cray Research [ 1 ] ) هي مجموعة من مكتبات البرمجة المتوازية، توفر واجهات معالجة متوازية أحادية الجانب بتقنية RDMA لأجهزة الكمبيوتر العملاقة ذات الذاكرة الموزعة منخفضة زمن الاستجابة. وقد تم لاحقًا عكس هندسة اختصار SHMEM ليعني "الذاكرة الهرمية المتناظرة" [ 2 ] . وفي وقت لاحق، تم توسيع نطاقها ليشمل مجموعات أجهزة الكمبيوتر المتوازية ذات الذاكرة الموزعة ، وتُستخدم كواجهة برمجة متوازية أو كواجهة منخفضة المستوى لبناء أنظمة ولغات مساحة العناوين العالمية المقسمة (PGAS) [ 3 ] . وقد أنشأ ريتشارد سميث في شركة Cray Research مكتبة "Libsma"، وهي أول مكتبة SHMEM، عام 1993 كمجموعة من الواجهات البسيطة للوصول إلى أجهزة الاتصال بين المعالجات في جهاز CRAY T3D. تم تطبيق برنامج SHMEM بواسطة Cray Research وSGI وCray Inc. وQuadrics وHP وGSHMEM وIBM وQLogic وMellanox وجامعات هيوستن وفلوريدا وجامعة ستوني بروك وجامعة تكساس التقنية؛ كما يوجد برنامج مفتوح المصدر OpenSHMEM. [ 4 ]
أرست تقنية SHMEM أسس الاتصال أحادي الاتجاه منخفض زمن الاستجابة (أقل من ميكروثانية). [ 5 ] بعد استخدامها على جهاز CRAY T3E، [ 6 ] تراجع استخدامها نظرًا لقلة الأجهزة القادرة على توفير زمن استجابة يقارب الميكروثانية اللازم للحفاظ على كفاءة اتصالها المميز بالكلمات المفردة. مع ظهور تقنيات الربط البيني الشائعة التي تعمل بزمن استجابة أقل من ميكروثانية، استُخدمت تقنية SHMEM لتلبية الحاجة إلى أساليب اتصال متوازية فائقة الكفاءة وقابلة للنقل للحوسبة فائقة السرعة (إكساسكيل). [ 7 ]
يمكن تشغيل البرامج المكتوبة باستخدام SHMEM على عدة أجهزة كمبيوتر متصلة بشبكة عالية الأداء، مدعومة بمكتبة SHMEM المستخدمة. يُشغّل كل جهاز نسخة من البرنامج ( SPMD )؛ تُسمى كل نسخة منها وحدة معالجة (PE). يمكن لوحدات المعالجة (PEs) طلب عمليات الوصول إلى الذاكرة عن بُعد من مكتبة SHMEM، مثل قراءة البيانات (عملية shmem_get) أو كتابتها (عملية shmem_put). عمليات الند للند أحادية الجانب، مما يعني عدم الحاجة إلى تعاون فعّال من الخيط البعيد لإتمام العملية (ولكن يمكنه استطلاع ذاكرته المحلية بحثًا عن التغييرات باستخدام shmem_wait). يمكن إجراء العمليات على أنواع بيانات قصيرة مثل البايتات أو الكلمات، أو على أنواع بيانات أطول مثل المصفوفات، وأحيانًا بخطوات متساوية أو بفهرسة (يتم إرسال بعض عناصر المصفوفة فقط). بالنسبة لأنواع البيانات القصيرة، يمكن لـ SHMEM إجراء عمليات ذرية ( CAS ، جلب وإضافة، زيادة ذرية، إلخ) حتى في الذاكرة البعيدة. كما توجد طريقتان مختلفتان للمزامنة: [ 4 ] مزامنة التحكم في المهام (الحواجز والأقفال) ووظائف لفرض حماية الذاكرة وترتيبها. يحتوي SHMEM على العديد من العمليات الجماعية التي يجب أن تبدأها جميع وحدات المعالجة، مثل الاختزال والبث والتجميع.
تحتوي كل وحدة معالجة (PE) على جزء من ذاكرتها مُعرّف كقطاعات "متناظرة" (أو منطقة ذاكرة مشتركة)، بينما تكون الذاكرة الأخرى خاصة. ولا يمكن الوصول إلا إلى الذاكرة "المشتركة" من وحدات المعالجة البعيدة في عملية أحادية الجانب. ويمكن للمبرمجين استخدام بنيات الذاكرة الثابتة أو إجراءات shmem_malloc/shmem_free لإنشاء كائنات ذات عناوين متناظرة تمتد عبر وحدات المعالجة.
وظائف SHMEM النموذجية
- init() — بدء جميع عناصر المعالجة (PE)
- _my_pe() — اطلب من SHMEM إرجاع مُعرّف PE الخاص بالخيط الحالي
- shmem_barrier_all() — انتظر حتى تصل جميع وحدات المعالجة إلى الحاجز؛ ثم مكّنها من المضي قدمًا.
- shmem_put(target, source, length, pe) — كتابة بيانات بطول "length" إلى العنوان البعيد "target" على PE ذي المعرف "pe" من العنوان المحلي "source"
- shmem_get(target, source, length, pe) — قراءة البيانات ذات الطول "length" من العنوان البعيد "source" على PE مع المعرف "pe" وحفظ قيم القراءة في العنوان المحلي "target" [ 8 ]
قائمة تطبيقات SHMEM
- Cray Research: Original SHMEM for Cray T3D , Cray T3E , and Cray Research PVP supercomputers [ 9 ]
- SGI: SGI-SHMEM للأنظمة المزودة بتقنية NUMAlink و Altix المبنية باستخدام محولات شبكة InfiniBand
- شركة كراي: MP-SHMEM لجهاز Unicos MP (الحاسوب العملاق X1E)
- شركة كراي: LC-SHMEM لطابعات Unicos LC (Cray XT3، XT4، XT5)
- Quadrics: Q-SHMEM [ 10 ] لمجموعات Linux مع اتصال QsNet البيني [ 9 ]
- سايكلوبس-64 شميم
- HP SHMEM [ 9 ]
- IBM SHMEM [ 9 ]
- GPSHMEM [ 9 ]
- يعتمد NVSHMEM على واجهة برمجة تطبيقات OpenSHMEM ويدعم وحدات معالجة الرسومات، بما في ذلك الاتصالات التي يبدأها المضيف والجهاز.
تطبيقات OpenSHMEM
OpenSHMEM هو جهد قياسي من SGI و Open Source Software Solutions, Inc.
- جامعة هيوستن: مرجع OpenSHMEM [ 4 ] [ 9 ]
- Mellanox ScalableSHMEM [ 9 ]
- Portals-SHMEM (أعلى واجهة Portals )
- جامعة فلوريدا: Gator SHMEM [ 9 ]
- يتضمن Open MPI تطبيقًا لـ OpenSHMEM [ 11 ]
- معالج Adapteva Epiphany المساعد [ 12 ]
- يدعم Sandia OpenSHMEM (SOS) واجهات برمجة تطبيقات الشبكات المتعددة [ 13 ]
- يعتمد OpenSHMEM عبر MPI ( OSHMPI ) الإصدار 1 على اتصال MPI أحادي الجانب ويدعم مواصفات OpenSHMEM 1.2 [ 14 ].
- يعتمد OpenSHMEM عبر MPI ( OSHMPI ) الإصدار 2 على اتصال MPI أحادي الجانب ويدعم مواصفات OpenSHMEM 1.4 [ 15 ].
- يتضمن MVAPICH2-X تطبيق OpenSHMEM
- يوفر shmem4py دعمًا بلغة بايثون لوظائف مواصفات OpenSHMEM 1.5، كغلاف حول تطبيق مكتوب بلغة C. [ 16 ]
العيوب
في السنوات الأولى، كان الوصول إلى SHMEM متاحًا فقط على بعض أجهزة Cray Research (لاحقًا بالإضافة إلى SGI) [ 1 ] المجهزة بشبكات خاصة، مما حد من انتشار المكتبة وجعلها حكرًا على البائع (على سبيل المثال، أوصت Cray Research بإعادة كتابة برامج MPI جزئيًا لدمج استدعاءات MPI وshmem، مما يجعل البرنامج غير قابل للنقل إلى بيئة clear-MPI أخرى).
لم يتم تعريف SHMEM كمعيار، [ 9 ] [ 1 ] لذا تم إنشاء العديد من إصدارات مكتبات SHMEM غير المتوافقة من قبل موردين آخرين. احتوت المكتبات على أسماء ملفات تضمين مختلفة، وأسماء وظائف إدارة مختلفة لبدء تشغيل وحدات المعالجة أو الحصول على معرّف وحدة المعالجة الحالية، [ 9 ] كما تم تغيير بعض الوظائف أو عدم دعمها.
يمكن تشغيل متغيرات مكتبات SHMEM فوق أي مكتبة MPI، حتى عندما تحتوي المجموعة على إيثرنت غير مُحسَّن بتقنية RDMA فقط ، ومع ذلك فإن الأداء سيكون عادةً أسوأ من بروتوكولات الشبكات المحسنة الأخرى.
ينبغي تخصيص الذاكرة في المنطقة المشتركة باستخدام وظائف خاصة ( shmalloc / shfree )، وليس باستخدام وظيفة malloc الخاصة بالنظام . [ 9 ]
تم التغلب على العديد من عيوب SHMEM باستخدام OpenSHMEM على وصلات الربط البيني الشائعة ذات زمن الاستجابة دون الميكروثانية، مدفوعةً بتطوير الحوسبة فائقة السرعة. [ 7 ]
انظر أيضاً
- واجهة تمرير الرسائل (وخاصة العمليات أحادية الجانب لـ MPI-2)
- الرسائل النشطة
- لغة C المتوازية الموحدة (إحدى لغات PGAS، ويمكن تنفيذها فوق SHMEM)
مراجع
- ١ ٢ ٣ شركة كراي للأبحاث (١٩٩٩). دليل تحسين أداء معالجات كراي T3E بلغة C و C++ (ملف PDF) (تقرير فني). الصفحات ٤٥-٨٣ . ٠٠٤-٢١٧٨-٠٠٢. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ ٢٠١٤-٠٢-٠١.
- ↑ مقدمة في الحوسبة المتوازية - 3.11 أعمال ذات صلة // مقرر cse590o، جامعة واشنطن، شتاء 2002؛ صفحة 154
- ↑ "تسريعات جديدة للبرمجة المتوازية" (ملف PDF) . ميلانوكس. 2012. تاريخ الاطلاع: 18 يناير 2014.
يُستخدم/يُقترح استخدام SHMEM كواجهة منخفضة المستوى لتطبيقات PGAS
. - ١ ٢ ٣ بول، ستيفن (٢٠١١). "OpenSHMEM - نحو نموذج RMA موحد". موسوعة الحوسبة المتوازية . ص ١٣٧٩-١٣٩١ . doi : 10.1007/978-0-387-09766-4_490 . ISBN 978-0-387-09765-7.
- ↑ أدوات لتقييم وتتبع ومحاكاة تطبيقات SHMEM // CUG 2012، ورقة بحثية من مركز سان دييغو للحوسبة الفائقة ومختبر أوك ريدج الوطني
- ↑ التطورات الحديثة في الآلة الافتراضية المتوازية وتمرير الرسائل ...، المجلد 11، الصفحة 59: "انتشر استخدام الاتصال أحادي الجانب كنموذج برمجة في البداية بفضل مكتبة SHMEM على Cray T3D و T3E ..."
- 1 2 "OpenSHMEM 2015" . www.csm.ornl.gov . تم الاطلاع عليه بتاريخ 10-04-2017 .
- ↑ SGI TPL. "man shmem_get" . مؤرشف من الأصل بتاريخ 2014-02-01.
- 1 2 3 4 5 6 7 8 9 10 11 نانججودا، رام؛ بوبالي، سواروب؛ كورتيس، توني (2012). "دليل OpenSHMEM" (ملف PDF) . جامعة هيوستن، تكساس. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 1 فبراير 2014.
- ↑ دليل برمجة Shmem // Quadrics، 2000-2001
- ↑ OpenMPI
- ↑ جيمس روس وديفيد ريتشي. تطبيق OpenSHMEM لمعالج Adapteva Epiphany المساعد. في وقائع ورشة العمل الثالثة حول OpenSHMEM والتقنيات ذات الصلة، "OpenSHMEM 2016" . www.csm.ornl.gov .سبرينغر، 2016.
- ↑ Sandia OpenSHMEM (SOS) على Github
- ↑ هاموند، جيف ر.؛ غوش، سايان؛ تشابمان، باربرا م. (2014). "تنفيذ OpenSHMEM باستخدام اتصال أحادي الجانب MPI-3" . في: بول، ستيفن؛ هيرنانديز، أوسكار؛ شاميس، بافيل (محررون). OpenSHMEM والتقنيات ذات الصلة: تجارب، تطبيقات، وأدوات . سلسلة محاضرات في علوم الحاسوب. المجلد 8356. تشام: دار نشر سبرينغر الدولية. الصفحات 44-58 . doi : 10.1007/978-3-319-05215-1_4 . ISBN 978-3-319-05215-1.
- ↑ سي، مين؛ فو، هوانسونغ؛ هاموند، جيف ر.؛ بالاجي، بافان (2022). "OpenSHMEM عبر MPI كمنافس للأداء: تحليل شامل وتحسينات" . OpenSHMEM والتقنيات ذات الصلة. OpenSHMEM في عصر الحوسبة فائقة الأداء والشبكات الذكية . سلسلة محاضرات في علوم الحاسوب. المجلد 13159. دار نشر سبرينغر الدولية. الصفحات 39-60 . doi : 10.1007/978-3-031-04888-3_3 . ISBN 978-3-031-04887-6.
- ↑ روغوفسكي، مارسين؛ هاموند، جيف ر.؛ كيز، ديفيد إي.؛ دالسين، ليساندرو (2023). "shmem4py: اتصال أحادي الجانب عالي الأداء لتطبيقات بايثون". وقائع مؤتمر منصة الحوسبة العلمية المتقدمة . الصفحات 1-10 . doi : 10.1145/3624062.3624602 .
للمزيد من القراءة
- إجراءات الوصول إلى الذاكرة المشتركة (SHMEM) // أبحاث كراي، 1995
روابط خارجية
- استخدام SHMEM على CRAY T3E
- man intro_shmem (SGI TPL) - مقدمة لنموذج برمجة SHMEM
- OpenSHMEM : جهد لإنشاء مواصفات لواجهة برمجة تطبيقات موحدة للبرمجة المتوازية في مساحة العناوين العالمية المقسمة.
- الحوسبة المتوازية
- واجهات برمجة التطبيقات
