Ekosistem Rust terus memperluas kemampuannya dalam komputasi kinerja tinggi dengan CubeCL, sebuah ekstensi bahasa komputasi multi-platform yang memungkinkan pengembang untuk menulis kode GPU langsung di Rust. Meskipun proyek ini telah menghasilkan minat yang signifikan, diskusi komunitas mengungkapkan antusiasme terhadap potensinya sekaligus kekhawatiran tentang dokumentasi dan presentasi fiturnya saat ini.
Fitur Canggih Tersembunyi di Balik Dokumentasi Minim
Meskipun CubeCL memiliki kemampuan mengesankan, banyak anggota komunitas menunjukkan bahwa README proyek gagal menampilkan fitur-fitur terkuatnya. Contoh saat ini terutama berfokus pada operasi elemen sederhana, yang tidak sepenuhnya mendemonstrasikan potensi pustaka untuk tugas komputasi GPU yang lebih canggih.
We support warp operations, barriers for Cuda, atomics for most backends, tensor cores instructions as well. It's just not well documented on the readme!
Salah satu penulis utama proyek mengakui keterbatasan ini, mengonfirmasi bahwa CubeCL sebenarnya mendukung teknik pemrograman GPU canggih termasuk operasi warp (disebut Plane Operations di CubeCL), barriers, atomics, dan bahkan instruksi tensor core. Tim bahkan telah mengimplementasikan instruksi TMA (Tensor Memory Accelerator) untuk CUDA, tetapi kemampuan canggih ini tidak ditonjolkan dalam dokumentasi.
Permintaan Komunitas untuk Contoh yang Lebih Kompleks
Beberapa pengembang menyarankan bahwa proyek akan mendapat manfaat dari menampilkan contoh yang lebih kompleks, khususnya operasi perkalian matriks dengan presisi campuran - persyaratan umum dalam beban kerja AI. Satu komentator secara khusus merekomendasikan untuk mengganti contoh element-wise saat ini dengan demonstrasi GEMM with a twist yang akan lebih baik mengilustrasikan kegunaan CubeCL untuk aplikasi AI.
Tim CubeCL menanggapi positif terhadap saran-saran ini, dengan satu kontributor menyebutkan bahwa dukungan untuk tipe data yang lebih baru seperti FP8 dan FP4 direncanakan sebagai proyek mereka berikutnya. Namun, mereka mencatat bahwa keterbatasan perangkat keras saat ini menjadi hambatan, karena hanya satu kontributor yang memiliki akses ke peralatan yang diperlukan untuk menguji tipe-tipe yang lebih baru ini.
Posisi dalam Ekosistem Pemrograman GPU
Diskusi komunitas juga menyentuh bagaimana CubeCL dibandingkan dengan solusi pemrograman GPU lainnya. Beberapa komentator menarik persamaan dengan Halide, OpenCL, dan SYCL, dengan minat khusus pada bagaimana fitur comptime CubeCL membedakannya dari alternatif-alternatif ini.
Sistem comptime memungkinkan pengembang untuk mengeksekusi kode arbitrer dalam kernel pada waktu kompilasi, memberikan fleksibilitas lebih dari generics tradisional. Ini memungkinkan percabangan alami pada konfigurasi waktu kompilasi untuk memilih algoritma optimal untuk target perangkat keras yang berbeda.
Beberapa pengguna mempertanyakan mengapa OpenCL tidak dimasukkan sebagai backend di samping WGPU, CUDA, dan ROCm/HIP. Seorang kontributor CubeCL menjelaskan bahwa meskipun kompiler SPIR-V memiliki infrastruktur untuk menargetkan OpenCL dan Vulkan, mengimplementasikan runtime OpenCL akan membutuhkan kerja tambahan. Mereka juga menyatakan ketertarikan untuk memahami karakteristik kinerja OpenCL pada CPU dibandingkan dengan implementasi yang lebih native.
Runtime yang Didukung CubeCL:
- WGPU (lintas platform: Vulkan, Metal, DirectX, WebGPU)
- CUDA (GPU NVIDIA)
- ROCm/HIP (GPU AMD) - Masih Dalam Pengembangan
- Direncanakan: Runtime CPU JIT dengan instruksi SIMD melalui Cranelift
Fitur Utama:
- Vektorisasi otomatis
- Comptime (optimisasi saat kompilasi)
- Penyetelan otomatis
- Dukungan untuk operasi warp, barrier, atomics, tensor cores
- Perkalian matriks dengan dukungan Tensor Core
Hubungan dengan Framework Burn
Konteks penting yang muncul dari komentar-komentar adalah hubungan CubeCL dengan Burn, sebuah framework deep learning yang dikembangkan oleh tim yang sama. CubeCL berfungsi sebagai backend komputasi untuk Burn, menangani operasi tensor sementara Burn mengelola fungsionalitas machine learning tingkat lebih tinggi seperti diferensiasi otomatis, penggabungan operasi, dan grafik komputasi dinamis.
Kebutuhan akan CubeCL muncul secara khusus dari persyaratan Burn: kemampuan untuk menulis algoritma GPU dalam bahasa pemrograman yang lengkap sambil memungkinkan kompilasi runtime untuk penggabungan operasi, semua sambil mempertahankan kompatibilitas lintas platform dan kinerja optimal. Menurut para pengembang, tidak ada alat yang ada yang memenuhi semua persyaratan ini dalam ekosistem Rust.
Hubungan antara CubeCL dan Burn menjelaskan banyak keputusan desain di balik pustaka, termasuk fokusnya pada kinerja dan kompatibilitas lintas platform. Ini juga memposisikan CubeCL sebagai komponen penting dalam ekosistem machine learning berbasis Rust yang berkembang.
Seiring dengan kematangan proyek, komunitas tampak bersemangat untuk dokumentasi dan contoh yang lebih komprehensif yang lebih baik menampilkan kemampuan penuh CubeCL. Dengan dukungan yang direncanakan untuk tipe data yang lebih baru dan pengembangan berkelanjutan, CubeCL tampak siap untuk mengisi kesenjangan penting dalam lanskap komputasi GPU Rust, khususnya untuk aplikasi machine learning.
Referensi: cubecl/cubecl