Dasturlash

BarraCUDA: AMD GPU’lar uchun ochiq manbali CUDA kompilyatori

26-mart, 2026, 17:308 ko'rish3 daqiqa o'qish
BarraCUDA: AMD GPU’lar uchun ochiq manbali CUDA kompilyatori

GPU hisoblash dunyosida NVIDIA ning CUDA platformasi uzun yillar davomida de-fakto standart bo‘lib kelgan. Ammo bu platforma yopiq ekotizimga asoslanganligi sababli, boshqa ishlab chiqaruvchilarning grafik protsessorlari bilan ishlash qiyin bo‘lishi mumkin. BarraCUDA bu muammoni ochiq manbali yondashuv bilan hal etadi: u .cu fayllarni AMD RDNA 2/3/4, NVIDIA PTX va Tenstorrent Tensix C++ kodiga o‘zgartiradi.

BarraCUDA nima?

BarraCUDA – C99 tilida, GCC yoki Clang kompilyatorlari yordamida tuzilgan, hech qanday tashqi kutubxona yoki LLVMga bog‘liq bo‘lmagan CUDA C++ kompilyatoridir. Dastur make buyrug‘ini bajarish orqali bir necha daqiqada tuziladi va .cu fayllarni turli GPU arxitekturalari uchun mos binar fayllarga aylantiradi.

Qanday ishlaydi?

Kompliyatsiya jarayoni bir necha bosqichdan iborat:

  • Preprocessor#include, #define va shartli kompilyatsiya direktivalarini bajaradi.
  • Lexer – matnni tokenlarga (so‘z birikmalariga) ajratadi.
  • Parser – rekursiv tushunish orqali sintaksis daraxti (AST) yaratadi.
  • Semantic analysis – tiplash, o‘zgaruvchilarni aniqlash va xatoliklarni tekshiradi.
  • BIR (BarraCUDA IR) – platformaga bog‘lanmagan o‘rta kodga (SSA shaklida) o‘tkazadi.
  • Instruction selection – BIRni maqsadli GPU arxitekturasi (AMD, NVIDIA yoki Tenstorrent) uchun mos mashina ko‘rsatmalariga aylantiradi.

Natijada .hsaco (AMD), .ptx (NVIDIA) yoki .cpp (Tenstorrent) fayllari hosil bo‘ladi.

Asosiy xususiyatlari

  • Hech qanday dependency (bog‘liqlik) yo‘q – faqat C99 kompilyatori kerak.
  • Linux + ROCm muhitida to‘g‘ridan-to‘g‘ri ishga tushadi.
  • CUDA‑ning ko‘pgina asosiy funksiyalarini qo‘llab‑quvvatlaydi: __global__, __shared__, atomik amallar, warp intrinsics, vektor turlari va boshqalar.
  • Ko‘p tilli xato xabarlari – --lang parametri orqali o‘z tilingizda diagnostika olish mumkin.
  • Minimal HSA runtime – kompilyatsiya qilingan kernelni AMD GPU’da bajarish uchun kerakli kutubxona.

Qo‘llash misollari

Masalan, vektor qo‘shish kernelini quyidagicha kompilyatsiya qilish mumkin:

./barracuda --amdgpu-bin vector_add.cu -o vector_add.hsaco

Keyin launch_saxpy dasturi yordamida AMD MI300X yoki RDNA3 kartalarda ishga tushurish mumkin. Shuningdek, --nvidia-ptx parametri orqali PTX kodini yaratib, NVIDIA RTX 4060 Ti’da CUDA Driver API orqali JIT kompilyatsiyasini amalga oshirish mumkin.

Cheklovlar va kelajak yo‘nalishlari

Hozirgi vaqtda BarraCUDA quyidagi imkoniyatlarni yetkazib bermaydi:

  • Dynamic parallelism (device‑side kernel launch).
  • Texture va surface API‑lari.
  • Ko‘p faylli loyihalar (multiple translation units).
  • Host kodini generatsiya qilish – faqat device (GPU) kodini yaratadi.

Ushbu cheklovlar arxitekturaviy emas, balki loyiha rivojlanish bosqichidagi “hozir amalga oshirmadik” holatlaridir. Kelajakda Intel Arc, RISC‑V Vector Extension kabi yangi platformalar qo‘shilishi rejalashtirilgan.

Xulosa

BarraCUDA – GPU dasturlashni yanada erkin va platforma‑mustaqil qilishga qaratilgan muhim qadam. Ochiq manbali, C99 asosida yozilgan va hech qanday katta kutubxona talab qilmaydigan bu kompilyator, AMD GPU’larda CUDA kodini ishga tushirish, NVIDIA PTX yaratish va hatto Tenstorrent Tensix uchun C++ kodini olish imkonini beradi. Dasturchilar, tadqiqotchilar va startaplar uchun yangi imkoniyatlar eshigini ochadi, ayniqsa Linux‑da GPU hisoblashni o‘rganayotganlar uchun ajoyib vosita hisoblanadi.

Manba: Hacker News
#CUDA #open-source #AMD GPU #BarraCUDA #GPU dasturlash
Telegram da muhokama qilish