24 पॉइंट द्वारा GN⁺ 2025-04-05 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • CUDA अब C/C++ केंद्रित ecosystem से आगे बढ़कर Python डेवलपर्स को NVIDIA GPU computing को अधिक सीधे तरीके से संभालने देने की दिशा में विस्तार कर रहा है
  • नया सपोर्ट सिर्फ साधारण binding नहीं है, बल्कि CUDA toolkit के पूरे दायरे में Python interface और scripting flow को integrate करने की कोशिश है
  • CUDA Python stack में बेसिक bindings, runtime compiler, cuPyNumeric, CUDA Core, NVMath Python, profiler और code analysis tools तक शामिल हैं
  • NVIDIA, JIT compilation और मौजूदा C++ code integration का उपयोग करके Python productivity बढ़ाना चाहता है, जबकि performance gap बहुत कम रखे
  • CuTile interface ऐसा मॉडल है जो Python डेवलपर्स के लिए thread की बजाय array और tile unit के स्तर पर GPU work को समझना और debug करना आसान बनाता है

CUDA में आया native Python

  • GitHub के 2024 open source survey के अनुसार Python, JavaScript को पीछे छोड़कर दुनिया की सबसे लोकप्रिय programming language बन गई है
  • NVIDIA का CUDA software toolkit कई वर्षों तक native Python support के बिना था, लेकिन GTC में native support और full integration की घोषणा की गई
  • डेवलपर्स अब Python में सीधे ऐसे algorithmic computing code लिख सकते हैं जो NVIDIA GPU पर चलता है
  • CUDA architect Stephen Jones ने कहा कि वह CUDA stack में “accelerated Python” को first-class support के रूप में लाने पर काम कर रहे थे
  • नई दिशा का उद्देश्य C को Python syntax में बदलना नहीं, बल्कि Python डेवलपर्स के लिए स्वाभाविक CUDA Python बनाना है

Python डेवलपर आधार तक विस्तार

  • CUDA के लिए पहले C++ या Fortran का ज्ञान ज़रूरी था, और कुछ Python tools मौजूद थे, लेकिन वे native support नहीं थे
  • Native Python support, CUDA developer tools को लाखों Python डेवलपर्स के लिए खोल देता है
  • The Futurum Group के अनुसार CUDA users की संख्या 2020 में 20 लाख से बढ़कर 2023 में 40 लाख हो गई
  • Python तेज़ी से बढ़ती language है, और NVIDIA अब भारत और ब्राज़ील जैसे विकासशील देशों के Python डेवलपर्स तक भी पहुँच बना सकता है
  • NVIDIA GPU का बड़ा हिस्सा अमेरिका और यूरोप में है, लेकिन भारत की telecom और infrastructure कंपनियां भविष्य में चलने वाले बड़े GPU installations बना रही हैं
  • NVIDIA programmers को जोड़ने पर ज़ोर दे रहा है और Rust व Julia सहित अधिक programming languages को support करना चाहता है

Pythonic CUDA stack की संरचना

  • CUDA में libraries, SDK, compiler, host runtime, tools, pre-packaged software और algorithms शामिल हैं
  • NVIDIA ने पूरे Pythonic CUDA stack में components जोड़े हैं
  • मुख्य लक्ष्य Python छोड़े बिना GPU acceleration देना है
  • Jones के अनुसार CUDA Python सिर्फ kernel देने तक सीमित नहीं होना चाहिए, बल्कि पूरे stack और smooth execution flow की ज़रूरत है
    • kernel लिखकर उसे PyTorch में डाल पाना चाहिए
    • Pythonic libraries और दूसरे components को भी call कर पाना चाहिए
  • Compiler layer व्यावहारिक रूप से JIT compilation केंद्रित है, जिससे GPU stack की dependency tree काफी कम हो जाती है
  • Layers के बीच interoperability, end-to-end Python इस्तेमाल से productivity बढ़ाने के लिए महत्वपूर्ण है

CUDA Core, cuPyNumeric, NVMath Python

  • NVIDIA ने शुरुआत में runtime compiler सहित बुनियादी Python bindings और Python libraries तैयार कीं
  • cuPyNumeric, Python में व्यापक रूप से इस्तेमाल होने वाली compute library NumPy का drop-in replacement है
    • सिर्फ एक import statement बदलने पर NumPy code CPU की जगह GPU पर चलने लगता है
  • पिछले एक साल में NVIDIA ने CUDA Core बनाया, और Jones के अनुसार यह CUDA runtime को स्वाभाविक और native Python रूप में फिर से सोचने का परिणाम है
  • CUDA Core, Python के execution flow का पालन करता है, पूरी तरह process के भीतर चलता है और JIT compilation पर काफी निर्भर है
  • NVIDIA ने NVMath Python भी बनाया है, जो host-side और device-side library calls के लिए unified interface देता है
  • Jones के अनुसार library calls को fuse करने की क्षमता बड़े performance improvements ला सकती है
  • Python code से accelerated C++ libraries तक सीधे पहुँच देने वाली libraries भी बनाई गई हैं
    • इन्हें Python में दोबारा implement नहीं किया गया, बल्कि पहले से बारीकी से tuned C++ code को जोड़ा गया है
    • Jones का मानना है कि इस तरीके से performance gap लगभग नगण्य हो जाता है
  • Profiler और code analyzer के लिए tools भी जोड़े गए हैं

CuTile programming model

  • Python, hardware details की अधिक चिंता किए बिना coding को आसान बनाता है, और NVIDIA GPU execution के लिए high-level abstraction के अनुरूप coding layers जोड़ रहा है
  • नया programming model CuTile interface पहले Pythonic CUDA के लिए विकसित किया जा रहा है, बाद में इसका C++ CUDA extension आने वाला है
  • CuTile को इस बात के अनुरूप डिज़ाइन किया गया है कि Python डेवलपर्स, C++ डेवलपर्स की तरह thread की बजाय arrays के आधार पर सोचते हैं
  • Python code को जादुई ढंग से GPU acceleration के लिए export नहीं किया जा सकता
    • CUDA आम तौर पर problem को हज़ारों छोटे blocks में बाँटता है
    • Blocks को और छोटे tiles में बाँटा जाता है
    • Tiles के भीतर हज़ारों threads single elements को process करते हैं
    • Threads मिलकर एक operation पूरा करते हैं
  • GPU की बड़ी compute क्षमता इस बात से आती है कि वह thread level पर single elements तक parallel processing कर सकता है
  • NVIDIA का मानना है कि GPU execution को हर बार thread level तक जाना ज़रूरी नहीं, बल्कि tile level के मध्य चरण पर भी संभाला जा सकता है
  • CuTile arrays को GPU पर कम सूक्ष्म स्तर पर कुशलता से map करता है, जिससे code को समझना और debug करना आसान होता है
  • Jones के अनुसार यह तरीका मूल रूप से वही performance देता है
  • Tile का data vector, tensor और array से बना हो सकता है
  • Compiler पूरे array operation को thread blocks के जरिए GPU पर map करने का काम अधिक बेहतर ढंग से कर सकता है, और Jones का कहना है कि compiler कई बार उनसे भी बेहतर करता है क्योंकि उसे GPU execution details की गहरी समझ होती है
  • Python, C++ की तरह डिज़ाइन के स्तर पर granular language नहीं है, और Jones ने OpenAI के Triton को Python programs के साथ स्वाभाविक रूप से फिट होने वाले उदाहरण के रूप में बताया

2 टिप्पणियां

 
aer0700 2025-04-06

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

 
iwi19 2025-04-06

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