تم نشر HPVM 2.0 ، مترجم لوحدة المعالجة المركزية ووحدة معالجة الرسومات و FPGA ومسرعات الأجهزة

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

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

على عكس الأنظمة الأخرى ، حاول HPVM الجمع بين ثلاثة احتمالات لتنظيم الحوسبة غير المتجانسة - التمثيل الوسيط (IR) ، وهيكل مجموعة التعليمات الافتراضية (V-ISA) ، وجدولة وقت التشغيل ، بغض النظر عن لغة البرمجة والمعدات:

  • التمثيل الوسيط HPVM يوسع التمثيل الوسيط لتعليمات LLVM باستخدام رسم بياني لتدفق البيانات الهرمي لالتقاط التوازي على مستوى المهام والبيانات وخطوط الأنابيب الحسابية. يتضمن التمثيل الوسيط HPVM أيضًا تعليمات موجهة وذاكرة مشتركة. الغرض الرئيسي من استخدام التمثيل الوسيط هو توليد الكود الفعال والتحسين للأنظمة غير المتجانسة.
  • تقوم بنية مجموعة التعليمات الافتراضية (V-ISA) بتجريد الأجهزة منخفضة المستوى وتوحيد الأشكال المختلفة للتوازي وبنى الذاكرة باستخدام نموذج التزامن الأساسي فقط ، وهو مخطط تدفق البيانات. يسمح V-ISA بتحقيق إمكانية النقل بين أنواع مختلفة من الأجهزة للحوسبة المتوازية ويجعل من الممكن عدم فقدان الأداء عند استخدام عناصر مختلفة من الأنظمة غير المتجانسة. يمكن أيضًا استخدام Virtual ISA لتقديم رمز تنفيذي عام للبرنامج يمكن تشغيله على وحدات المعالجة المركزية (CPU) ووحدات معالجة الرسومات (GPU) و FPGAs والمسرعات المختلفة.
  • يتم تطبيق سياسات جدولة عمليات الحوسبة المرنة في وقت التشغيل ويتم تنفيذها على أساس المعلومات حول البرنامج (هيكل الرسم البياني) وعن طريق تجميع عقد البرنامج الفردية للتنفيذ على أي من أجهزة الحوسبة المستهدفة المتوفرة في النظام.

إن مولدات الأكواد التي طورها المشروع قادرة على ترجمة عقد التطبيق المحددة باستخدام ISA الظاهري للتنفيذ باستخدام NVIDIA GPUs (cuDNN و OpenCL) ، وتعليمات Intel AVX vector ، و FPGAs ، ووحدات المعالجة المركزية متعددة النوى x86. وتجدر الإشارة إلى أن أداء نتائج مترجمي HPVM يمكن مقارنته مع كود OpenCL المكتوب يدويًا لوحدات معالجة الرسومات وأجهزة الحوسبة المتجهة.

الابتكارات الرئيسية لـ HPVM 2.0:

  • تم اقتراح الواجهة الأمامية للغة Hetero-C ++ ، مما يبسط موازاة كود تطبيق C / C ++ للتجميع في HPVM. يحدد Hetero-C ++ امتدادات للتوازي على مستوى البيانات والمهام الهرمية التي تم تعيينها لرسومات مؤشر ترابط HPVM.
  • تمت إضافة خلفية FPGA لدعم تنفيذ التعليمات البرمجية على Intel FPGA. لتنظيم التنفيذ ، يتم استخدام Intel FPGA SDK لـ OpenCL.
  • تمت إضافة إطار عمل DSE (Design Space Exploration) ، والذي يتضمن تحسينات المترجم وآليات الكشف عن عنق الزجاجة لضبط التطبيقات تلقائيًا لمنصة أجهزة معينة. يحتوي الإطار على نموذج أداء جاهز لـ FPGA من Intel ويسمح لك بتوصيل المعالجات الخاصة بك لتحسين أي جهاز يدعمه HPVM. يمكن تطبيق التحسينات على مستوى الرسم البياني لتدفق البيانات HPVM ومستوى LLVM.
  • تم تحديث مكونات LLVM إلى الإصدار 13.0.
  • تمت إعادة تنظيم الكود لتسهيل التنقل عبر قاعدة التعليمات البرمجية والمكتبات والأدوات المساعدة.
  • تم تحسين البنية التحتية للاختبار ، وتمت إضافة اختبارات جديدة لمكونات HPVM المختلفة.

المصدر: opennet.ru

إضافة تعليق