Հրապարակվել է ZLUDA գործիքակազմը, որը թույլ է տալիս CUDA հավելվածները գործարկել AMD GPU-ների վրա

ZLUDA նախագիծը պատրաստել է CUDA տեխնոլոգիայի բաց ներդրում AMD GPU-ների համար, որը թույլ է տալիս գործարկել չփոփոխված CUDA հավելվածներ առանց շերտերի աշխատող հավելվածների կատարմանը մոտ կատարմամբ: Հրապարակված գործիքակազմն ապահովում է երկուական համատեղելիություն գոյություն ունեցող CUDA հավելվածների հետ, որոնք կազմվել են CUDA կոմպիլյատորի միջոցով NVIDIA GPU-ների համար: Իրականացումը աշխատում է AMD-ի կողմից մշակված ROCm stack-ի և runtime HIP-ի (Հետերոգեն-հաշվողական ինտերֆեյս դյուրատարության համար) վերևում: Ծրագրի կոդը գրված է Rust-ով և տարածվում է MIT և Apache 2.0 լիցենզիաների ներքո: Աջակցում է աշխատել Linux-ի և Windows-ի վրա:

AMD GPU-ներով համակարգերի վրա CUDA աշխատանքի կազմակերպման շերտը մշակվել է վերջին երկու տարվա ընթացքում, սակայն նախագիծն ավելի երկար պատմություն ունի և ի սկզբանե ստեղծվել է CUDA-ի աշխատանքը Intel GPU-ների վրա ապահովելու համար: GPU-ի աջակցության քաղաքականության փոփոխությունը բացատրվում է նրանով, որ սկզբում ZLUDA-ի մշակողը Intel-ի աշխատակից էր, սակայն 2021-ին այս ընկերությունը համարեց, որ Intel GPU-ների վրա CUDA հավելվածներ գործարկելու հնարավորությունը բիզնեսի համար անհետաքրքիր է և չի արագացրել: նախաձեռնության զարգացումը։

2022 թվականի սկզբին ծրագրավորողը լքեց Intel-ը և AMD-ի հետ պայմանագիր կնքեց CUDA-ի համատեղելիության շերտ մշակելու համար: Մշակման ընթացքում AMD-ը խնդրեց չգովազդել AMD-ի հետաքրքրությունը ZLUDA նախագծի նկատմամբ և պարտավորություններ չստանձնել հանրային ZLUDA պահեստի նկատմամբ: Երկու տարի անց AMD-ը որոշեց, որ CUDA հավելվածների գործարկումը AMD GPU-ներով չի հետաքրքրում բիզնեսին, ինչը, համաձայն պայմանագրի պայմանների, թույլ է տվել ծրագրավորողին բացահայտել իր աշխատանքը: Քանի որ GPU արտադրողները դադարեցրել են նախագծի ֆինանսավորումը, դրա ճակատագիրն այժմ կախված է համայնքի շահերից և այլ ընկերություններից համագործակցության առաջարկներ ստանալուց: Առանց արտաքին աջակցության, նախագիծը կկարողանա զարգանալ միայն հեղինակին անձամբ հետաքրքիր ուղղություններով, օրինակ՝ DLSS (Deep Learning Super Sampling):

Իր ներկայիս տեսքով, իրականացման որակի մակարդակը գնահատվում է որպես ալֆա տարբերակ: Այնուամենայնիվ, ZLUDA-ն արդեն կարող է օգտագործվել բազմաթիվ CUDA հավելվածներ գործարկելու համար, ներառյալ Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM և Arnold: Տրամադրում է նվազագույն աջակցություն cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL և NVML պրիմիտիվների և գրադարանների համար:

ZLUDA-ով աշխատող CUDA հավելվածների առաջին գործարկումը տեղի է ունենում նկատելի ուշացումներով՝ կապված այն բանի հետ, որ ZLUDA-ն հավաքում է GPU կոդը: Հետագա գործարկումներում նման ուշացում չկա, քանի որ կազմված կոդը պահվում է քեշում: Կոմպիլացված կոդ գործարկելիս կատարումը մոտ է բնօրինակին: Geekbench-ը AMD Radeon 6800 XT GPU-ով գործարկելիս CUDA հենանիշերի փաթեթի ZLUDA տարբերակը նկատելիորեն ավելի լավ էր գործում, քան OpenCL տարբերակը:

Հրապարակվել է ZLUDA գործիքակազմը, որը թույլ է տալիս CUDA հավելվածները գործարկել AMD GPU-ների վրա

Պաշտոնական CUDA Driver API-ի և չփաստաթղթավորված CUDA API-ի հակադարձ նախագծված մասի աջակցությունն իրականացվում է ZLUDA-ում՝ փոխարինելով գործառույթի կանչերը HIP-ի գործարկման ժամանակ նախատեսված նմանատիպ գործառույթներով, ինչը շատ առումներով նման է CUDA-ին: Օրինակ, cuDeviceGetAttribute() ֆունկցիան փոխարինվում է hipDeviceGetAttribute()-ով։ Համատեղելիությունը NVIDIA գրադարանների հետ, ինչպիսիք են NVML-ը, cuBLAS-ը և cuSPARSE-ը, ապահովված է նույն ձևով. նման գրադարանների համար ZLUDA-ն տրամադրում է թարգմանչական գրադարաններ նույն անունով և գործառույթների նույն փաթեթով, որոնք կառուցված են որպես հավելումներ նմանատիպ AMD գրադարանների վրա:

GPU հավելվածի կոդը, որը կազմվել է PTX (Parallel Thread Execution) ներկայացման մեջ, նախ թարգմանվում է հատուկ կոմպիլյատորի կողմից LLVM IR միջանկյալ ներկայացման մեջ, որի հիման վրա ստեղծվում է AMD GPU-ների երկուական կոդը:

Հրապարակվել է ZLUDA գործիքակազմը, որը թույլ է տալիս CUDA հավելվածները գործարկել AMD GPU-ների վրա


Source: opennet.ru

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