1 पॉइंट द्वारा GN⁺ 2023-07-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • VUDA एक Vulkan-आधारित header-only लाइब्रेरी है, जो GPU accelerated application लिखने के लिए CUDA Runtime API इंटरफ़ेस प्रदान करती है
  • इसकी कार्यक्षमता जहाँ तक संभव हो CUDA runtime स्पेसिफिकेशन का पालन करती है, और सामान्य उपयोग के लिए NVIDIA CUDA Runtime API रेफ़रेंस दस्तावेज़ का उपयोग किया जा सकता है
  • सभी फ़ीचर्स vuda.hpp को include करके और vuda:: namespace का उपयोग करके एक्सेस किए जा सकते हैं, जबकि vuda_runtime.hpp CUDA फ़ंक्शंस को 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 टिप्पणियां

 
GN⁺ 2023-07-03
Hacker News की राय
  • यह CUDA का इम्प्लीमेंटेशन नहीं, बल्कि CUDA runtime API का इम्प्लीमेंटेशन है
    यह API कार्ड सेटअप, memory allocation·copy, और kernel execution के लिए इस्तेमाल होती है
    अहम बात यह है कि इससे GPU पर वास्तव में चलने वाला kernel code लिखा नहीं जा सकता

    • मुझे थोड़ी उम्मीद हुई थी कि शायद इसका मतलब AMD GPU पर CUDA code चलाया जा सकता है, लेकिन विवरण देखकर लगा कि ऐसा नहीं है
    • तो फिर यह किस काम में उपयोगी है, यह जानने की जिज्ञासा है
    • अगर इसे CUDA का विकल्प कहना है, तो PTX support और कई भाषाओं के development support की ज़रूरत होगी
      नहीं तो बहुत से workloads में इसकी शुरुआत भी नहीं हो पाएगी
    1. यह एक भद्दे C-style API का इम्प्लीमेंटेशन है
      automatic error checking, RAII resource control वगैरह देने वाला एक Modern C++ API wrapper भी है: https://github.com/eyalroz/cuda-api-wrappers
      संदर्भ के लिए, इसका लेखक मैं हूँ
    2. runtime API को इम्प्लीमेंट करना सही चुनाव नहीं है
      context isolation या नए compile किए गए JIT kernels को modules के रूप में dynamically जोड़ने जैसी सुविधाओं के लिए driver API का इम्प्लीमेंटेशन ज़्यादा महत्वपूर्ण है
    3. यह प्रोजेक्ट 3000 lines से भी कम का है
      पूरी मुख्य 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 उठाकर इसे बार-बार बेहतर बनाने में रुचि ले सकता है

    • Hotz सिर्फ user-space libraries की नहीं बल्कि driver की भी बात कर रहे हैं

      The software is terrible! There’s kernel panics in the driver. You have to run a newer kernel than the Ubuntu default to make it remotely stable. I’m still not sure if the driver supports putting two cards in one machine, or if there’s some poorly written global state. When I put the second card in and run an OpenCL program, half the time it kernel panics and you have to reboot.
      वह user-space हिस्से को भी छूते हैं, लेकिन साफ है कि वे इस तरह की libraries के ऊपर-नीचे वाली पूरी stack में बहुत कुछ सुधारने लायक मानते हैं

    • https://www.youtube.com/watch?v=Mr0rWJhv9jU और https://geohot.github.io/blog/jekyll/update/2023/06/07/a-div... मिले
      AMD इस्तेमाल करते हुए जो अनुभव हुआ था, उसके बारे में अब थोड़ा सुकून है
      GPU drivers में बड़ी समस्या लग रही थी, और अब पता चला कि सिर्फ मैं ही ऐसा नहीं झेल रहा था
  • जो लोग Windows पर AMD GPU के साथ machine learning models को train या run करना चाहते हैं, वे torch-directml और tensorflow-directml देख सकते हैं

    • AMD का ROCm/MiOpen/HIP के जरिए CUDA compatibility पाने का प्रयास, 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 में था

    • ऊपर से वह commit भी सिर्फ एक line जोड़ने का था
      ज़्यादातर code 3 से 5 साल पुराना है
  • मैंने कभी सीधे GPU programming नहीं की, इसलिए पूछ रहा हूँ: HIP की तुलना में यह कैसा है?
    क्या यह Nvidia और AMD GPU पर एक efficient abstraction layer बन सकता है?

    • https://news.ycombinator.com/item?id=34399633 के अनुसार, hipify-clang एक clang-आधारित tool है जो CUDA source को HIP source में translate करता है
      यह 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 पर भी चलने चाहिए?