VUDA: CUDA का Vulkan इम्प्लीमेंटेशन
(github.com/jgbit)- VUDA एक Vulkan-आधारित header-only लाइब्रेरी है, जो GPU accelerated application लिखने के लिए CUDA Runtime API इंटरफ़ेस प्रदान करती है
- इसकी कार्यक्षमता जहाँ तक संभव हो CUDA runtime स्पेसिफिकेशन का पालन करती है, और सामान्य उपयोग के लिए NVIDIA CUDA Runtime API रेफ़रेंस दस्तावेज़ का उपयोग किया जा सकता है
- सभी फ़ीचर्स
vuda.hppको include करके औरvuda::namespace का उपयोग करके एक्सेस किए जा सकते हैं, जबकिvuda_runtime.hppCUDA फ़ंक्शंस को wrap और redirect करता है - उदाहरण workflow में
cudaSetDevice,cudaMalloc,cudaMemcpy,cudaFreeजैसे CUDA Runtime API कॉल्स का उपयोग होता है, और जब NVCC नहीं होता, तबvuda::launchKernel("add.spv", "main", ...)के ज़रिए Vulkan shader module चलाया जाता है - दस्तावेज़ में Change List, Setup and Compilation, Deviations from CUDA, और Implementation Details जैसे अनुभाग दिए गए हैं
1 टिप्पणियां
Hacker News की राय
यह CUDA का इम्प्लीमेंटेशन नहीं, बल्कि CUDA runtime API का इम्प्लीमेंटेशन है
यह API कार्ड सेटअप, memory allocation·copy, और kernel execution के लिए इस्तेमाल होती है
अहम बात यह है कि इससे GPU पर वास्तव में चलने वाला kernel code लिखा नहीं जा सकता
नहीं तो बहुत से workloads में इसकी शुरुआत भी नहीं हो पाएगी
automatic error checking, RAII resource control वगैरह देने वाला एक Modern C++ API wrapper भी है: https://github.com/eyalroz/cuda-api-wrappers
संदर्भ के लिए, इसका लेखक मैं हूँ
context isolation या नए compile किए गए JIT kernels को modules के रूप में dynamically जोड़ने जैसी सुविधाओं के लिए driver API का इम्प्लीमेंटेशन ज़्यादा महत्वपूर्ण है
पूरी मुख्य CUDA API, यानी driver·runtime·NVTX·CUDA-C++ और PTX JIT compilation को wrap करने में 14,000 से ज़्यादा lines लगीं
George Hotz ने जो AMD chips पर machine learning संभव करने और Nvidia के वर्चस्व को तोड़ने की बात की थी, उससे इसका क्या रिश्ता है, यह जानना चाहता हूँ
मैं विशेषज्ञ नहीं हूँ, लेकिन यह तरीका ताकतवर और महत्वपूर्ण लगता है
बस सिस्टम इतना जटिल है कि क्या कोई एक व्यक्ति इसे बना सकता है, इस पर संदेह है, और शुरुआत के लिए corporate backing की ज़रूरत लगती है
शायद AMD खुद engineer cost उठाकर इसे बार-बार बेहतर बनाने में रुचि ले सकता है
AMD इस्तेमाल करते हुए जो अनुभव हुआ था, उसके बारे में अब थोड़ा सुकून है
GPU drivers में बड़ी समस्या लग रही थी, और अब पता चला कि सिर्फ मैं ही ऐसा नहीं झेल रहा था
जो लोग Windows पर AMD GPU के साथ machine learning models को train या run करना चाहते हैं, वे torch-directml और tensorflow-directml देख सकते हैं
CUDA और DirectX काफ़ी अलग hardware, यानी AMD और Nvidia, पर performance बहुत छोड़े बिना compatible API के रूप में इस्तेमाल करने के लिए बहुत low-level लगते हैं
cuDNN ज़्यादा high-level है, इसलिए AMD और Nvidia hardware के लिए अलग kernel implementations रखते हुए performance loss के बिना compatibility देना शायद आसान हो
लेकिन PyTorch जैसे frameworks का बहुत-सा काम सिर्फ cuDNN नहीं बल्कि custom kernels पर भी आधारित है
AMD के लिए सबसे अच्छा विकल्प शायद एक अडिग, मज़बूत low-level API और एक high-level optimized machine learning compiler support है, जिससे PyTorch·TensorFlow·JAX जैसे framework vendors उसके ऊपर आसानी से support बना सकें
आखिरकार लाभ framework vendors को ही मिलता है, इसलिए AMD को इनके साथ बहुत नज़दीकी सहयोग करना होगा
AMD ने सालों तक machine learning support को पीछे रखा, यह अजीब है
हो सकता है consumer machine learning बाज़ार graphics·gaming बाज़ार के मुक़ाबले छोटा लगा हो, इसलिए मेहनत करना सार्थक न लगा हो, लेकिन जैसा Nvidia ने दिखाया है, यही कहीं ज़्यादा लाभदायक datacenter deals तक जाने का रास्ता है
पिछली बार जब मैंने DirectML इस्तेमाल किया था, तब support अच्छा नहीं था और इसे support करने वाला software भी कम था
performance भी ख़ास अच्छी नहीं लगी थी
अब मैं Linux इंस्टॉल इस्तेमाल कर रहा हूँ, और ROCm की वजह से Automatic111 webui और oobabooga जैसे लोकप्रिय tools इस्तेमाल कर पा रहा हूँ
अगर AMD वाजिब कीमत पर machine learning में Nvidia को हरा देने वाला GPU निकाले, तो मैं नया GPU खरीद सकता हूँ
ठीक-ठाक Nvidia GPU इतने महंगे हैं कि उनकी खरीद को उचित ठहराना मुश्किल है
यह एक मृत प्रोजेक्ट जैसा लगता है
आख़िरी commit फ़रवरी 2022 में था
ज़्यादातर code 3 से 5 साल पुराना है
मैंने कभी सीधे GPU programming नहीं की, इसलिए पूछ रहा हूँ: HIP की तुलना में यह कैसा है?
क्या यह Nvidia और AMD GPU पर एक efficient abstraction layer बन सकता है?
यह CUDA source को abstract syntax tree में बदलता है, फिर transformation matcher उसे traverse करता है और HIP source output करता है
इसके अलावा hipify-clang जिन CUDA APIs को support करता है, उनकी सूची यहाँ है: https://rocm.docs.amd.com/projects/HIPIFY/en/latest/supporte...
AMD से ज़्यादा उम्मीद नहीं है
compatibility tools उन्हें बहुत पहले बना लेने चाहिए थे
इस तरह के प्रोजेक्ट काफ़ी बार आते हैं, लेकिन momentum नहीं पकड़ पाते, और मैं अब भी Nvidia GPU इस्तेमाल कर रहा हूँ
मुझे नहीं लगता कि यह भी बहुत अलग होगा
काफ़ी दिलचस्प है
तो क्या इसका मतलब है कि मेरे CUDA-accelerated programs AMD और Intel devices पर भी चलने चाहिए?