Projekti LLVM prezantoi lançimin e kompajlerit HPVM 2.0 (Heterogeneous Parallel Virtual Machine), e cila ka si qëllim thjeshtimin e programimit për sisteme heterogjene dhe ofron mjete për gjenerimin e kodit për CPU, GPU, FPGA dhe akseleratorë hardware të bazuar në fusha të caktuara. Kodi i projektit shpërndahet nën licencën Apache 2.0.
Programimi për sisteme heterogjene paralele është i komplikuar për shkak të pranisë në një sistem të komponenteve që përdorin modele të ndryshme për arritjen e paralelizmit (në bërthama CPU, instrukcione vektoriale, GPU etj.), grupe instruksionesh të ndryshme dhe hierarkira memorie të ndryshme. Në çdo sistem përdoret një kombinim i tillë i komponentëve. Ideja kryesore e projektit HPVM është përdorimi i një përfaqësimi të unifikuar të programeve që ekzekutohen paralelisht gjatë kompajlimi, i cili mund të aplikohet për lloje të ndryshme pajisjesh që mbështesin shpërndarjen e llogaritjeve, duke përfshirë GPU, instrukcione vektoriale, procesorë shumëbërthamorë, FPGA dhe çipa-specializuar për akcelerim.
Ndryshe nga sistemet e tjera, nĂ« HPVM u pĂ«rpoqĂ«n tĂ« pĂ«rfshijnĂ« tre mundĂ«si pĂ«r organizimin e llogaritjeve heterogjene â njĂ« pĂ«rfaqĂ«sim tĂ« ndĂ«rmjetĂ«m tĂ« pavarur nga gjuha e programimit dhe hardueri (IR), njĂ« arkitekturĂ« virtuale tĂ« setit tĂ« instrukcioneve (V-ISA) dhe planifikim nĂ« kohĂ« ekzekutimi (runtime scheduling):
- Përfaqësimi i ndërmjetëm HPVM zgjerohet nga përfaqësimi i ndërmjetëm të instrukcioneve LLVM duke përdorur një graf të hierarkizuar të fluksit të të dhënave, duke lejuar përfshirjen e paralelizmit në nivelin e detyrave, të dhënave dhe tubacioneve të llogaritjeve. Përfaqësimi i ndërmjetëm HPVM gjithashtu përfshin instrukcione vektoriale dhe memorje të përbashkët. Qëllimi kryesor i përdorimit të përfaqësimit të ndërmjetëm është gjenerimi efektiv i kodit dhe optimizimi për sisteme heterogjene.
- Arkitektura virtuale e setit tĂ« instrukcioneve (V-ISA) abstrahon veçoritĂ« e nivelit tĂ« ulĂ«t tĂ« harduerit dhe unifikon format e ndryshme tĂ« paralelizmit dhe arkitekturave tĂ« memories, duke pĂ«rdorur vetĂ«m modelin bazĂ« tĂ« sigurisĂ« sĂ« paralelizmit â grafi i fluksit tĂ« tĂ« dhĂ«nave. V-ISA lejon qĂ« tĂ« arrihet portabiliteti midis llojeve tĂ« ndryshme tĂ« harduerĂ«ve pĂ«r llogaritje paralele dhe siguron qĂ« tĂ« mos humbasĂ« performancĂ«n kur pĂ«rdoren elemente tĂ« ndryshme tĂ« sistemeve heterogjene. V-ISA gjithashtu mund tĂ« aplikohet pĂ«r shpĂ«rndarjen e njĂ« kodi ekzekutiv univers tĂ« programeve, i cili mund tĂ« ekzekutohet duke angazhuar CPU, GPU, FPGA dhe akseleratorĂ« tĂ« ndryshĂ«m.
- Politikat fleksibile të planifikimit të procesit të llogaritjes aplikohet gjatë ekzekutimit dhe zbatohen si mbi bazën e informacionit të programit (strukturën e grafit), ashtu edhe përmes kompajlimit të nyjeve të veçanta të programit për t'u realizuar në çdo nga pajisjet e llogaritjeve objektivë që janë në dispozicion në sistem.
Generatorët e kodit të zhvilluar nga projekti janë në gjendje të translatojnë nyjet e aplikacioneve, të përkufizuara duke përdorur V-ISA, për t'u realizuar duke përdorur GPU-të NVIDIA (cuDNN dhe OpenCL), instrukcione vektoriale Intel AVX, FPGA dhe CPU shumëbërthamorë x86. Vlen të theksohet se performanca e rezultateve të punës së përkthyesve HPVM është e krahasueshme me kodin e shkruar me dorë në OpenCL për GPU dhe pajisje llogaritëse vektoriale.
Novitete kryesore në HPVM 2.0:
- ĂshtĂ« propozuar njĂ« front-end gjuhĂ«sor Hetero-C++, qĂ« thjeshton paralelizimin e kodit tĂ« aplikacioneve nĂ« gjuhĂ«t C/C++ pĂ«r kompajlim nĂ« HPVM. Hetero-C++ pĂ«rcakton zgjerime pĂ«r paralelizmin nĂ« nivelin e tĂ« dhĂ«nave dhe detyrave hierarkike, tĂ« cilat transformohen nĂ« grafet e fluksit tĂ« HPVM.
- ĂshtĂ« shtuar njĂ« b backend FPGA, duke siguruar mbĂ«shtetje pĂ«r ekzekutimin e kodit nĂ« FPGA tĂ« prodhuara nga Intel. PĂ«r organizimin e ekzekutimit pĂ«rdoret Intel FPGA SDK pĂ«r OpenCL.
- ĂshtĂ« shtuar njĂ« kuadĂ«r DSE (Design Space Exploration), qĂ« pĂ«rfshin optimizime tĂ« kompajluesit dhe mekanizma pĂ«r identifikimin e ngathtimeve pĂ«r tuning automatik tĂ« aplikacioneve pĂ«r njĂ« platformĂ« hardware tĂ« caktuar. Kuadri pĂ«rmban njĂ« model tĂ« gatshĂ«m tĂ« performancĂ«s pĂ«r FPGA nga Intel dhe ofron mundĂ«sinĂ« e lidhjes sĂ« trajtuesve tĂ« vet pĂ«r optimizim pĂ«r çdo pajisje qĂ« mbĂ«shtetet nga HPVM. Optimizimet mund tĂ« aplikohen si nĂ« nivelin e grafit tĂ« fluksit tĂ« dhĂ«nave HPVM, ashtu edhe nĂ« nivelin LLVM.
- Komponentët e LLVM janë azhurnuar në versionin 13.0.
- ĂshtĂ« bĂ«rĂ« njĂ« reorganizim i kodit, i cili synon tĂ« thjeshtojĂ« navigimin nĂ« bazĂ«n e kodit, librarive dhe mjeteve.
- Infrastruktura për testim është përmirësuar, janë shtuar teste të reja për komponentët e ndryshëm të HPVM.
Burimi: opennet.ru
