Proiectul LLVM a introdus HPVM 1.0, un compilator pentru CPU, GPU, FPGA și acceleratoare

Dezvoltatorii proiectului LLVM au publicat lansarea compilatorului HPVM 1.0 (Heterogeneous Parallel Virtual Machine), care vizează simplificarea programării pentru sisteme eterogene și furnizarea de instrumente pentru generarea de cod pentru CPU-uri, GPU-uri, FPGA-uri și acceleratoare hardware specifice domeniului (suport pentru FGPA și acceleratoarele nu au fost incluse în versiunea 1.0). Codul proiectului este distribuit sub licența Apache 2.0.

Ideea principală a HPVM este de a oferi o reprezentare unificată a programelor executabile în paralel la compilare, care poate fi utilizată pentru execuție folosind diferite tipuri de hardware care acceptă calculul paralel, inclusiv GPU-uri, instrucțiuni vectoriale, procesoare multi-core, FPGA și diverse cipuri acceleratoare specializate. Spre deosebire de alte sisteme, HPVM a încercat să combine trei capacități pentru organizarea calculelor eterogene: reprezentare intermediară independentă de limbă și hardware, arhitectură virtuală a seturilor de instrucțiuni (ISA) și planificarea timpului de execuție.

Reprezentarea intermediară independentă de țintă (IR) HPVM se bazează pe reprezentarea instrucțiunilor intermediare LLVM 9.0 și o extinde cu un grafic al fluxului de date ierarhic pentru a capta paralelismul la nivel de sarcini, date și conducte. Reprezentarea intermediară HPVM include, de asemenea, instrucțiuni vectoriale și memorie partajată. Scopul principal al utilizării unei reprezentări intermediare este generarea eficientă a codului și optimizarea pentru sisteme eterogene.

Arhitectura setului de instrucțiuni virtuale (ISA) permite portabilitatea între diferite tipuri de hardware de calcul paralel și face posibilă să nu se piardă performanța atunci când se utilizează diferite elemente ale sistemelor eterogene. Virtual ISA poate fi, de asemenea, utilizat pentru a furniza cod de program executabil universal care poate rula folosind CPU-uri, GPU-uri, FPGA-uri și diverse acceleratoare.

În stadiul actual de dezvoltare, HPVM oferă generatoare de cod capabile să traducă noduri de aplicații definite folosind un ISA virtual pentru execuție folosind GPU-uri NVIDIA (cuDNN și OpenCL), instrucțiuni vectoriale Intel AVX și procesoare x86 multi-core. La runtime, HPVM aplică politici flexibile de planificare a proceselor de calcul, implementate atât pe baza informațiilor despre program (structură grafică), cât și prin compilarea nodurilor de program individuale pentru execuție pe oricare dintre dispozitivele de calcul țintă disponibile în sistem.

Se observă că utilizarea HPVM poate realiza o creștere semnificativă a productivității. Performanța traducătorilor HPVM este comparabilă cu codul OpenCL scris de mână pentru GPU și dispozitive de calcul vectoriale.

În comparație cu prima versiune de previzualizare, HPVM 1.0 include suport pentru operații cu tensori de algebră liniară, front-end-uri pentru Pytorch și Keras, aproximări ale operatorilor de convoluție și un cadru de reglare a aproximărilor care selectează automat aproximările optime pentru operații specifice tensorilor și selectează configurația care oferă performanțe optime.

Sursa: opennet.ru

Adauga un comentariu