قامت Intel بنشر مترجم ISPC 1.24، الذي يطبق نموذج الموازاة SPMD

قامت Intel بنشر ISPC 1.24 (مترجم برنامج SPMD الضمني)، الذي يجمع كود C مع امتدادات لدعم طريقة البرمجة المتوازية SPMD (برنامج واحد، بيانات متعددة)، حيث يتم تنفيذ مثيلات متعددة لنفس البرنامج بالتوازي مع مجموعات مختلفة من المدخلات. بيانات. كود المشروع مكتوب بلغة C++ ويتم توزيعه بموجب ترخيص BSD. يدعم العمل على أنظمة التشغيل Linux وWindows وmacOS وFreeBSD.

يتم تجميع برنامج C مع امتدادات SPMD للتنفيذ على الوحدات الحسابية SIMD التي توفرها وحدة المعالجة المركزية ووحدة معالجة الرسومات، مما يسمح لك باستخدام آليات توجيه SIMD في البرامج دون تحسينات منخفضة المستوى والاستخدام الصريح لتعليمات SIMD في التعليمات البرمجية. لكتابة وظائف قابلة للتوازي، يتم استخدام بناء الجملة والتعابير المألوفة للغة C. يمكن أن تتكامل وظائف SPMD هذه مع تطبيقات C/C++ وتتفاعل بشكل مباشر مع وظائفها وبنيتها. يمكن استخدام مصححات الأخطاء الموجودة لتصحيح أخطاء البرامج.

يتم استخدام البنية التحتية لـ LLVM كواجهة خلفية لإنشاء التعليمات البرمجية وتحسينها. يتم دعم استخدام تعليمات المتجهات x86 (SSE2 وSSE4 وAVX وAVX2 وAVX512) وARM (NEON)، بالإضافة إلى تفريغ الحسابات إلى جانب وحدة معالجة الرسومات (Intel Gen9 وXe). في البنيات التي تحتوي على وحدات متجهة SSE التي تعالج 4 عناصر في المرة الواحدة، يمكن أن يؤدي استخدام ISPC إلى تسريع تنفيذ البرنامج بمقدار 3 مرات أو أكثر، وفي البنيات التي تحتوي على وحدات متجهة AVX التي تعالج 8 عناصر في المرة الواحدة، يمكن أن يكون التسريع 5- 6 مرات. علاوة على ذلك، بالإضافة إلى حجم كتلة المتجهات، يتم تحقيق القياس أيضًا من خلال التنفيذ على نوى المعالج المختلفة.

الابتكارات الرئيسية المضافة في الإصدار 1.24 من ISPC:

  • تمت إضافة دعم للمعلمات غير المكتوبة في قوالب الوظائف. يمكنك الآن استخدام الأعداد الصحيحة الموحدة والقيم المذكورة (مع العلامة "الموحدة") كمعلمات للقالب.
  • تمت إضافة وظائف نقطية لأنواع int8 وint16 الموقعة وغير الموقعة التي تستخدم تعليمات AVX-VNNI وAVX512-VNN.
  • تمت إضافة تعريفات لوحدات الماكرو التي تحدد القيود على أبعاد الأرقام.
  • تمت إضافة منصات مستهدفة جديدة: avx2vnni-i32x4، وavx2vnni-i32x8، وavx2vnni-i32x16 مع دعم لتعليمات AVX-VNNI، وavx512icl-x4، وavx512icl-x8، وavx512icl-x16، وavx512icl-x32، 512 مع دعم AVX64 512-فني تعليمات.
  • تم حل المشكلات المتعلقة باستخدام تعليمات المتجهات غير الضرورية عند إنشاء تعليمات برمجية لوحدة معالجة الرسومات.
  • تم تصميم علامة سطر الأوامر "--pic" لمطابقة علامة "-fpic" في Clang وGC، وتم تصميم علامة "--PIC" لمطابقة علامة "-fPIC".

المصدر: opennet.ru

إضافة تعليق