24 पॉइंट द्वारा GN⁺ 2025-04-05 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • कई वर्षों तक C/C++ केंद्रित रहे NVIDIA के CUDA toolkit में 2024 GTC में native Python support आधिकारिक रूप से जोड़ा गया
  • अब सिर्फ Python के जरिए GPU पर सीधे algorithm-केंद्रित high-speed computation चलाना संभव हो गया है
  • CUDA architect Stephen Jones ने समझाया कि “Python CUDA केवल C code को Python syntax में बदलना नहीं है,
    बल्कि इसे Python developers के लिए स्वाभाविक तरीके से नए सिरे से डिज़ाइन किया गया है

native Python support से खुलने वाली नई संभावनाएँ

  • पहले CUDA उपयोगकर्ताओं को C++ या Fortran जानना ज़रूरी था, लेकिन अब सिर्फ Python से भी high-performance GPU computation संभव है
  • 2024 GitHub open source survey के अनुसार Python, JavaScript को पीछे छोड़कर सबसे लोकप्रिय भाषा बन गई
  • CUDA उपयोगकर्ताओं की संख्या 2020 में 20 लाख → 2023 में 40 लाख तक बढ़ी,
    लेकिन Python developers की संख्या कई करोड़ है, खासकर भारत और ब्राज़ील जैसे उभरते देशों के developers के लिए यह बड़ी अच्छी खबर है
  • इससे वैश्विक GPU infrastructure के विस्तार पर भी सकारात्मक असर की उम्मीद है

Pythonic CUDA की संरचना

  • CUDA में libraries, SDK, compiler, runtime, tools और algorithms शामिल हैं
  • Python integration सिर्फ kernel उपलब्ध कराने तक सीमित नहीं है, बल्कि पूरे stack को Python-friendly बनाया गया है
  • मुख्य तरीका: JIT(Just-In-Time) compilation आधारित, ताकि compiler dependency को न्यूनतम रखा जा सके

मुख्य घटक

  • cuPyNumeric: NumPy जैसा ही API देने वाली और GPU acceleration को support करने वाली Python library
  • CUDA Core: CUDA runtime को Python शैली में फिर से डिज़ाइन किया गया execution-flow आधारित system
  • NVMath Python: host/device library calls के लिए unified interface प्रदान करता है
  • high-performance C++ libraries के साथ सीधे integration करने योग्य Python API
  • performance profiling और code analysis tools भी साथ में उपलब्ध हैं

> “यह मौजूदा high-performance C++ code से सीधे जुड़ा है, इसलिए performance loss लगभग नहीं के बराबर है” — Stephen Jones

नया programming model: CuTile

  • Python developers के लिए डिज़ाइन किया गया high-level array-केंद्रित model
  • जहाँ पारंपरिक CUDA में thread-आधारित बारीक नियंत्रण की ज़रूरत पड़ती थी, वहीं CuTile tile-स्तरीय abstraction के जरिए अधिक संक्षिप्त और समझने में आसान संरचना देता है
  • CuTile arrays को GPU tile units पर map करता है, जिससे debugging और optimization आसान हो जाती है, जबकि performance बनी रहती है
  • आगे चलकर इसे C++ CUDA तक भी बढ़ाने की योजना है

> “क्योंकि compiler GPU संरचना को बेहतर समझता है, इसलिए performance optimization भी अपने-आप अच्छी तरह हो जाती है”

संक्षेप

  • CUDA में native Python integration GPU programming की entry barrier को काफी कम करने वाला बदलाव है
  • अब जटिल भाषा-ज्ञान के बिना भी सिर्फ Python से GPU पर AI और scientific computation संभव है
  • Python-केंद्रित AI ecosystem के विस्तार और NVIDIA GPU उपयोग के लिए एक नए दौर की शुरुआत करने वाला निर्णायक मोड़

3 टिप्पणियां

 
aer0700 2025-04-06

क्या यह Cupy, pytorch जैसे मौजूदा Cuda wrapper से भी तेज़ होगा? Cupy और torch की खासियत यह थी कि उनका API numpy से लगभग एक जैसा है, इसलिए numpy में लिखा हुआ test code ज़्यादा मेहनत के बिना आसानी से port किया जा सकता था; यह कैसा है, इसे इस्तेमाल करके देखना पड़ेगा।

 
GN⁺ 2025-04-05
Hacker News राय
  • मैं GPU प्रोग्रामर नहीं हूँ, लेकिन लगता है कि मेरे जैसे लोग भी इसे आसानी से इस्तेमाल कर सकेंगे। मैंने GPU और CPU का उपयोग करने वाला एक सरल डेमो बनाया। नतीजे इस प्रकार हैं

    • CPU पर 5000x5000 आकार की 100 रैंडम मैट्रिक्स बनाईं
    • CPU से मैट्रिक्स जोड़ना
    • CPU मैट्रिक्स जोड़ पूरा होने का समय: 0.6541 सेकंड
    • CPU परिणाम मैट्रिक्स आकार: (5000, 5000)
    • GPU पर 5000x5000 आकार की 100 रैंडम मैट्रिक्स बनाईं
    • GPU से मैट्रिक्स जोड़ना
    • GPU मैट्रिक्स जोड़ पूरा होने का समय: 0.1480 सेकंड
    • GPU परिणाम मैट्रिक्स आकार: (5000, 5000)
    • API वाकई बहुत सरल है, इसलिए इसे और गहराई से देखने लायक है। ऐसे high-level विकल्पों के बिना CUDA प्रोग्रामिंग एक बहुत बड़ा काम लगती है
  • मैं सोच रहा हूँ कि ऐसी चीज़ों के लिए Python ही लक्ष्य क्यों बनता है। मैंने कई प्रोजेक्ट्स को Python support जोड़ते देखा है। सोचता हूँ कि क्या Python codebase दूसरी चीज़ों की तुलना में अलग-अलग targets पर compile करना आसान होता है

  • अच्छा हुआ कि Pytorch ने इसके आने से पहले ही बड़ा momentum हासिल कर लिया। अब हमारे पास parallel computation के लिए सचमुच एक platform-independent अर्ध-मानक है। यह सिर्फ NVIDIA तक सीमित नहीं है

    • NVIDIA backend से जुड़ा Pytorch का हिस्सा अब सीधे Python में implement किया जा सकता है
    • महत्वपूर्ण बात यह है कि end user/developer के लिए यह महत्वपूर्ण नहीं है, या महत्वपूर्ण नहीं होना चाहिए
    • शायद यह नया प्लेटफ़ॉर्म Python के जरिए GPU computation की पूरी अवधारणा को games जैसे और भी domains तक फैला सके
    • ज़रा कल्पना करें कि Python के जरिए मुख्यतः GPU पर Rust game चल रहा हो
  • CuTile कई मायनों में OpenAI के Triton के उत्तराधिकारी जैसा लगता है। tile/block स्तर की primitive functionality और TileIR के साथ-साथ, CuPy में एक ठीक-ठाक SIMT programming model भी मिल रहा है। लगता है इस साल GTC में भी बहुत लोगों ने इस पर ध्यान नहीं दिया। यह बहुत शानदार है

    • फिर भी CPU से जुड़ी घोषणाएँ या talks लगभग नहीं थीं। Grace CPU की घोषणा हुए काफी समय हो गया है, लेकिन लगता नहीं कि हम जल्द ही ऐसा generalized abstraction देखेंगे जो Nvidia CPU और GPU पर सहज रूप से काम करे
    • जो लोग रोज़ parallel algorithms पर काम करते हैं, उनके लिए यह समस्या है। NSight और CUDA-GDB से debugging अभी भी raw GDB जैसी नहीं है, और पहले CPU पर algorithm design करके बाद में उसे GPU पर port करना कहीं ज्यादा आसान है
    • compiler क्षेत्र की सभी टीमों में, Modular उन गिनी-चुनी टीमों में से है जो LLM hype में पूरी तरह नहीं बह गईं और actively ऐसे abstractions और language बना रही हैं जो कई platforms को कवर करें। इस माहौल में इसकी कीमत लगातार बढ़ रही है। काश और लोग Mojo के साथ प्रयोग करें। शायद वही आखिरकार CPU-GPU के बीच के उस अंतर को पाट सके जिसका हम रोज़ सामना करते हैं
  • यह JAX से कैसे तुलना करता है, इसे लेकर मैं बहुत उत्सुक हूँ

    • JAX आपको ऐसा Python code लिखने देता है जो सिर्फ Nvidia ही नहीं बल्कि दूसरे ब्रांड के GPU पर भी चलता है (support अलग-अलग है)। इसी तरह इसमें NumPy functions के drop-in replacements भी हैं
    • यह सिर्फ Nvidia को support करता है। लेकिन क्या यह वे काम कर सकता है जो JAX नहीं कर सकता? क्या इसे इस्तेमाल करना आसान है? क्या यह fixed-size arrays पर कम केंद्रित है? क्या खुद को एक ही GPU brand तक सीमित करना वाकई फायदेमंद है?
  • यह कमाल का है। AI क्षेत्र में NVIDIA के विकल्प के रूप में AMD + ROCm पर विचार करने वाला शायद अब कोई नहीं रहेगा

    • मैं उन लोगों में से हूँ जो GPU execution के लिए असरदार code लिखने लायक C++ नहीं सीख पाएँगे (और शायद सीखेंगे भी नहीं)। लेकिन Python के जरिए अब GPU तक सीधी pipeline मिल सकती है। हैरान करने वाला
    • efficiency के मायने बहुत बड़े हैं। सिर्फ PyTorch जैसी Python libraries के लिए नहीं, बल्कि NVIDIA GPU पर चलने वाली हर चीज़ के लिए
    • efficiency में सुधार देखना अच्छा लगता है। हम लगातार सुनते रहते हैं कि OpenAI और Google को सारे GPU चलाने के लिए कितने nuclear power plants की ज़रूरत पड़ेगी
  • क्या अगला नंबर Rust support का है? अभी मैं अपने data structures को kernel तक/से manually byte arrays में [de]serialize कर रहा हूँ। अच्छा होगा अगर CUDA, C++ में जैसे देता है, वैसी सचमुच shared data structures मिलें

  • Python सचमुच programming languages की lingua franca बनती जा रही है। FOSS renaissance में इसकी adoption तेज़ी से बढ़ रही है, और मुझे लगता है कि यह हमारे पास मौजूद सबसे नज़दीकी general-purpose tool है

    • PEP model self-improvement और standardization के लिए अच्छा माध्यम है। uv और BeeWare जैसे projects की बदौलत packaging और deployment जल्द ही सुलझी हुई समस्या बन सकते हैं। मुझे यक़ीन है कि हर साल performance improvements जारी रहेंगे
  • शायद इससे वही आगे बढ़ेगा जिसकी अगुवाई Python आम तौर पर करती आई है: ज़्यादा चीज़ें जल्दी आज़माई जाएँगी और जो टिकेंगी वे तेज़ भाषाओं में चली जाएँगी। कुल मिलाकर यह शानदार कदम है। मैं निश्चित रूप से इसके साथ खेलकर देखने के लिए उत्साहित हूँ

  • CUDA की शुरुआत C और C++ से हुई थी। काश C++ को extend करके उसे CUDA C कहने के बजाय, वे सच में CUDA का C variant implement करते

 
iwi19 2025-04-06

पहली स्पीड सच में है क्या? यह तो बहुत धीमा है...