• CubeCL एक उच्च-प्रदर्शन मल्टीप्लेटफ़ॉर्म language extension है, जो Rust में GPU कर्नेल लिखने की सुविधा देता है
  • फ़ंक्शन, generics, structs का पूरा समर्थन करता है, जबकि traits, methods, type inference का आंशिक समर्थन उपलब्ध है
  • WGPU, CUDA, ROCm-आधारित runtime का समर्थन करता है, और SIMD instructions का उपयोग करने वाला optimized JIT CPU runtime भी विकसित किया जा रहा है
  • automatic vectorization, compile-time optimization (Comptime), autotune सुविधाएँ देकर कोड performance को अधिकतम करता है
  • Rust के procedural macro system का उपयोग करके GPU कर्नेल कोड को parse और extend करने का एक अनोखा तरीका अपनाता है

CubeCL परिचय

  • CubeCL, Rust भाषा का विस्तार करके GPU कर्नेल सीधे लिखने की सुविधा देने वाला high-performance computing language extension है
  • zero-cost abstraction का उपयोग करके कुशल और maintainable कर्नेल development संभव बनाता है
  • वर्तमान में फ़ंक्शन, generics, structs का पूर्ण समर्थन करता है, जबकि traits, methods, और type inference का आंशिक समर्थन है

सरल उपयोग उदाहरण

  • #[cube] attribute का उपयोग करके उन functions को चिह्नित किया जाता है जिन्हें GPU पर चलाना है
  • gelu_array और gelu_scalar functions, SIMD instructions का अपने-आप उपयोग करके performance बेहतर बनाते हैं
  • launch_unchecked function का उपयोग करके कर्नेल चलाया जा सकता है

समर्थित runtime

  • WGPU: Vulkan, Metal, DirectX, WebGPU के माध्यम से cross-platform GPU समर्थन
  • CUDA: NVIDIA GPU के लिए optimized समर्थन
  • ROCm/HIP: AMD GPU समर्थन (विकासाधीन)
  • JIT CPU runtime: Cranelift-आधारित SIMD instructions का उपयोग करने वाला optimized JIT CPU runtime विकसित किया जा रहा है

CubeCL के लक्ष्य

  • high-performance computing कर्नेल को hardware-agnostic तरीके से लिखने की सुविधा देना
  • automatic vectorization, Comptime, autotuning के माध्यम से कोड की composability, reusability, testability, और maintainability को बेहतर बनाना
  • memory management strategy के जरिए उच्च throughput के लिए optimized buffer reuse प्रदान करना
  • linear algebra components विकसित करके high-performance और scientific computing ecosystem बनाना

CubeCL कैसे काम करता है

  • Rust के procedural macro system का उपयोग करके GPU कर्नेल कोड को parse और extend करने का एक अनोखा तरीका अपनाता है
  • Comptime: मूल कोड को बदले बिना compile-time optimization को आसानी से integrate किया जा सकता है
  • automatic vectorization: CubeCL functions के inputs को vectorize करके प्रत्येक intermediate variable के vectorization factor का निर्धारण करता है
  • Rust integration: generated code वैध Rust code बना रहता है और किसी विशेष runtime पर निर्भर हुए बिना bundle के रूप में दिया जा सकता है

डिज़ाइन और विशेष फीचर्स

  • CubeCL को cube के इर्द-गिर्द डिज़ाइन किया गया है, और सभी computing API हार्डवेयर पर मैप होकर 3D representation का उपयोग कर सकते हैं
  • automatic vectorization: SIMD instructions का उपयोग करके performance बढ़ाई जा सकती है, और vectorization factor को कर्नेल के भीतर सीधे एक्सेस किया जा सकता है
  • Comptime: runtime पर compiler IR को संशोधित करके optimization और flexibility प्रदान करता है
  • autotuning: runtime पर छोटे benchmarks चलाकर सबसे उपयुक्त कर्नेल और configuration चुनता है

सावधानियाँ और इतिहास

  • CubeCL अभी alpha version में है, इसलिए कुछ हिस्से अभी पूरी तरह परिष्कृत नहीं हैं
  • यह मूल रूप से Burn प्रोजेक्ट के WebGPU backend के रूप में शुरू हुआ था
  • बाद में CUDA runtime जोड़ते हुए इसे general-purpose IR और Rust frontend तक विस्तारित किया गया
  • CUDA और WebGPU के बीच के अंतर को पाटने के लिए general-purpose concepts विकसित किए गए

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.