ZLUDA, AMD GPU पर CUDA ऐप्स चलाने वाला ओपन सोर्स प्रोजेक्ट
(cgchannel.com)- ZLUDA 3 एक ओपन सोर्स तकनीक है जिसका लक्ष्य CUDA पर निर्भर NVIDIA GPU एप्लिकेशनों को AMD GPU पर बिना किसी बदलाव के चलाना है
- इसकी शुरुआत Intel GPU के लिए CUDA के विकल्प के रूप में हुई थी, लेकिन Intel और AMD दोनों द्वारा मूल्यांकन रोक दिए जाने के बाद अब AMD GPU के लिए कोड सार्वजनिक किया गया है
- Blender में नेटिव HIP बैकएंड के समान प्रदर्शन के उदाहरण हैं, लेकिन 3DF Zephyr और RealityCapture को ZLUDA पर “much slower” बताया गया है, इसलिए ऐप के अनुसार अंतर काफी बड़ा है
- RealityCapture और Arnold जैसे NVIDIA-विशेष CG ऐप्स के चलने की संभावना दिखी है, लेकिन OptiX support Linux पर न्यूनतम स्तर तक सीमित है, इसलिए rendering workflow में बाधाएँ हैं
- Intel और AMD के समर्थन के बिना यह प्रोजेक्ट “realistically now abandoned” के करीब माना जा रहा है, और NVIDIA SDK लाइसेंस भी non-NVIDIA platforms के लिए translation layer के विकास को सीमित करता है
ZLUDA 3 किस CUDA निर्भरता समस्या को हल करना चाहता है
- ZLUDA 3 एक ओपन सोर्स प्रोजेक्ट है जो NVIDIA GPU के लिए बने GPU-आधारित एप्लिकेशनों को दूसरे निर्माताओं के हार्डवेयर पर चलाने का प्रयास करता है
- इसे इस तरह डिज़ाइन किया गया है कि मौजूदा एप्लिकेशन बिना किसी संशोधन के नए हार्डवेयर पर चल सकें, यानी ऐप डेवलपर को अलग से porting का काम न करना पड़े
- ZLUDA को पहली बार 2020 में Intel GPU के लिए CUDA drop-in replacement implementation के रूप में पेश किया गया था, लेकिन 2021 में version 2 के बाद विकास जारी रखना कठिन हो गया
- 2021 में जब Andrzej Janik Intel में कार्यरत थे, तब Intel ने ZLUDA को एक आधिकारिक तकनीकी उम्मीदवार के रूप में परखा, लेकिन यह निष्कर्ष निकाला कि “Intel GPU पर CUDA एप्लिकेशन चलाने का कोई व्यावसायिक मामला नहीं है”
- Janik ने 2022 में Intel छोड़ने के बाद AMD से संपर्क किया, और AMD ने भी 2 साल तक ZLUDA का मूल्यांकन किया, लेकिन आगे नहीं बढ़ने का फैसला किया
- इसके बाद अपडेट किया गया कोड ओपन सोर्स के रूप में जारी किया गया, और संबंधित पृष्ठभूमि Phoronix लेख में विस्तार से देखी जा सकती है
CG ऐप्स में पुष्टि हुई काम करने की सीमा
- ZLUDA 3 का लक्ष्य NVIDIA के CUDA API से विकसित GPU ऐप्स को AMD GPU पर चलाना है
- VFX, motion graphics और visualization के क्षेत्र में कुछ प्रमुख CG ऐप्स और renderers CUDA-आधारित होने के कारण व्यवहार में NVIDIA-विशेष बने हुए हैं
- AMD का HIP CUDA ऐप्स को AMD हार्डवेयर पर port करने की तकनीक है, लेकिन इसमें software developer के काम की जरूरत होती है
- Janik ने ZLUDA पर जिन NVIDIA-विशेष सॉफ्टवेयरों का परीक्षण किया उनमें 3DF Zephyr, RealityCapture, और Autodesk Arnold शामिल हैं
- Arnold support अभी proof of concept स्तर पर है, और ZLUDA की OptiX implementation के साथ सफलतापूर्वक render किए गए scenes सीमित हैं
प्रदर्शन और compatibility की वास्तविक सीमाएँ
- Janik का आकलन है कि CUDA ऐप्स AMD GPU पर “near-native performance” के साथ चल सकते हैं
- Phoronix benchmarks और Blender Artists फ़ोरम के thread के अनुसार, Blender में ZLUDA का प्रदर्शन कुछ मामलों में नेटिव HIP backend जैसा है
- दूसरी ओर ZLUDA GitHub repository में 3DF Zephyr और RealityCapture को ZLUDA पर much slower बताया गया है
- कई GPU renderers ray tracing acceleration के लिए CUDA के साथ NVIDIA OptiX का भी उपयोग करते हैं
- ZLUDA की OptiX support “minimum” स्तर की है
- OptiX support केवल Linux पर है, Windows पर नहीं
- implementation की स्थिति “buggy, unoptimized and incomplete” है
- ZLUDA-OptiX redistributable version में शामिल नहीं है, इसलिए इसे खुद build करना पड़ता है
- अन्य CUDA-आधारित CG ऐप्स चल पाएँगे या नहीं, यह बिना user testing के तय करना कठिन है
- known issues अब भी मौजूद हैं
- V-Ray benchmark कुछ “lucky” पुराने ZLUDA और HIP combinations में चलता है
- OctaneBench बिल्कुल नहीं चलता
प्रोजेक्ट की निरंतरता और लाइसेंस संबंधी सीमाएँ
- Janik का मानना है कि Intel या AMD के समर्थन के बिना ZLUDA अब “realistically now abandoned” स्थिति में है
- वे प्रोजेक्ट को आगे बढ़ाने वाले प्रस्तावों के लिए खुले हैं
- अन्यथा, संभव है कि वे केवल DLSS जैसी उन NVIDIA तकनीकों का support जोड़ें जिनमें उनकी व्यक्तिगत रुचि है
- मौजूदा कोड उन software developers के लिए भी उपयोगी हो सकता है जो CUDA से HIP में क्रमिक porting कर रहे हैं
- 14 मार्च 2024 के अपडेट के अनुसार, Tom’s Hardware ने बताया कि NVIDIA SDK लाइसेंस शर्तें CUDA Toolkit सहित SDK outputs का उपयोग non-NVIDIA platforms के लिए conversion technology विकसित करने में प्रतिबंधित करती हैं
- ZLUDA 3 के compiled versions Windows और Linux के लिए उपलब्ध हैं, और source code Apache 2.0 या MIT license के तहत उपलब्ध है
- ZLUDA 3 डाउनलोड प्रोजेक्ट के GitHub repository से किया जा सकता है
1 टिप्पणियां
Hacker News की राय
22 दिन पहले भी इस पर चर्चा हुई थी: AMD ने ROCm-आधारित CUDA drop-in implementation को फंड किया था, और बाद में उसे open source के रूप में जारी किया गया—उस पोस्ट [0] पर 400 टिप्पणियाँ आई थीं
उस थ्रेड की एक उल्लेखनीय top-level टिप्पणी में कहा गया था कि यह रिलीज़ खुद AMD द्वारा फंडिंग रोकने का नतीजा थी: “2 साल के विकास और समीक्षा के बाद AMD ने तय किया कि AMD GPU पर CUDA applications चलाने का कोई व्यावसायिक औचित्य नहीं है। AMD के साथ मेरे कॉन्ट्रैक्ट की एक शर्त यह थी कि अगर AMD को लगे कि यह आगे के विकास के लिए उपयुक्त नहीं है, तो मैं इसे सार्वजनिक कर सकता हूँ। इसलिए आज हम यहाँ हैं।” स्रोत: https://github.com/vosen/ZLUDA?tab=readme-ov-file#faq
[0] https://news.ycombinator.com/item?id=39344815
Zluda: Run CUDA code on Intel GPUs, unmodified - https://news.ycombinator.com/item?id=36341211 - जून 2023, 90 टिप्पणियाँ
Zluda: CUDA on Intel GPUs - https://news.ycombinator.com/item?id=26262038 - फ़रवरी 2021, 77 टिप्पणियाँ
हाल की संबंधित पोस्टों में Nvidia bans using translation layers for CUDA software to run on other chips - https://news.ycombinator.com/item?id=39592689 - मार्च 2024, 155 टिप्पणियाँ भी शामिल है
AMD का इस प्रोजेक्ट की फंडिंग रोकना सच में बेतुका था। open source होते ही इसने AMD users के लिए value बनानी शुरू कर दी
ऐसा लगता है कि यही AMD की सबसे ऊँची प्राथमिकता होनी चाहिए थी, लेकिन वह इसके बजाय सालों से मामूली सपोर्ट वाले दो, या अब शायद तीन, वैकल्पिक API के पीछे भटक रहा था
“HIP बहुत thin है, इसलिए सीधे CUDA mode में कोडिंग करने की तुलना में performance impact बहुत कम या बिल्कुल नहीं होता”
“HIPIFY tool CUDA source को अपने-आप HIP में बदल देता है”
consumer graphics card बाज़ार में यह अल्पकालिक फ़ायदा दे सकता है, लेकिन लंबी अवधि में यह data center में Nvidia की स्थिति को और मजबूत करने वाली आत्मघाती चाल के करीब है
इस चर्चा से “Nvidia ने CUDA software को दूसरे chips पर चलाने के लिए translation layers के इस्तेमाल पर रोक लगा दी” वाली पोस्ट भी जुड़ी हुई लगती है [1]
[1] https://news.ycombinator.com/item?id=39592689
emulation को स्पष्ट रूप से भी और case law के तहत भी कानूनी सुरक्षा मिली हुई है। compatibility के उद्देश्य से API की नकल का मामला अमेरिका के सर्वोच्च न्यायालय तक गया था, और यह तय हुआ था कि वह copyright के दायरे में नहीं आता। कम-से-कम काफ़ी व्यापक सीमा तक तो यही माना जाता है
मैं वकील नहीं हूँ, लेकिन समझ नहीं आता कि Nvidia किस कानूनी आधार की उम्मीद कर रही है। अगर किसी व्यक्ति या कंपनी के पास Nvidia hardware है ही नहीं, तो यह मुद्दा लगभग निरर्थक लगता है। और अगर किसी कंपनी के पास पहले से Nvidia hardware है, तो शायद Nvidia कुछ दावा कर सके, लेकिन क्या वह सीधा anti-competitive conduct के दायरे में नहीं आएगा?
CUDA software डाउनलोड किए बिना आपको EULA मानने की भी ज़रूरत नहीं, इसलिए ZLUDA के लेखक शायद उससे बच पाए होंगे
“Intel ने भी आख़िरकार तय किया कि ‘Intel GPU पर CUDA applications चलाने का कोई व्यावसायिक औचित्य नहीं है’”, यह वाकई असहज करने वाला है
AMD GPGPU को एक बार भी इस्तेमाल कर चुके लोग जिस बात को जानते हैं, वही यहाँ पक्की हुई। AMD को 2 ट्रिलियन डॉलर की कंपनी बनने से रोकने वाली एकमात्र चीज़ सचमुच बेहद भयानक software है
मुझे याद है कि मैंने AMD के OpenCL compiler में bug ढूँढे थे [1], और segmentation fault से OpenCL compiler को क्रैश कराना भी बहुत आसान था। वह आखिर तक ठीक नहीं हुआ, इसलिए मैंने report करना ही छोड़ दिया
AMD ने CUDA का competitor नहीं बनाया — यह मेरे देखे सबसे short-sighted फ़ैसलों में से एक है। अगर आप बेहतरीन hardware भी बना लें, लेकिन उसे इस्तेमाल करने वाला software बहुत ही नरमी से कहें तो भी घटिया हो, तो कोई उसे खरीदेगा या इस्तेमाल नहीं करेगा; यह समझने वाले लोगों से board को क्यों नहीं बदला गया, समझ नहीं आता
हम ग्राहक इतने अमीर नहीं हैं कि AMD board ने मेज़ पर छोड़ी हुई लगभग 1 ट्रिलियन डॉलर की value की चिंता न करें, इसलिए हमें महंगे Nvidia कार्ड खरीदने पड़ते हैं। अगर आपके पास AMD के shares हैं, तो आपको सवाल पूछने चाहिए। वह board सबसे नज़दीकी नाले में बहा दिया जाना चाहिए
[1] https://github.com/msoos/amdmiscompile -- आखिरकार यह ठीक कर दिया गया
मेरी भोली समझ के मुताबिक, graphics card एक अजीब-सा computer है जिसमें आप instructions और data चढ़ा देते हैं और फिर वह खुद हिसाब-किताब कर लेता है
मुझे समझ नहीं आता कि CUDA इतनी बड़ी बात क्यों है। AMD अपने GPU तक सीधी पहुँच ऐसे क्यों नहीं दे सकता जैसे वह 4096 Arduino boards की array हो?
hardware बनाने वाली कंपनियाँ आम तौर पर software में अच्छी नहीं होतीं। exceptions हैं, लेकिन ज़्यादा नहीं, और ऐसी कंपनियों को सच में stock price में इनाम मिला है। AMD के software division की culture मुझे नहीं पता, लेकिन आम तौर पर इसे ठीक करने के लिए काफ़ी बड़ा बदलाव चाहिए होता है
सिर्फ board बदल देने से शायद बात नहीं बनेगी। अगर ऊपर से आने वाले executive निर्देश ही कंपनी को नीचे खींचने वाली अकेली वजह नहीं हैं, तो management की बहुत ज़्यादा layers बदलनी पड़ेंगी और middle managers का भी बड़ा हिस्सा हटाना पड़ेगा। अगर software hiring ही ठीक से नहीं हुई, तो कभी-कभी individual contributors तक बदलने पड़ते हैं
Intel software में अच्छा है, SYCL एक open standard है, इसलिए दोनों कंपनियाँ एक ही codebase से फ़ायदा उठा सकती हैं, और ग्राहक चाहें तो Threadripper पर भी SYCL code चला सकते हैं। आजकल कुछ Threadripper कुछ GPUs जितने तेज़ भी हैं
क्या AMD अपना खुद का proprietary lock-in ecosystem बनाना चाहता है? समझ नहीं आता कि वह cross-platform open standards के लिए committed क्यों नहीं है
जब मेरा UPS अच्छा नहीं था, तब GPU power limit भी लगाई जा सकती थी, और RX 580 को लगभग एक साल और चलाने के लिए auto overclock भी किया जा सकता था
लेकिन 2020 के आसपास के बाद का software/driver VR titles को एक घंटे के अंदर ही crash करा देता है। Linux के लिए software package भी नहीं है और CoreCtrl उतना अच्छा नहीं है। instant replay भी कभी-कभी बस काम ही नहीं करता। Windows और Linux दोनों पर मैं local LLM के साथ ROCm को एक बार भी ठीक से नहीं चला पाया, और DKMS को
apt upgradeके हर बार ढेर सारी बेकार compilation चलाने का शौक थाअगला GPU लेते समय जिज्ञासा में Intel Arc लूँ या बस Nvidia पर लौट जाऊँ, यही सोच रहा हूँ। options लगभग A580, RX 6600, RTX 3050 जैसे हैं, या फिर बाकी parts की कीमतें गिरने तक इंतज़ार भी कर सकता हूँ
क्या कोई ऐसी programming language है जो Metal, CUDA, AMD वाली किसी चीज़ जैसे कई kernel languages में compile हो जाती हो? अगर नहीं है, तो क्यों नहीं?
C compiler कई CPU architectures के लिए compile करते हैं। तो GPU architectures के लिए compiler भी होने चाहिए, है न? हो सकता है अभी तक किसी ने बनाया ही न हो
https://www.khronos.org/api/opencl
क्या किसी ने Meshroom जैसे open-source photogrammetry tools चलाने के लिए इसे आज़माया है? लेख में कुछ proprietary tools का ज़िक्र है, लेकिन मेरी ज़रूरतें काफ़ी छोटी हैं
यह JVM bytecode के इस्तेमाल को लेकर हुए Oracle बनाम Google मामले जैसा लगभग एक जैसा लगता है
यह कुछ वैसा है जैसे Google कहे, “हमारे Android applications सिर्फ Google-approved phones पर ही चल सकते हैं।” मेरी समझ से Google वास्तव में Play framework या Maps जैसी चीज़ों के साथ ऐसा करता भी है
मैंने हाल ही में एक दिलचस्प अफ़वाह सुनी कि NVIDIA में CUDA के ज़िम्मेदार व्यक्ति ने कई साल तक resources हासिल करने और कंपनी को मनाने के लिए लड़ाई लड़ी, ताकि इस project को गंभीरता से लिया जाए
अगर CUDA न होता, तो NVIDIA आज लगभग 1 ट्रिलियन डॉलर की कंपनी कभी नहीं बनती
geohot का महंगे AMD GPU के साथ लगातार जूझना भी इससे जुड़ा है: https://twitter.com/tinygrad/status/1764734675002810622