HPVM 2.0, CPU, GPU, FPGA және аппараттық жеделдеткіштерге арналған компилятор жарияланды

LLVM жобасы гетерогенді жүйелер үшін бағдарламалауды жеңілдетуге және CPU, GPU, FPGA және доменге тән аппараттық жеделдеткіштер үшін код генерациялау құралдарын қамтамасыз етуге бағытталған компилятор HPVM 2.0 (Гетерогенді параллельді виртуалды машина) шығарылымын жариялады. Жоба коды Apache 2.0 лицензиясы бойынша таратылады.

Гетерогенді параллель жүйелер үшін бағдарламалау бір жүйеде параллелизмге жету үшін әртүрлі модельдерді (CPU ядролары, векторлық нұсқаулар, GPU және т.б.), әртүрлі командалар жиынын және әртүрлі жады иерархияларын пайдаланатын компоненттердің болуымен қиындайды. Әрбір жүйе осы компоненттердің өзіндік комбинациясын пайдаланады. HPVM жобасының негізгі идеясы компиляция кезінде параллель орындалатын бағдарламалардың біртұтас көрінісін пайдалану болып табылады, оны параллельді есептеулерді қолдайтын аппараттық құралдардың әртүрлі түрлерінде, соның ішінде GPU, векторлық нұсқаулар, көп ядролы процессорлар, FPGA және әртүрлі мамандандырылған үдеткіш чиптер.

Басқа жүйелерден айырмашылығы, HPVM гетерогенді есептеулерді ұйымдастырудың үш мүмкіндігін біріктіруге тырысты - бағдарламалау тілі және аппараттық құралдан тәуелсіз аралық ұсыну (IR), виртуалды нұсқаулар жинағы архитектурасы (V-ISA) және жұмыс уақытын жоспарлау:

  • HPVM аралық көрінісі тапсырма, деректер және құбыр деңгейлерінде параллелизмді түсіру үшін иерархиялық деректер ағынының графигін пайдалану арқылы нұсқаулардың LLVM аралық көрінісін кеңейтеді. HPVM аралық көрінісі сонымен қатар векторлық нұсқаулар мен ортақ жадты қамтиды. Аралық ұсынуды пайдаланудың негізгі мақсаты кодты тиімді генерациялау және гетерогенді жүйелер үшін оңтайландыру болып табылады.
  • Виртуалды нұсқаулар жинағы архитектурасы (V-ISA) төмен деңгейлі аппараттық құралдардың мүмкіндіктерін қысқартады және параллелизмнің әртүрлі формаларын және жад архитектураларын тек негізгі параллелизм үлгісін — деректер ағынының графигін пайдалана отырып біріктіреді. V-ISA параллельді есептеулер үшін жабдықтың әртүрлі типтері арасында тасымалдануға қол жеткізуге мүмкіндік береді және гетерогенді жүйелердің әртүрлі элементтерін пайдалану кезінде өнімділікті жоғалтпауға мүмкіндік береді. Виртуалды ISA сонымен қатар процессорлар, графикалық процессорлар, FPGA және әртүрлі үдеткіштер арқылы жұмыс істей алатын әмбебап орындалатын бағдарлама кодын жеткізу үшін пайдаланылуы мүмкін.
  • Есептеу процесіне арналған икемді жоспарлау саясаты орындау уақытында қолданылады және бағдарлама (график құрылымы) туралы ақпарат негізінде де, жүйеде қол жетімді кез келген мақсатты есептеу құрылғыларында орындау үшін жеке бағдарлама түйіндерін құрастыру арқылы да жүзеге асырылады.

Жоба әзірлеген код генераторлары NVIDIA GPU (cuDNN және OpenCL), Intel AVX векторлық нұсқаулары, FPGA және көп ядролы x86 процессорлары арқылы орындау үшін виртуалды ISA көмегімен анықталған қолданба түйіндерін аударуға қабілетті. HPVM аудармашыларының өнімділігі графикалық процессорлар мен векторлық есептеу құрылғылары үшін қолмен жазылған OpenCL кодымен салыстыруға болатыны атап өтілген.

HPVM 2.0 негізгі инновациялары:

  • HPVM жүйесінде компиляциялау үшін C/C++ тілінде қолданбалы кодты параллелизациялауды жеңілдететін Hetero-C++ тілінің фронтенді ұсынылды. Hetero-C++ деректер деңгейіндегі параллелизмге арналған кеңейтімдерді және HPVM ағынының графиктерімен салыстырылатын иерархиялық тапсырмаларды анықтайды.
  • Intel FPGA құрылғыларында кодты орындауға қолдау көрсету үшін FPGA сервері қосылды. Орындауды ұйымдастыру үшін OpenCL үшін Intel FPGA SDK пайдаланылады.
  • DSE (Design Space Exploration) құрылымы қосылды, ол компиляторды оңтайландыруды және берілген аппараттық платформа үшін қолданбаларды автоматты түрде баптау үшін кедергілерді анықтау механизмдерін қамтиды. Рамка Intel фирмасының FPGA үшін дайын өнімділік үлгісін қамтиды және HPVM қолдайтын кез келген құрылғыларды оңтайландыру үшін өзіңіздің процессорларыңызды қосуға мүмкіндік береді. Оңтайландыруларды HPVM және LLVM деректер ағынының графигі деңгейлерінің екеуінде де қолдануға болады.
  • LLVM құрамдастары 13.0 нұсқасына жаңартылды.
  • Код код базасын, кітапханаларды және утилиталарды шарлауды жеңілдету үшін қайта ұйымдастырылды.
  • Тестілеу инфрақұрылымы жетілдірілді, әртүрлі HPVM компоненттері үшін жаңа сынақтар қосылды.

Ақпарат көзі: opennet.ru

пікір қалдыру