7 poin oleh GN⁺ 2025-04-28 | Belum ada komentar. | Bagikan ke WhatsApp
  • CubeCL adalah ekstensi bahasa multiplatform berperforma tinggi yang memungkinkan penulisan kernel GPU di Rust
  • Mendukung penuh fungsi, generik, dan struct, serta mendukung sebagian trait, method, dan inferensi tipe
  • Mendukung runtime berbasis WGPU, CUDA, dan ROCm, serta sedang mengembangkan runtime CPU JIT teroptimasi yang memanfaatkan instruksi SIMD
  • Menyediakan fitur vektorisasi otomatis, optimisasi waktu kompilasi (comptime), dan autotune untuk memaksimalkan performa kode
  • Menggunakan pendekatan unik yang memanfaatkan sistem procedural macro Rust untuk mem-parsing dan memperluas kode kernel GPU

Pengenalan CubeCL

  • CubeCL adalah ekstensi bahasa komputasi berperforma tinggi yang memperluas bahasa Rust untuk mendukung penulisan kernel GPU secara langsung
  • Memanfaatkan abstraksi zero-cost untuk memungkinkan pengembangan kernel yang efisien dan mudah dipelihara
  • Saat ini mendukung penuh fungsi, generik, dan struct, sementara trait, method, dan inferensi tipe didukung sebagian

Contoh penggunaan sederhana

  • Menggunakan atribut #[cube] untuk menentukan fungsi yang akan dijalankan di GPU
  • Fungsi gelu_array dan gelu_scalar secara otomatis menggunakan instruksi SIMD untuk meningkatkan performa
  • Kernel dapat dijalankan menggunakan fungsi launch_unchecked

Runtime yang didukung

  • WGPU: dukungan GPU lintas platform melalui Vulkan, Metal, DirectX, dan WebGPU
  • CUDA: dukungan optimasi untuk GPU NVIDIA
  • ROCm/HIP: dukungan untuk GPU AMD (sedang dikembangkan)
  • Runtime CPU JIT: sedang mengembangkan runtime CPU JIT teroptimasi berbasis Cranelift yang memanfaatkan instruksi SIMD

Tujuan CubeCL

  • Mendukung penulisan kernel komputasi berperforma tinggi tanpa terikat pada perangkat keras tertentu
  • Meningkatkan kemampuan penyusunan, penggunaan ulang, pengujian, dan pemeliharaan kode melalui fitur vektorisasi otomatis, comptime, dan penalaan otomatis
  • Menyediakan penggunaan ulang buffer yang dioptimalkan untuk throughput tinggi melalui strategi manajemen memori
  • Bertujuan membangun ekosistem komputasi berperforma tinggi dan komputasi ilmiah dengan mengembangkan komponen aljabar linear

Cara kerja CubeCL

  • Menggunakan pendekatan unik yang memanfaatkan sistem procedural macro Rust untuk mem-parsing dan memperluas kode kernel GPU
  • Comptime: dapat dengan mudah mengintegrasikan optimisasi waktu kompilasi tanpa mengubah kode sumber asli
  • Vektorisasi otomatis: memvektorisasi input fungsi CubeCL untuk menentukan elemen vektorisasi dari setiap variabel perantara
  • Integrasi Rust: kode yang dihasilkan tetap berupa kode Rust yang valid dan dapat dibundel tanpa ketergantungan pada runtime tertentu

Desain dan fitur khusus

  • CubeCL dirancang dengan berpusat pada cube, dan semua API komputasi dipetakan ke perangkat keras sehingga dapat menggunakan representasi 3D
  • Vektorisasi otomatis: dapat meningkatkan performa dengan menggunakan instruksi SIMD, dan elemen vektorisasi dapat diakses langsung di dalam kernel
  • Comptime: memberikan optimisasi dan fleksibilitas dengan memodifikasi IR compiler saat runtime
  • Penalaan otomatis: memilih kernel dan konfigurasi optimal dengan menjalankan benchmark kecil saat runtime

Catatan dan riwayat

  • CubeCL saat ini berada pada versi alfa, sehingga masih ada bagian yang belum matang
  • Awalnya dimulai sebagai backend WebGPU untuk proyek Burn
  • Lalu diperluas menjadi IR umum dan frontend Rust dengan menambahkan runtime CUDA
  • Mengembangkan konsep umum untuk mengatasi perbedaan antara CUDA dan WebGPU

Belum ada komentar.

Belum ada komentar.