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