Ang HPVM 2.0, isang compiler para sa CPU, GPU, FPGA at hardware accelerators, ay nai-publish

Inanunsyo ng proyekto ng LLVM ang paglabas ng HPVM 2.0 (Heterogeneous Parallel Virtual Machine), isang compiler na naglalayong pasimplehin ang programming para sa mga heterogenous system at magbigay ng mga tool sa pagbuo ng code para sa mga CPU, GPU, FPGA, at mga accelerator ng hardware na partikular sa domain. Ang code ng proyekto ay ipinamahagi sa ilalim ng lisensya ng Apache 2.0.

Ang programming para sa mga heterogenous parallel system ay kumplikado sa pagkakaroon ng mga bahagi sa parehong system na gumagamit ng iba't ibang mga modelo para sa pagkamit ng parallelism (mga core ng CPU, mga tagubilin sa vector, GPU, atbp.), iba't ibang mga set ng pagtuturo at iba't ibang mga hierarchy ng memorya. Ang bawat sistema ay gumagamit ng sarili nitong kumbinasyon ng mga bahaging ito. Ang pangunahing ideya ng proyekto ng HPVM ay ang paggamit ng isang pinag-isang representasyon ng mga parallel-executed program kapag nag-compile, na maaaring magamit para sa iba't ibang uri ng hardware na sumusuporta sa parallel computing, kabilang ang mga GPU, mga tagubilin sa vector, mga multi-core na processor, FPGA at iba't ibang dalubhasang accelerator chips.

Hindi tulad ng ibang mga system, sinubukan ng HPVM na pagsamahin ang tatlong mga kakayahan para sa pag-aayos ng heterogenous computing - isang programming language at hardware-independent intermediate representation (IR), virtual instruction set architecture (V-ISA) at runtime scheduling:

  • Pinapalawak ng HPVM intermediate representation ang LLVM intermediate representation ng mga tagubilin sa pamamagitan ng paggamit ng hierarchical data flow graph upang makuha ang parallelism sa mga antas ng gawain, data, at pipeline. Kasama rin sa HPVM intermediate representation ang mga tagubilin sa vector at shared memory. Ang pangunahing layunin ng paggamit ng isang intermediate na representasyon ay mahusay na pagbuo ng code at pag-optimize para sa mga heterogenous system.
  • Ang Virtual Instruction Set Architecture (V-ISA) ay nag-abstract ng mababang antas ng mga feature ng hardware at pinag-iisa ang iba't ibang anyo ng parallelism at memory architecture gamit lamang ang isang pangunahing parallelism modelβ€”ang data flow graph. Binibigyang-daan ka ng V-ISA na makamit ang portability sa pagitan ng iba't ibang uri ng kagamitan para sa parallel computing at ginagawang posible na hindi mawala ang pagganap kapag gumagamit ng iba't ibang elemento ng mga heterogenous system. Ang Virtual ISA ay maaari ding gamitin upang maghatid ng unibersal na executable program code na maaaring tumakbo gamit ang mga CPU, GPU, FPGA, at iba't ibang accelerators.
  • Ang nababaluktot na mga patakaran sa pag-iiskedyul para sa proseso ng computational ay inilalapat sa runtime at ipinapatupad kapwa batay sa impormasyon tungkol sa programa (istruktura ng graph) at sa pamamagitan ng pagsasama-sama ng mga indibidwal na node ng programa para sa pagpapatupad sa alinman sa mga target na computing device na available sa system.

Ang mga code generator na binuo ng proyekto ay may kakayahang magsalin ng mga application node na tinukoy gamit ang isang virtual na ISA para sa pagpapatupad gamit ang NVIDIA GPUs (cuDNN at OpenCL), Intel AVX vector instructions, FPGAs at multi-core x86 CPUs. Napansin na ang pagganap ng mga tagasalin ng HPVM ay maihahambing sa sulat-kamay na OpenCL code para sa mga GPU at mga vector computing device.

Mga pangunahing inobasyon ng HPVM 2.0:

  • Isang Hetero-C++ language frontend ang iminungkahi, na nagpapasimple sa parallelization ng application code sa C/C++ para sa compilation sa HPVM. Tinutukoy ng Hetero-C++ ang mga extension para sa parallelism sa antas ng data at mga hierarchical na gawain na nagmamapa sa mga graph ng thread ng HPVM.
  • Ang isang FPGA backend ay idinagdag upang magbigay ng suporta para sa pagpapatupad ng code sa mga Intel FPGA. Upang ayusin ang pagpapatupad, ginagamit ang Intel FPGA SDK para sa OpenCL.
  • Ang balangkas ng DSE (Design Space Exploration) ay idinagdag, na kinabibilangan ng mga compiler optimization at mga mekanismo para sa pagtukoy ng mga bottleneck para sa awtomatikong pag-tune ng mga application para sa isang partikular na hardware platform. Ang framework ay naglalaman ng isang handa na modelo ng pagganap para sa mga FPGA mula sa Intel at ginagawang posible na ikonekta ang iyong sariling mga processor para sa pag-optimize para sa anumang mga device na sinusuportahan ng HPVM. Maaaring ilapat ang mga pag-optimize sa parehong mga antas ng graph ng dataflow ng HPVM at LLVM.
  • Ang mga bahagi ng LLVM ay na-update sa bersyon 13.0.
  • Ang code ay muling inayos upang gawing mas madali ang pag-navigate sa base ng code, mga aklatan, at mga kagamitan.
  • Ang imprastraktura ng pagsubok ay napabuti, ang mga bagong pagsubok ay naidagdag para sa iba't ibang bahagi ng HPVM.

Pinagmulan: opennet.ru

Magdagdag ng komento