Програмери пројекта ЛЛВМ пуштен недавно објавио компајлер Хетерогене паралелне виртуелне машине (ХПВМ) 1.0, који има за циљ поједноставити програмирање за хетерогене системе и пружа алате за генерисање кода за ЦПУ, ГПУ, ФПГА и хардверске акцелераторе специфично за домен (подршка за ФГПА и акцелераторе није била укључена у верзију 1.0).
Главна идеја иза ХПВМ је истовремено компајлирање обједињене репрезентације извршних програма који се могу користити за рад на разним паралелним хардверима, укључујући ГПУ-ове, векторске инструкције, вишејезгрене процесоре, ФПГА-е и разне специјализоване чипове за акцелератор.
Програмирање за хетерогене паралелне системе је компликовано присуством у систему компонената (ЦПУ језгра, векторске инструкције, ГПУ итд.) Који користе различите моделе за постизање паралелизма, различите скупове инструкција и различите хијерархије меморије, а сваки систем има комбинацију такве компоненте се мењају.
Иллиноис ЛЛВМ Цомпилер Ресеарцх Гроуп са задовољством најављује издање ХПВМ-а отвореног кода (верзија 1.0). ХПВМ је преусмеравајући оквир компајлера који циља ЦПУ-ове, ГПУ-ове и акцелераторе (ово издање не укључује подршку за акцелератор) [1]. ХПВМ користи циљани независни ИР компајлера који проширује ИР компајлера ЛЛВМ 9.0.0 са експлицитном хијерархијском представом тока података која обухвата задатке, податке и паралелност цевовода.
Ова верзија је важан додатак нашој првој верзији (верзија 0.5), која додаје подршку за операције тензора линеарних алгебра, интерфејсе Питорцх и Керас, апроксимације за операторе конволуције и ефикасан и флексибилан оквир за прилагођавање апроксимације.
Треба напоменути да је употреба ХПВМ може постићи значајан напредак у перформансама синце eИзлазне перформансе ХПВМ преводилаца су упоредиве са перформансама ОпенЦЛ кода руком написан за ГПУ и векторске рачунарске уређаје. За разлику од других система, ХПВМ је покушао да комбинује три могућности за организовање хетерогених рачунара: међупредстављање неовисно о језику и хардверу, архитектура виртуелног скупа инструкција (В-ИСА) и програмирање у току.
Независна посредничка репрезентација (ИР) циљног система а програмски језик који се користи у ХПВМ заснован је на посредном представљању упутстава ЛЛВМ 9.0 и проширује га хијерархијским графом протока података како би обухватио паралелизам на нивоу задатака, података и рачунских цевовода.
ХПВМ интермедијар такође укључује векторска упутства и заједничку меморију. Главни циљ употребе посредничког представљања је ефикасно генерисање кода и оптимизација за хетерогене системе.
Архитектура скупа виртуелних инструкција (В-ИСА) апстрахује хардверске карактеристике ниског нивоа и обједињује различите облике паралелизма и архитектуре меморије користећи само основни модел истовремености, графикон протока података. В-ИСА омогућава преносивост између различитих типова паралелне рачунарске опреме и омогућава не губљење перформанси када се користе различити елементи хетерогених система. Виртуелни ИСА се такође може користити за пружање универзалног извршног програмског кода који се може покренути помоћу ЦПУ-а, ГПУ-а, ФПГА-е и различитих акцелератора.
У тренутној фази развоја, ХПВМ нуди генераторе кода способне за превођење апликационих чворова дефинисаних од стране ИСА Виртуелно за покретање помоћу НВИДИА графичких процесора (цуДНН и ОпенЦЛ), векторских упутстава Интел АВКС и вишејезгрених к86 процесора. }
Током извршења, ХПВМ примењује флексибилне политике распоређивања за рачунски процес, примењене како на основу информација о програму (графичка структура), тако и кроз компилацију појединачних програмских чворова за извршење на било ком од рачунарских уређаја одредишта доступних у систему.
У поређењу са првом верзијом прегледа, ХПВМ 1.0 укључује подршку за операције тензора линеарне алгебре, интерфејси за Питорцх и Керас и оквир за подешавање апроксимације који аутоматски бира оптималне апроксимације за одређене операције тензора и бира поставку за оптималне перформансе.
Коначно, ако сте заинтересовани да сазнате више о овом компајлеру, Детаље можете погледати на следећем линку.