ZLUDA loyihasi AMD GPU'lari uchun CUDA texnologiyasining ochiq kodli amalga oshirilishini ishlab chiqdi, bu vositachilarsiz ishlaydigan ilovalarnikiga yaqin ishlashga ega bo'lgan o'zgartirilmagan CUDA ilovalarini bajarish imkonini beradi. Nashr qilingan vositalar to'plami NVIDIA GPU'lari uchun CUDA kompilyatori yordamida yaratilgan mavjud CUDA ilovalari bilan ikkilik moslikni ta'minlaydi. Amalga oshirish AMD'ning ROCm steki va Portativlik uchun Heterogeneous Computing Interface (HIP) ish vaqti ustida ishlaydi. Loyiha kodi Rust tilida yozilgan va MIT va Apache 2.0 litsenziyalari ostida tarqatilgan. U qo'llab-quvvatlaydi Linux и Windows.
AMD GPU tizimlarida CUDA-ni qo'llab-quvvatlash qatlami so'nggi ikki yil davomida ishlab chiqilmoqda, ammo loyiha uzoqroq tarixga ega va dastlab Intel GPU-larida CUDA-ni qo'llab-quvvatlash uchun yaratilgan. GPU qo‘llab-quvvatlash siyosatining o‘zgarishi ZLUDA-ning asl ishlab chiqaruvchisi Intel xodimi bo‘lganligi bilan izohlanadi, ammo 2021-yilda kompaniya Intel GPU-lardagi CUDA ilovalarini hech qanday biznes manfaati yo‘q deb hisobladi va tashabbusni ilgari surmaslikka qaror qildi.
2022 yil boshida ishlab chiquvchi Intel’ni tark etdi va AMD bilan CUDA muvofiqlik qatlamini ishlab chiqish bo‘yicha shartnoma imzoladi. AMD ishlab chiquvchidan ishlab chiqish vaqtida maxfiy bo'lishini va ZLUDA ommaviy omboriga kirishdan voz kechishni so'radi. Ikki yil o'tgach, AMD, AMD GPU-larida CUDA ilovalarini ishga tushirish tijorat nuqtai nazaridan foydali emas deb qaror qildi, bu esa ishlab chiquvchiga shartnoma shartlariga ko'ra o'z ishlarini ochishga imkon berdi. GPU ishlab chiqaruvchilari loyihani moliyalashtirishni to'xtatganlari sababli, uning kelajagi endi jamiyatning qiziqishi va boshqa kompaniyalarning hamkorlik takliflariga bog'liq. Tashqi yordamisiz loyiha faqat muallif uchun shaxsiy qiziqish bo'lgan sohalarda, masalan, DLSS (Deep Learning Super Sampling) rivojlanishi mumkin bo'ladi.
Hozirgi shaklda amalga oshirish sifati alfa sifatida baholanadi. Biroq, ZLUDA allaqachon Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM va Arnold kabi ko'plab CUDA ilovalarini ishga tushirish uchun ishlatilishi mumkin. cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL va NVML primitivlari va kutubxonalari uchun minimal yordam ko'rsatiladi.
ZLUDA ostida CUDA ilovalarining birinchi ishga tushirilishi ZLUDA GPU kodini kompilyatsiya qilganligi sababli sezilarli kechikishlar bilan birga keladi. Keyingi ishga tushirishlar bu kechikishni bartaraf qiladi, chunki kompilyatsiya qilingan kod keshda saqlanadi. Kompilyatsiya qilingan kodni bajarish paytida ishlash mahalliy kodga yaqin. Geekbench-ni AMD Radeon 6800 XT GPU-da ishga tushirganda, CUDA benchmarkining ZLUDA-ga asoslangan versiyasi OpenCL-ga asoslangan versiyaga qaraganda ancha yuqori ishlash ko'rsatdi.

Rasmiy CUDA Driver API-ni va hujjatsiz CUDA API-ning teskari ishlab chiqilgan qismini qo'llab-quvvatlash ZLUDA-da funktsiya chaqiruvlarini HIP ish vaqtida taqdim etilgan ekvivalent funktsiyalar bilan almashtirish orqali amalga oshiriladi, bu asosan CUDA-ga o'xshaydi. Masalan, cuDeviceGetAttribute() funksiyasi hipDeviceGetAttribute() bilan almashtiriladi. NVML, cuBLAS va cuSPARSE kabi NVIDIA kutubxonalari bilan moslik xuddi shunday ta'minlanadi. Ushbu kutubxonalar uchun ZLUDA bir xil nomli va o'xshash AMD kutubxonalariga qo'shimchalar sifatida qurilgan bir xil funktsiyalar to'plamiga ega tarjima kutubxonalarini taqdim etadi.
PTX (Parallel Thread Execution) ko'rinishida kompilyatsiya qilingan GPU ilova kodi birinchi navbatda maxsus kompilyator tomonidan AMD GPU'lari uchun ikkilik kodni yaratish uchun ishlatiladigan LLVM IR oraliq ko'rinishga tarjima qilinadi.

Manba: opennet.ru
