HPVM 2.0, CPU, GPU, FPGA va apparat tezlatgichlari uchun kompilyator chop etildi

LLVM loyihasi HPVM 2.0 (Heterojen Parallel Virtual Mashina) chiqarilishini e'lon qildi, u heterojen tizimlar uchun dasturlashni soddalashtirish va CPU, GPU, FPGA va domenga xos apparat tezlatgichlari uchun kod yaratish vositalarini taqdim etishga qaratilgan kompilyator. Loyiha kodi Apache 2.0 litsenziyasi ostida tarqatiladi.

Heterojen parallel tizimlar uchun dasturlash bir xil tizimda parallelizmga erishish uchun turli modellardan (CPU yadrolari, vektor ko'rsatmalari, GPU va boshqalar), turli ko'rsatmalar to'plamlari va turli xil xotira ierarxiyalaridan foydalanadigan komponentlarning mavjudligi bilan murakkablashadi. Har bir tizim ushbu komponentlarning o'ziga xos kombinatsiyasidan foydalanadi. HPVM loyihasining asosiy g'oyasi kompilyatsiya qilishda parallel ravishda bajariladigan dasturlarning birlashtirilgan ko'rinishidan foydalanishdan iborat bo'lib, ular parallel hisoblashni qo'llab-quvvatlaydigan har xil turdagi apparatlar, jumladan GPU, vektor ko'rsatmalari, ko'p yadroli protsessorlar, FPGA va boshqalar uchun ishlatilishi mumkin. turli ixtisoslashtirilgan tezlatgich chiplari.

Boshqa tizimlardan farqli o'laroq, HPVM heterojen hisoblashni tashkil qilish uchun uchta imkoniyatni birlashtirishga harakat qildi - dasturlash tili va apparatdan mustaqil oraliq vakillik (IR), virtual ko'rsatmalar to'plami arxitekturasi (V-ISA) va ish vaqtini rejalashtirish:

  • HPVM oraliq ko'rinishi vazifa, ma'lumotlar va quvur liniyasi darajalarida parallellikni olish uchun ierarxik ma'lumotlar oqimi grafigi yordamida ko'rsatmalarning LLVM oraliq ko'rinishini kengaytiradi. HPVM oraliq vakili shuningdek vektor ko'rsatmalari va umumiy xotirani o'z ichiga oladi. Oraliq vakillikdan foydalanishning asosiy maqsadi samarali kod yaratish va heterojen tizimlar uchun optimallashtirishdir.
  • Virtual ko'rsatmalar to'plami arxitekturasi (V-ISA) past darajadagi apparat xususiyatlarini abstraktlashtiradi va faqat asosiy parallellik modeli - ma'lumotlar oqimi grafigi yordamida parallelizm va xotira arxitekturasining turli shakllarini birlashtiradi. V-ISA parallel hisoblash uchun har xil turdagi uskunalar o'rtasida portativlikka erishishga imkon beradi va heterojen tizimlarning turli elementlaridan foydalanganda unumdorlikni yo'qotmaslik imkonini beradi. Virtual ISA protsessorlar, GPUlar, FPGAlar va turli tezlatkichlar yordamida ishlashi mumkin bo'lgan universal bajariladigan dastur kodini yetkazib berish uchun ham foydalanish mumkin.
  • Hisoblash jarayoni uchun moslashuvchan rejalashtirish siyosati ish vaqtida qo'llaniladi va dastur (grafik tuzilma) haqidagi ma'lumotlarga asoslanib ham, tizimda mavjud bo'lgan har qanday maqsadli hisoblash qurilmalarida bajarish uchun individual dastur tugunlarini kompilyatsiya qilish orqali amalga oshiriladi.

Loyiha tomonidan ishlab chiqilgan kod generatorlari NVIDIA GPU (cuDNN va OpenCL), Intel AVX vektor ko'rsatmalari, FPGA va ko'p yadroli x86 protsessorlari yordamida bajarish uchun virtual ISA yordamida aniqlangan dastur tugunlarini tarjima qilishga qodir. Qayd etilishicha, HPVM tarjimonlarining ishlashi GPU va vektorli hisoblash qurilmalari uchun qoβ€˜lda yozilgan OpenCL kodiga qiyoslanadi.

HPVM 2.0 ning asosiy yangiliklari:

  • HPVM da kompilyatsiya qilish uchun C/C++ da ilova kodini parallellashtirishni soddalashtiradigan Hetero-C++ tilidagi frontend taklif qilindi. Hetero-C++ maΚΌlumotlar darajasidagi parallelizm va HPVM ip grafiklariga mos keladigan ierarxik vazifalar uchun kengaytmalarni belgilaydi.
  • Intel FPGA-larda kod bajarilishini qo'llab-quvvatlash uchun FPGA backend qo'shildi. Amalga oshirishni tashkil qilish uchun OpenCL uchun Intel FPGA SDK ishlatiladi.
  • DSE (Design Space Exploration) ramkasi qo'shildi, u kompilyatorni optimallashtirish va ma'lum bir apparat platformasi uchun ilovalarni avtomatik sozlash uchun qiyinchiliklarni aniqlash mexanizmlarini o'z ichiga oladi. Ramka Intel'dan FPGA'lar uchun tayyor ishlash modelini o'z ichiga oladi va HPVM tomonidan qo'llab-quvvatlanadigan har qanday qurilmalar uchun optimallashtirish uchun o'z protsessorlaringizni ulash imkonini beradi. Optimallashtirish HPVM va LLVM ma'lumotlar oqimi grafik darajalarida qo'llanilishi mumkin.
  • LLVM komponentlari 13.0 versiyasiga yangilandi.
  • Kod bazasi, kutubxonalar va yordamchi dasturlarda harakat qilishni osonlashtirish uchun kod qayta tashkil etildi.
  • Sinov infratuzilmasi yaxshilandi, turli HPVM komponentlari uchun yangi testlar qo'shildi.

Manba: opennet.ru

a Izoh qo'shish