Është publikuar HPVM 2.0, një përpilues për CPU, GPU, FPGA dhe përshpejtuesit e harduerit.

Projekti LLVM njoftoi lëshimin e HPVM 2.0 (Makina Virtuale Paralele Heterogene), një përpilues që synon thjeshtimin e programimit për sistemet heterogjene dhe ofrimin e mjeteve të gjenerimit të kodit për CPU, GPU, FPGA dhe përshpejtues harduerësh specifikë të domenit. Kodi i projektit shpërndahet nën licencën Apache 2.0.

Programimi për sistemet paralele heterogjene është i ndërlikuar nga prania e komponentëve në të njëjtin sistem që përdorin modele të ndryshme për arritjen e paralelizmit (bërthama CPU, instruksione vektoriale, GPU, etj.), grupe të ndryshme instruksionesh dhe hierarki të ndryshme memorie. Çdo sistem përdor kombinimin e vet të këtyre komponentëve. Ideja kryesore e projektit HPVM është përdorimi i një përfaqësimi të unifikuar të programeve të ekzekutuara paralelisht gjatë përpilimit, i cili mund të përdoret për lloje të ndryshme harduerësh që mbështesin llogaritjen paralele, duke përfshirë GPU, udhëzime vektoriale, procesorë me shumë bërthama, FPGA dhe çipa të ndryshëm përshpejtues të specializuar.

Ndryshe nga sistemet e tjera, HPVM u përpoq të kombinonte tre aftësi për organizimin e llogaritjeve heterogjene - një gjuhë programimi dhe një përfaqësim të ndërmjetëm të pavarur nga hardueri (IR), arkitekturë e grupit të instruksioneve virtuale (V-ISA) dhe planifikimin e kohës së ekzekutimit:

  • Përfaqësimi i ndërmjetëm HPVM zgjeron paraqitjen e ndërmjetme LLVM të udhëzimeve duke përdorur një grafik hierarkik të rrjedhës së të dhënave për të kapur paralelizmin e nivelit të detyrës, të dhënave dhe tubacionit. Përfaqësimi i ndërmjetëm HPVM përfshin gjithashtu udhëzime vektoriale dhe memorie të përbashkët. Qëllimi kryesor i përdorimit të një paraqitjeje të ndërmjetme është gjenerimi efikas i kodit dhe optimizimi për sistemet heterogjene.
  • Virtual Instruction Set Architecture (V-ISA) abstrakton veçoritë e harduerit të nivelit të ulët dhe unifikon forma të ndryshme të paralelizmit dhe arkitekturave të memories duke përdorur vetëm një model bazë paralelizmi - grafikun e rrjedhës së të dhënave. V-ISA ju lejon të arrini transportueshmëri midis llojeve të ndryshme të pajisjeve për llogaritjen paralele dhe bën të mundur që të mos humbni performancën kur përdorni elementë të ndryshëm të sistemeve heterogjene. ISA virtuale mund të përdoret gjithashtu për të ofruar kodin universal të programit të ekzekutueshëm që mund të funksionojë duke përdorur CPU, GPU, FPGA dhe përshpejtues të ndryshëm.
  • Politikat fleksibël të planifikimit për procesin llogaritës aplikohen në kohën e ekzekutimit dhe zbatohen si në bazë të informacionit rreth programit (strukturës së grafikut) ashtu edhe përmes përpilimit të nyjeve individuale të programit për ekzekutim në cilindo nga pajisjet e synuara llogaritëse të disponueshme në sistem.

Gjeneruesit e kodeve të zhvilluara nga projekti janë në gjendje të përkthejnë nyjet e aplikacionit të përcaktuara duke përdorur një ISA virtuale për ekzekutim duke përdorur GPU-të NVIDIA (cuDNN dhe OpenCL), instruksione vektoriale Intel AVX, FPGA dhe CPU me shumë bërthama x86. Vihet re se performanca e përkthyesve HPVM është e krahasueshme me kodin OpenCL të shkruar me dorë për GPU-të dhe pajisjet kompjuterike vektoriale.

Risitë kryesore të HPVM 2.0:

  • Është propozuar një front i gjuhës Hetero-C++, i cili thjeshton paralelizimin e kodit të aplikacionit në C/C++ për përpilim në HPVM. Hetero-C++ përcakton shtesat për paralelizmin e nivelit të të dhënave dhe detyrat hierarkike që hartohen në grafikët e fijeve HPVM.
  • Një prapavijë FPGA është shtuar për të ofruar mbështetje për ekzekutimin e kodit në Intel FPGA. Për të organizuar ekzekutimin, përdoret Intel FPGA SDK për OpenCL.
  • Është shtuar korniza DSE (Design Space Exploration), e cila përfshin optimizimet e përpiluesit dhe mekanizmat për identifikimin e pengesave për akordimin automatik të aplikacioneve për një platformë të caktuar harduerike. Korniza përmban një model të gatshëm të performancës për FPGA nga Intel dhe bën të mundur lidhjen e procesorëve tuaj për optimizim për çdo pajisje të mbështetur nga HPVM. Optimizimet mund të aplikohen në të dy nivelet e grafikut të rrjedhës së të dhënave HPVM dhe LLVM.
  • Komponentët LLVM janë përditësuar në versionin 13.0.
  • Kodi është riorganizuar për ta bërë më të lehtë navigimin në bazën e kodit, bibliotekat dhe shërbimet.
  • Infrastruktura e testimit është përmirësuar, janë shtuar teste të reja për komponentë të ndryshëm HPVM.

Burimi: opennet.ru

Shto një koment