7 puan yazan GN⁺ 2025-04-28 | Henüz yorum yok. | WhatsApp'ta paylaş
  • CubeCL, Rust içinde GPU çekirdekleri yazmayı sağlayan yüksek performanslı, çok platformlu bir dil uzantısıdır
  • Fonksiyonlar, generics ve struct'lar tam olarak desteklenir; trait'ler, metotlar ve tip çıkarımı ise kısmen desteklenir
  • WGPU, CUDA, ROCm tabanlı runtime'ları destekler; ayrıca SIMD komutlarını kullanan optimize edilmiş bir JIT CPU runtime'ı da geliştirilmektedir
  • Otomatik vektörleştirme, derleme zamanı optimizasyonu (Comptime), autotune özellikleri sunarak kod performansını en üst düzeye çıkarır
  • Rust'ın procedural macro sistemini kullanarak GPU çekirdek kodunu ayrıştırıp genişleten benzersiz bir yaklaşım kullanır

CubeCL'e giriş

  • CubeCL, Rust dilini genişleterek GPU çekirdeklerini doğrudan yazmayı destekleyen yüksek performanslı bir hesaplama dili uzantısıdır
  • Sıfır maliyetli soyutlamalar kullanarak verimli ve bakımı kolay çekirdek geliştirmeyi mümkün kılar
  • Şu anda fonksiyonlar, generics ve struct'lar tam olarak desteklenmektedir; trait'ler, metotlar ve tip çıkarımı ise kısmen desteklenmektedir

Basit kullanım örneği

  • GPU'da çalışacak fonksiyonlar #[cube] attribute'u ile belirtilir
  • gelu_array ve gelu_scalar fonksiyonları, performansı artırmak için SIMD komutlarını otomatik olarak kullanır
  • Çekirdekler launch_unchecked fonksiyonu ile çalıştırılabilir

Desteklenen runtime'lar

  • WGPU: Vulkan, Metal, DirectX ve WebGPU üzerinden çapraz platform GPU desteği
  • CUDA: NVIDIA GPU'lar için optimize destek
  • ROCm/HIP: AMD GPU desteği (geliştirme aşamasında)
  • JIT CPU runtime'ı: Cranelift tabanlı SIMD komutlarını kullanan optimize edilmiş bir JIT CPU runtime'ı geliştirilmektedir

CubeCL'in hedefleri

  • Yüksek performanslı hesaplama çekirdeklerinin donanıma bağlı kalmadan yazılmasını desteklemek
  • Otomatik vektörleştirme, comptime ve otomatik ayarlama ile kodun yapılandırılabilirliğini, yeniden kullanılabilirliğini, test edilebilirliğini ve bakım kolaylığını artırmak
  • Bellek yönetimi stratejileri ile yüksek aktarım hacmi için optimize edilmiş buffer yeniden kullanımını sağlamak
  • Lineer cebir bileşenleri geliştirerek yüksek performanslı ve bilimsel hesaplama ekosistemi oluşturmak

CubeCL nasıl çalışır

  • Rust'ın procedural macro sistemi kullanılarak GPU çekirdek kodu ayrıştırılır ve genişletilir; bu, benzersiz bir yaklaşımdır
  • Comptime: Kaynak kod dönüştürülmediği için derleme zamanı optimizasyonları kolayca entegre edilebilir
  • Otomatik vektörleştirme: CubeCL fonksiyonlarının girdileri vektörleştirilir ve her ara değişkenin vektörleştirme öğesi belirlenir
  • Rust entegrasyonu: Üretilen kod geçerli Rust kodu olarak kalır ve belirli bir runtime'a bağımlı olmadan bundle olarak sunulabilir

Tasarım ve özel özellikler

  • CubeCL, cube merkezli tasarlanmıştır; tüm hesaplama API'leri donanıma eşlenerek 3D gösterimi kullanabilir
  • Otomatik vektörleştirme: SIMD komutlarıyla performans artırılabilir ve vektörleştirme öğelerine çekirdek içinde doğrudan erişilebilir
  • Comptime: Derleyici IR'si runtime sırasında değiştirilerek optimizasyon ve esneklik sağlar
  • Otomatik ayarlama: Runtime sırasında küçük benchmark'lar çalıştırılarak en uygun çekirdek ve ayarlar seçilir

Dikkat edilmesi gerekenler ve geçmişi

  • CubeCL şu anda alfa sürümündedir ve hâlâ cilalanmamış bölümler içerir
  • Başlangıçta Burn projesinin WebGPU backend'i olarak başladı
  • Daha sonra CUDA runtime'ının eklenmesiyle genel amaçlı bir IR ve Rust frontend'ine genişletildi
  • CUDA ile WebGPU arasındaki farkları aşmak için genel kavramlar geliştirildi

Henüz yorum yok.

Henüz yorum yok.