Zhvilluesit e projektit LLVM publikuan versionin e kompilatorit HPVM 1.0 (Heterogeneous Parallel Virtual Machine), i destinuar për të thjeshtuar programimin për sisteme të heterogjene dhe ofron mjete për gjenerimin e kodit për CPU, GPU, FPGA dhe accelerators hardware të orientuar nga subjekti (mbështetje për FGPA dhe accelerators nuk u përfshi në versionin 1.0). Kodi i projektit shpërndahet nën licencën Apache 2.0.
Ideja kryesore e HPVM është përdorimi i një paraqitjeje të unifikuar për programet që ekzekutohen paralelisht gjatë kompikimit, e cila mund të përdoret për ekzekutim me pajisje të ndryshme që mbështesin paralelizimin e llogaritjeve, përfshirë GPU, instrukcionet vektoriale, procesorët multiniveli, FPGA dhe chip-et e specializuar për akcelerim. Ndryshe nga sistemi të tjerë, HPVM përpiqet të kombinojë tre mundësi për organizimin e llogaritjeve heterogjene: një përfaqësi të ndërmjetme të pavarur nga gjuha e programimit dhe pajisja, një arkitekturë virtuale të setit të komandave (ISA), dhe planifikim në kohën e ekzekutimit (runtime scheduling).
Përfaqësimi i pavarur nga sistemi i synuar në HPVM është i bazuar në përfaqësimin e ndërmjetëm të instrukcioneve LLVM 9.0 dhe e zgjeron atë me një grafik hierarkik të rrjedhave të të dhënave, duke lejuar mbulimin e paralelizmit në nivelin e detyrave, të dhënave dhe pipeline-ve të llogaritjeve. Përfaqësimi i ndërmjetëm të HPVM gjithashtu përfshin instrukcione vektoriale dhe memorje të ndarë. Qëllimi kryesor i përdorimit të përfaqësimit të ndërmjetëm është gjenerimi dhe optimizimi efikas i kodit për sisteme heterogjene.
Arkitektura virtuale e setit të komandave (ISA) lejon transferueshmëri midis llojeve të ndryshme të pajisjeve për llogaritjet paralel dhe ofron mundësinë për të mos humbur performancën kur përdoren elemente të ndryshme të sistemeve heterogjene. ISA virtuale gjithashtu mund të përdoret për ofrimin e kodit ekzekutues universal të programeve, i cili mund të ekzekutohet me CPU, GPU, FPGA dhe akceleratorë të ndryshëm.
Në këtë fazë të zhvillimit, HPVM ofron gjenerues kodesh të aftë për të transliteruar nyjat e aplikacioneve, të përcaktuara me ISA virtuale, për ekzekutim duke përdorur GPU NVIDIA (cuDNN dhe OpenCL), instrukcione vektoriale Intel AVX dhe CPU multinivel x86. Gjatë ekzekutimit, HPVM përdor politika fleksibël të planifikimit të procesit të llogaritjeve, të realizuara si në bazë të informacionit mbi programin (struktura e grafit), ashtu edhe përmes kompilimit të nyjave të veçanta të programit për ekzekutim në ndonjë nga pajisjet e llogaritjeve të synuara dispozitave në sistem.
Vërehet se përdorimi i HPVM sjell një rritje të dukshme të performancës. Performanca e rezultateve të gjeneruara nga HPVM është në përputhje me kodin e shkruar me dorë në OpenCL për GPU dhe pajisjet e llogaritjeve vektoriale.
Krahas versionit të parë paraprak, versioni HPVM 1.0 përfshin mbështetje për operacione tensoriale të algebrës lineare, frontend për Pytorch dhe Keras, aproksimimin e operatorëve konvencionalë dhe një framework për konfigurimin e aproksimimit, i cili zgjedh automatikisht aproksimimet optimale për operacione të caktuara tensoriale dhe zgjidh konfigurimin që siguron performancën optimale.
Burimi: opennet.ru
