Հրապարակվել է HPVM 2.0, CPU, GPU, FPGA և ապարատային արագացուցիչների կոմպիլյատոր

LLVM նախագիծը ներկայացրեց HPVM 2.0 (Heterogeneous Parallel Virtual Machine) կոմպիլյատորը, որն ուղղված էր տարասեռ համակարգերի ծրագրավորման պարզեցմանը և պրոցեսորների, GPU-ների, FPGA-ների և տիրույթին հատուկ ապարատային արագացուցիչների համար կոդ ստեղծելու գործիքների տրամադրմանը: Ծրագրի կոդը բաշխվում է Apache 2.0 լիցենզիայի ներքո:

Տարասեռ զուգահեռ համակարգերի ծրագրավորումը բարդ է բաղադրիչների մեկ համակարգում առկայության պատճառով, որոնք օգտագործում են տարբեր մոդելներ զուգահեռության հասնելու համար (CPU միջուկներ, վեկտորային հրահանգներ, GPU և այլն), հրահանգների տարբեր հավաքածուներ և տարբեր հիշողության հիերարխիաներ: Յուրաքանչյուր համակարգ օգտագործում է այս բաղադրիչների իր համադրությունը: HPVM նախագծի հիմնական գաղափարն է օգտագործել զուգահեռ ծրագրերի միասնական ներկայացում կազմելու համար, որոնք կարող են օգտագործվել տարբեր տեսակի սարքավորումների համար, որոնք աջակցում են զուգահեռ հաշվարկներին, ներառյալ GPU-ները, վեկտորային հրահանգները, բազմամիջուկ պրոցեսորները, FPGA-ները և տարբեր մասնագիտացված: արագացուցիչ չիպսեր.

Ի տարբերություն այլ համակարգերի՝ HPVM-ն փորձեց համատեղել տարասեռ հաշվարկների կազմակերպման երեք հնարավորություն՝ միջանկյալ ներկայացում (IR), վիրտուալ հրահանգների հավաքածուի ճարտարապետություն (V-ISA) և գործարկման ժամանակացույց՝ անկախ ծրագրավորման լեզվից և սարքավորումներից.

  • Միջանկյալ ներկայացում HPVM-ն ընդլայնում է LLVM հրահանգների միջանկյալ ներկայացումը` օգտագործելով հիերարխիկ տվյալների հոսքի գրաֆիկ` առաջադրանքների, տվյալների և հաշվողական խողովակաշարերի մակարդակում զուգահեռությունը ֆիքսելու համար: HPVM միջանկյալ ներկայացումը ներառում է նաև վեկտորի հրահանգներ և ընդհանուր հիշողություն: Միջանկյալ ներկայացման օգտագործման հիմնական նպատակը կոդի արդյունավետ ստեղծումն է և տարասեռ համակարգերի օպտիմալացումը:
  • Վիրտուալ հրահանգների հավաքածուի ճարտարապետությունը (V-ISA) վերացում է ցածր մակարդակի ապարատը և միավորում է զուգահեռության և հիշողության ճարտարապետության տարբեր ձևեր՝ օգտագործելով միայն հիմքում ընկած համաժամանակյա մոդելը՝ Տվյալների հոսքի գրաֆիկը: V-ISA-ն թույլ է տալիս հասնել դյուրատարության տարբեր տեսակի սարքավորումների միջև զուգահեռ հաշվարկների համար և հնարավորություն է տալիս չկորցնել արդյունավետությունը տարասեռ համակարգերի տարբեր տարրեր օգտագործելիս: Վիրտուալ ISA-ն կարող է օգտագործվել նաև ծրագրի ընդհանուր գործարկվող կոդ տրամադրելու համար, որը կարող է գործարկվել պրոցեսորների, GPU-ների, FPGA-ների և տարբեր արագացուցիչների վրա:
  • Ճկուն հաշվողական գործընթացների ժամանակացույցի քաղաքականությունը կիրառվում է գործարկման ժամանակ և իրականացվում է ինչպես ծրագրի (գրաֆի կառուցվածքի) մասին տեղեկատվության հիման վրա, այնպես էլ համակարգում առկա թիրախային հաշվողական սարքերից որևէ մեկի վրա կատարման համար անհատական ​​ծրագրային հանգույցներ կազմելու միջոցով:

Ծրագրի կողմից մշակված կոդի գեներատորները կարող են թարգմանել վիրտուալ ISA-ի միջոցով սահմանված կիրառական հանգույցները՝ NVIDIA GPU-ների (cuDNN և OpenCL), Intel AVX վեկտորային հրահանգների, FPGA-ների և բազմամիջուկ x86 պրոցեսորների միջոցով: Նշվում է, որ HPVM թարգմանիչների արդյունքների կատարումը համեմատելի է ձեռքով գրված OpenCL կոդի հետ GPU-ների և վեկտորային հաշվողական սարքերի համար:

HPVM 2.0-ի հիմնական նորամուծությունները.

  • Առաջարկվում է Hetero-C++ լեզվի ճակատը, որը հեշտացնում է C/C++ հավելվածի կոդի զուգահեռացումը HPVM-ում կոմպիլյացիայի համար: Hetero-C++-ը սահմանում է տվյալների մակարդակի զուգահեռության և հիերարխիկ առաջադրանքների ընդլայնումներ, որոնք քարտեզագրված են HPVM թելի գրաֆիկներին:
  • Ավելացվել է FPGA հետին պլան՝ Intel FPGA-ում կոդի կատարումն աջակցելու համար: Կատարումը կազմակերպելու համար օգտագործվում է Intel FPGA SDK-ն OpenCL-ի համար:
  • Ավելացվել է DSE (Design Space Exploration) շրջանակը, որն իր մեջ ներառում է կոմպիլյատորների օպտիմալացումներ և խցանման հայտնաբերման մեխանիզմներ՝ տվյալ ապարատային հարթակի համար հավելվածների ավտոմատ թյունինգի համար: Շրջանակը պարունակում է Intel-ից FPGA-ի համար պատրաստի կատարողական մոդել և թույլ է տալիս միացնել ձեր սեփական պրոցեսորները HPVM-ի կողմից աջակցվող ցանկացած սարքի օպտիմալացման համար: Օպտիմալացումները կարող են կիրառվել ինչպես HPVM տվյալների հոսքի գրաֆիկի մակարդակում, այնպես էլ LLVM մակարդակում:
  • LLVM բաղադրիչները թարմացվել են 13.0 տարբերակին:
  • Կոդը վերակազմավորվել է՝ կոդերի բազայի, գրադարանների և կոմունալ ծառայություններում ավելի հեշտ նավարկելու համար:
  • Թեստավորման ենթակառուցվածքը բարելավվել է, նոր թեստեր են ավելացվել HPVM-ի տարբեր բաղադրիչների համար:

Source: opennet.ru

Добавить комментарий