कंप्यूटर संसाधन यू एस.एम. क्यूडा कहाँ जाता है: जीपीजीपीयू प्रौद्योगिकी का व्यावहारिक अनुप्रयोग - सर्वोत्तम उपकरण अनुप्रयोग जो क्यूडा पर चलते हैं
दशकों से, मूर का नियम प्रभावी रहा है, जिसमें कहा गया है कि हर दो साल में एक चिप पर ट्रांजिस्टर की संख्या दोगुनी हो जाएगी। हालाँकि, यह 1965 की बात है, और पिछले 5 वर्षों में उपभोक्ता-श्रेणी के प्रोसेसर में भौतिक मल्टी-कोर का विचार तेजी से विकसित होना शुरू हो गया है: 2005 में, इंटेल ने पेंटियम डी पेश किया, और एएमडी ने एथलॉन एक्स2 पेश किया। उस समय, 2 कोर का उपयोग करने वाले अनुप्रयोगों को एक हाथ की उंगलियों पर गिना जा सकता था। हालाँकि, इंटेल प्रोसेसर की अगली पीढ़ी, जिसने क्रांति ला दी, में बिल्कुल 2 भौतिक कोर थे। इसके अलावा, क्वाड सीरीज़ जनवरी 2007 में प्रदर्शित हुई, उस समय मूर ने स्वयं स्वीकार किया कि उनका कानून जल्द ही लागू होना बंद हो जाएगा।
अब क्या? बजट कार्यालय प्रणालियों में भी दोहरे कोर प्रोसेसर और 4 भौतिक कोर आदर्श बन गए हैं, और यह केवल 2-3 वर्षों में है। प्रोसेसर की आवृत्ति में वृद्धि नहीं हुई है, लेकिन वास्तुकला में सुधार हुआ है, भौतिक और आभासी कोर की संख्या में वृद्धि हुई है। हालाँकि, दसियों या सैकड़ों कंप्यूटिंग "इकाइयों" से लैस वीडियो एडेप्टर का उपयोग करने का विचार लंबे समय से है।
और यद्यपि जीपीयू कंप्यूटिंग के लिए संभावनाएं बहुत अधिक हैं, सबसे लोकप्रिय समाधान एनवीडिया सीयूडीए है, जो मुफ़्त है, इसमें बहुत सारे दस्तावेज हैं और आम तौर पर इसे लागू करना बहुत आसान है, इस तकनीक का उपयोग करने वाले कई एप्लिकेशन नहीं हैं। मूल रूप से, ये सभी प्रकार की विशिष्ट गणनाएँ हैं, जिनकी अधिकांश मामलों में औसत उपयोगकर्ता को परवाह नहीं होती है। लेकिन बड़े पैमाने पर उपयोगकर्ताओं के लिए डिज़ाइन किए गए प्रोग्राम भी हैं, और हम इस लेख में उनके बारे में बात करेंगे।
सबसे पहले, तकनीक के बारे में थोड़ा और इसका उपयोग किसके साथ किया जाता है। क्योंकि एक लेख लिखते समय, मैं पाठकों की एक विस्तृत श्रृंखला पर ध्यान केंद्रित करता हूं, इसलिए मैं इसे जटिल शब्दों के बिना और कुछ हद तक संक्षेप में सुलभ भाषा में समझाने की कोशिश करूंगा।
CUDA(अंग्रेजी: कंप्यूट यूनिफाइड डिवाइस आर्किटेक्चर) एक सॉफ्टवेयर और हार्डवेयर आर्किटेक्चर है जो आपको NVIDIA ग्राफिक्स प्रोसेसर का उपयोग करके गणना करने की अनुमति देता है जो GPGPU तकनीक (वीडियो कार्ड पर रैंडम कंप्यूटिंग) का समर्थन करता है। CUDA आर्किटेक्चर पहली बार आठवीं पीढ़ी के NVIDIA चिप - G80 की रिलीज के साथ बाजार में दिखाई दिया और ग्राफिक्स चिप्स की सभी बाद की श्रृंखला में मौजूद है जो GeForce, Quadro और Tesla त्वरक परिवारों में उपयोग किए जाते हैं। (सी) विकिपीडिया.ओआरजी
आने वाली धाराओं को एक दूसरे से स्वतंत्र रूप से संसाधित किया जाता है, अर्थात। समानांतर।
3 स्तरों में विभाजन है:
ग्रिड- मुख्य। इसमें ब्लॉकों की एक/दो/त्रि-आयामी सरणी शामिल है।
अवरोध पैदा करना- इसमें कई धागे शामिल हैं। विभिन्न ब्लॉकों के धागे एक दूसरे के साथ इंटरैक्ट नहीं कर सकते। ब्लॉक लगाना क्यों आवश्यक था? प्रत्येक ब्लॉक अनिवार्य रूप से अपने स्वयं के उपकार्य के लिए जिम्मेदार है। उदाहरण के लिए, एक बड़ी छवि (जो एक मैट्रिक्स है) को कई छोटे भागों (मैट्रिस) में विभाजित किया जा सकता है और छवि के प्रत्येक भाग के साथ समानांतर में काम किया जा सकता है।
धागा- प्रवाह। एक ब्लॉक के भीतर थ्रेड या तो साझा मेमोरी के माध्यम से इंटरैक्ट कर सकते हैं, जो, वैसे, वैश्विक मेमोरी की तुलना में बहुत तेज़ है, या थ्रेड सिंक्रोनाइज़ेशन टूल के माध्यम से।
तानाएक दूसरे के साथ इंटरैक्ट करने वाले धागों का एक संघ है, सभी आधुनिक GPU के लिए Warp का आकार 32 है। अगला आता है अर्ध-ताना, जो ताना का आधा है, क्योंकि मेमोरी एक्सेस आमतौर पर वॉर्प के पहले और दूसरे भाग के लिए अलग-अलग होता है।
जैसा कि आप देख सकते हैं, यह आर्किटेक्चर समानांतर कार्यों के लिए उत्कृष्ट है। और यद्यपि प्रोग्रामिंग कुछ प्रतिबंधों के साथ सी भाषा में की जाती है, वास्तव में सब कुछ इतना सरल नहीं है, क्योंकि... हर चीज़ को समानांतर नहीं किया जा सकता. यादृच्छिक संख्याएँ उत्पन्न करने (या आरंभीकरण) के लिए कोई मानक कार्य भी नहीं हैं; यह सब अलग से लागू करना होगा। और यद्यपि बहुत सारे तैयार विकल्प मौजूद हैं, इनमें से कोई भी खुशी नहीं लाता है। प्रत्यावर्तन का उपयोग करने की क्षमता अपेक्षाकृत हाल ही में सामने आई है।
स्पष्टता के लिए, एक छोटा कंसोल प्रोग्राम (कोड को न्यूनतम करने के लिए) लिखा गया था जो फ्लोट प्रकार के दो सरणियों के साथ संचालन करता है, अर्थात। गैर-पूर्णांक मानों के साथ. ऊपर बताए गए कारणों से, आरंभीकरण (विभिन्न मनमाने मूल्यों के साथ सरणी को भरना) सीपीयू द्वारा किया गया था। इसके बाद, प्रत्येक सरणी से संबंधित तत्वों के साथ 25 अलग-अलग ऑपरेशन किए गए, मध्यवर्ती परिणाम तीसरे सरणी में लिखे गए। सरणी का आकार बदल गया, परिणाम इस प्रकार हैं:
कुल 4 परीक्षण किए गए:
प्रत्येक सरणी में 1024 तत्व:
यह स्पष्ट रूप से देखा गया है कि तत्वों की इतनी कम संख्या के साथ, समानांतर कंप्यूटिंग का बहुत कम उपयोग होता है, क्योंकि गणनाएँ स्वयं उनकी तैयारी से कहीं अधिक तेज़ होती हैं।
प्रत्येक सरणी में 4096 तत्व:
और अब आप देख सकते हैं कि वीडियो कार्ड प्रोसेसर की तुलना में 3 गुना तेजी से ऐरे पर ऑपरेशन करता है। इसके अलावा, वीडियो कार्ड पर इस परीक्षण का निष्पादन समय नहीं बढ़ा (समय में थोड़ी कमी को एक त्रुटि के लिए जिम्मेदार ठहराया जा सकता है)।
प्रत्येक सरणी में अब 12288 तत्व हैं:
वीडियो कार्ड का पृथक्करण 2 गुना बढ़ गया है। फिर, यह ध्यान देने योग्य है कि वीडियो कार्ड पर निष्पादन का समय बढ़ गया है
नगण्य रूप से, लेकिन प्रोसेसर पर 3 से अधिक बार, यानी। कार्य की जटिलता के अनुपात में।
और अंतिम परीक्षण प्रत्येक सरणी में 36864 तत्व है:
इस मामले में, त्वरण प्रभावशाली मूल्यों तक पहुंचता है - वीडियो कार्ड पर लगभग 22 गुना तेज। और फिर, वीडियो कार्ड पर निष्पादन समय थोड़ा बढ़ गया, लेकिन प्रोसेसर पर - आवश्यक 3 गुना, जो फिर से कार्य की जटिलता के समानुपाती है।
यदि आप गणनाओं को जटिल बनाना जारी रखते हैं, तो वीडियो कार्ड अधिक से अधिक जीतता है। हालाँकि उदाहरण कुछ हद तक अतिरंजित है, लेकिन समग्र स्थिति स्पष्ट रूप से दिखाई देती है। लेकिन जैसा कि ऊपर बताया गया है, हर चीज़ को समानांतर नहीं किया जा सकता। उदाहरण के लिए, पाई की गणना। मोंटे कार्लो पद्धति का उपयोग करके लिखे गए केवल उदाहरण हैं, लेकिन गणना की सटीकता 7 दशमलव स्थान है, अर्थात। नियमित फ़्लोट. गणनाओं की सटीकता बढ़ाने के लिए लंबे अंकगणित की आवश्यकता होती है, और यहीं समस्याएँ उत्पन्न होती हैं, क्योंकि इसे प्रभावी ढंग से लागू करना बहुत कठिन है। मुझे इंटरनेट पर ऐसे उदाहरण नहीं मिले जो CUDA का उपयोग करते हों और 1 मिलियन दशमलव स्थानों तक Pi की गणना करते हों। इस तरह के एप्लिकेशन को लिखने का प्रयास किया गया है, लेकिन पाई की गणना के लिए सबसे सरल और सबसे कुशल तरीका ब्रेंट-सलामिन एल्गोरिदम या गॉस फॉर्मूला है। सुप्रसिद्ध सुपरपीआई संभवतः (संचालन की गति और पुनरावृत्तियों की संख्या को देखते हुए) गॉसियन सूत्र का उपयोग करता है। और, देखते हुए
इस तथ्य के कारण कि सुपरपीआई सिंगल-थ्रेडेड है, सीयूडीए के तहत उदाहरणों की कमी और मेरे प्रयासों की विफलता के कारण, पीआई गिनती को प्रभावी ढंग से समानांतर करना असंभव है।
वैसे, आप देख सकते हैं कि गणना के दौरान GPU पर लोड कैसे बढ़ता है, और मेमोरी भी आवंटित होती है।
अब आइए CUDA के अधिक व्यावहारिक लाभों की ओर बढ़ते हैं, अर्थात् वर्तमान में मौजूद प्रोग्राम जो इस तकनीक का उपयोग करते हैं। अधिकांश भाग के लिए, ये सभी प्रकार के ऑडियो/वीडियो कनवर्टर और संपादक हैं।
परीक्षण में 3 अलग-अलग वीडियो फ़ाइलों का उपयोग किया गया:
- *फिल्म अवतार के निर्माण का इतिहास - 1920x1080, एमपीईजी4, एच.264।
- *श्रृंखला "मुझसे झूठ बोलो" - 1280x720, एमपीईजी4, एच.264।
- *श्रृंखला "फिलाडेल्फिया में हमेशा धूप रहती है" - 624x464, xvid।
पहली दो फ़ाइलों का कंटेनर और आकार .mkv और 1.55 GB था, और अंतिम .avi और 272 MB था।
आइए एक बहुत ही सनसनीखेज और लोकप्रिय उत्पाद से शुरुआत करें - बडाबूम. प्रयुक्त संस्करण - 1.2.1.74 . कार्यक्रम की लागत है $29.90 .
प्रोग्राम इंटरफ़ेस सरल और सहज है - बाईं ओर हम स्रोत फ़ाइल या डिस्क का चयन करते हैं, और दाईं ओर - आवश्यक डिवाइस जिसके लिए हम एन्कोड करेंगे। एक उपयोगकर्ता मोड भी है जिसमें पैरामीटर मैन्युअल रूप से सेट किए जाते हैं, जिसका हमने उपयोग किया है।
सबसे पहले, आइए देखें कि वीडियो कितनी जल्दी और कुशलता से "स्वयं में" एन्कोड किया गया है, यानी। समान रिज़ॉल्यूशन और लगभग समान आकार। हम गति को एफपीएस में मापेंगे, न कि बीते हुए समय में - इस तरह तुलना करना और गणना करना अधिक सुविधाजनक है कि मनमानी लंबाई का वीडियो कितना संपीड़ित होगा। क्योंकि आज हम "हरित" तकनीक पर विचार कर रहे हैं, तो ग्राफ़ संगत होंगे -)
एन्कोडिंग गति सीधे गुणवत्ता पर निर्भर करती है, यह स्पष्ट है। यह ध्यान देने योग्य है कि प्रकाश रिज़ॉल्यूशन (चलिए इसे पारंपरिक रूप से एसडी कहते हैं) बडाबूम के लिए कोई समस्या नहीं है - एन्कोडिंग गति मूल (24 एफपीएस) वीडियो फ़्रेमरेट से 5.5 गुना अधिक है। और भारी 1080p वीडियो को भी प्रोग्राम द्वारा वास्तविक समय में परिवर्तित किया जाता है। यह ध्यान देने योग्य है कि अंतिम वीडियो की गुणवत्ता मूल वीडियो सामग्री के बहुत करीब है, अर्थात। Badaboom बहुत ही कुशलता से एन्कोड करता है।
लेकिन आमतौर पर वे वीडियो को कम रिज़ॉल्यूशन पर स्थानांतरित करते हैं, आइए देखें कि इस मोड में चीजें कैसी होती हैं। जैसे ही रिज़ॉल्यूशन कम हुआ, वीडियो बिटरेट भी कम हो गया। यह 1080p आउटपुट फ़ाइल के लिए 9500 kbps, 720p के लिए 4100 kbps और 720x404 के लिए 2400 kbps थी। चयन उचित आकार/गुणवत्ता अनुपात के आधार पर किया गया था।
किसी टिप्पणी की आवश्यकता नहीं. यदि आप 720पी से नियमित एसडी गुणवत्ता तक रिप बनाते हैं, तो 2 घंटे तक चलने वाली फिल्म को ट्रांसकोड करने में लगभग 30 मिनट लगेंगे। और साथ ही, प्रोसेसर लोड नगण्य होगा, आप असुविधा महसूस किए बिना अपना व्यवसाय कर सकते हैं।
यदि आप वीडियो को मोबाइल डिवाइस के प्रारूप में परिवर्तित करते हैं तो क्या होगा? ऐसा करने के लिए, iPhone प्रोफ़ाइल चुनें (बिटरेट 1 Mbit/s, 480x320) और एन्कोडिंग गति देखें:
क्या मुझे कुछ कहने की ज़रूरत है? सामान्य iPhone गुणवत्ता में दो घंटे की मूवी 15 मिनट से भी कम समय में ट्रांसकोड हो जाती है। एचडी गुणवत्ता के साथ यह अधिक कठिन है, लेकिन फिर भी बहुत तेज़ है। मुख्य बात यह है कि फोन डिस्प्ले पर देखने पर आउटपुट वीडियो की गुणवत्ता काफी उच्च स्तर पर रहती है।
सामान्य तौर पर, Badaboom के प्रभाव सकारात्मक हैं, संचालन की गति सुखद है, और इंटरफ़ेस सरल और स्पष्ट है। पुराने संस्करणों में सभी प्रकार के बग (मैंने 2008 में बीटा का उपयोग किया था) को ठीक कर दिया गया है। एक चीज़ को छोड़कर - स्रोत फ़ाइल का पथ, साथ ही उस फ़ोल्डर का पथ जिसमें तैयार वीडियो सहेजा गया है, में रूसी अक्षर नहीं होने चाहिए। लेकिन कार्यक्रम के फायदों की तुलना में यह कमी नगण्य है।
अगली पंक्ति में हमारे पास होगा सुपर लोइलोस्कोप. वे नियमित संस्करण के लिए पूछते हैं 3,280 रूबल, और टच संस्करण के लिए, जो विंडोज 7 में टच कंट्रोल का समर्थन करता है, वे उतना ही मांगते हैं 4,440 रूबल. आइए यह पता लगाने की कोशिश करें कि डेवलपर उस तरह का पैसा क्यों चाहता है और वीडियो संपादक को मल्टीटच समर्थन की आवश्यकता क्यों है। नवीनतम संस्करण का उपयोग किया गया - 1.8.3.3 .
प्रोग्राम इंटरफ़ेस को शब्दों में वर्णित करना काफी कठिन है, इसलिए मैंने एक छोटा वीडियो बनाने का निर्णय लिया। मैं तुरंत कहूंगा कि, CUDA के लिए सभी वीडियो कन्वर्टर्स की तरह, GPU त्वरण केवल h.264 कोडेक के साथ MPEG4 में वीडियो आउटपुट के लिए समर्थित है।
एन्कोडिंग के दौरान, प्रोसेसर लोड 100% होता है, लेकिन इससे असुविधा नहीं होती है। ब्राउज़र और अन्य हल्के एप्लिकेशन धीमे नहीं होते हैं.
अब चलिए प्रदर्शन की ओर बढ़ते हैं। आरंभ करने के लिए, सब कुछ Badaboom जैसा ही है - वीडियो को गुणवत्ता में समान में ट्रांसकोड करना।
परिणाम बडाबूम से कहीं बेहतर हैं। गुणवत्ता भी उत्कृष्ट है, मूल के साथ अंतर केवल एक आवर्धक कांच के नीचे जोड़े में फ्रेम की तुलना करके देखा जा सकता है।
वाह, यहां लोइलोस्कोप ने बडाबूम से 2.5 गुना बेहतर प्रदर्शन किया है। साथ ही, आप समानांतर में किसी अन्य वीडियो को आसानी से काट और एन्कोड कर सकते हैं, समाचार पढ़ सकते हैं और यहां तक कि फिल्में भी देख सकते हैं, और यहां तक कि फुलएचडी को समस्याओं के बिना चलाया जा सकता है, भले ही प्रोसेसर लोड अधिकतम हो।
आइए अब मोबाइल डिवाइस के लिए एक वीडियो बनाने का प्रयास करें, आइए प्रोफ़ाइल को उसी तरह कॉल करें जैसे इसे Badaboom में कहा गया था - iPhone (480x320, 1 Mbit/s):
कोई त्रुटि नहीं है. हर चीज़ की कई बार दोबारा जाँच की गई, हर बार नतीजा वही रहा। सबसे अधिक संभावना है, ऐसा साधारण कारण से होता है कि एसडी फ़ाइल को एक अलग कोडेक और एक अलग कंटेनर में रिकॉर्ड किया गया था। ट्रांसकोडिंग करते समय, वीडियो को पहले डिकोड किया जाता है, एक निश्चित आकार के मैट्रिक्स में विभाजित किया जाता है, और संपीड़ित किया जाता है। समानांतर में डिकोडिंग करते समय xvid के मामले में उपयोग किया जाने वाला ASP डिकोडर AVC (h.264 के लिए) से धीमा होता है। हालाँकि, 192 एफपीएस मूल वीडियो की गति से 8 गुना तेज है; 23 मिनट की श्रृंखला 4 मिनट से भी कम समय में संपीड़ित होती है। यही स्थिति xvid/DivX में संपीड़ित अन्य फ़ाइलों के साथ दोहराई गई।
लोइलोस्कोपमैंने केवल सुखद प्रभाव छोड़ा - इंटरफ़ेस, अपनी असामान्यता के बावजूद, सुविधाजनक और कार्यात्मक है, और संचालन की गति प्रशंसा से परे है। अपेक्षाकृत खराब कार्यक्षमता कुछ हद तक निराशाजनक है, लेकिन अक्सर सरल इंस्टॉलेशन के साथ आपको केवल रंगों को थोड़ा समायोजित करने, सुचारू बदलाव करने, टेक्स्ट जोड़ने की आवश्यकता होती है, और लोइलोस्कोप इसके साथ उत्कृष्ट काम करता है। कीमत भी कुछ हद तक भयावह है - नियमित संस्करण के लिए $100 से अधिक विदेशी देशों के लिए सामान्य है, लेकिन ऐसे आंकड़े अभी भी हमें थोड़े अजीब लगते हैं। हालाँकि, मैं स्वीकार करता हूँ कि यदि, उदाहरण के लिए, मैं अक्सर घरेलू वीडियो फिल्माता और संपादित करता, तो शायद मैंने इसे खरीदने के बारे में सोचा होता। उसी समय, वैसे, मैंने किसी अन्य प्रारूप में परिवर्तित किए बिना सीधे वीडियो कैमरे से एचडी (या बल्कि एवीसीएचडी) सामग्री को संपादित करने की संभावना की जांच की; लोइलोस्कोप ने .mts जैसी फ़ाइलों के साथ कोई समस्या प्रकट नहीं की।
नई तकनीक एक नई उभरती हुई विकासवादी प्रजाति की तरह है। कई पुराने समय के लोगों के विपरीत, एक अजीब प्राणी। कभी अजीब तो कभी मज़ाकिया. और प्रथम दृष्टया उसके नये गुण किसी भी तरह से इस व्यवस्थित और स्थिर दुनिया के लिए उपयुक्त नहीं लगते हैं।
हालाँकि, थोड़ा समय बीत जाता है, और यह पता चलता है कि शुरुआत करने वाला तेज दौड़ता है, ऊंची छलांग लगाता है और आम तौर पर मजबूत होता है। और वह अपने प्रतिगामी पड़ोसियों की तुलना में अधिक मक्खियाँ खाता है। और फिर यही पड़ोसी समझने लगते हैं कि इस अनाड़ी से झगड़ने का कोई मतलब नहीं है। उससे दोस्ती करना बेहतर है, और सहजीवन का आयोजन करना उससे भी बेहतर है। आप देखेंगे कि वहाँ और अधिक मक्खियाँ होंगी।
जीपीजीपीयू तकनीक (सामान्य प्रयोजन ग्राफिक्स प्रोसेसिंग यूनिट - सामान्य प्रयोजन ग्राफिक्स प्रोसेसर) लंबे समय तक केवल दिमागदार शिक्षाविदों की सैद्धांतिक गणना में मौजूद थी। और कैसे? अपनी समानांतर शाखाओं की गणना को एक वीडियो कार्ड को सौंपकर दशकों से विकसित हुई कंप्यूटिंग प्रक्रिया को मौलिक रूप से बदलने का प्रस्ताव - केवल सिद्धांतकार ही इसमें सक्षम हैं।
CUDA प्रौद्योगिकी का लोगो हमें याद दिलाता है कि यह गहराई में विकसित हुआ
3डी ग्राफिक्स.
लेकिन जीपीजीपीयू तकनीक विश्वविद्यालय पत्रिकाओं के पन्नों पर लंबे समय तक धूल जमा करने वाली नहीं थी। अपने सर्वोत्तम गुणों का परिचय देते हुए, उन्होंने निर्माताओं का ध्यान आकर्षित किया। इस तरह CUDA का जन्म हुआ - nVidia द्वारा निर्मित GeForce ग्राफिक्स प्रोसेसर पर GPGPU का कार्यान्वयन।
CUDA की बदौलत, GPGPU प्रौद्योगिकियाँ मुख्यधारा बन गई हैं। और अब केवल सबसे अदूरदर्शी और आलस्य की मोटी परत से ढका प्रोग्रामिंग सिस्टम डेवलपर ही अपने उत्पाद के साथ CUDA के लिए समर्थन की घोषणा नहीं करता है। आईटी प्रकाशनों ने कई मोटे लोकप्रिय विज्ञान लेखों में प्रौद्योगिकी का विवरण प्रस्तुत करना एक सम्मान की बात मानी, और प्रतिस्पर्धी कुछ समान विकसित करने के लिए तुरंत पैटर्न और क्रॉस-कंपाइलर के साथ बैठ गए।
सार्वजनिक मान्यता न केवल महत्वाकांक्षी सितारों के लिए, बल्कि नवोदित प्रौद्योगिकियों के लिए भी एक सपना है। और CUDA भाग्यशाली था. वह मशहूर हैं, वे उनके बारे में बात करते हैं और लिखते हैं।
वे बस ऐसे लिखते हैं मानो वे मोटी वैज्ञानिक पत्रिकाओं में जीपीजीपीयू पर चर्चा करते रहें। वे पाठक पर "ग्रिड", "SIMD", "वॉर्प", "होस्ट", "बनावट और निरंतर मेमोरी" जैसे शब्दों की बौछार करते हैं। वे उसे एनवीडिया जीपीयू के संगठन आरेखों में सबसे ऊपर ले जाते हैं, उसे समानांतर एल्गोरिदम के घुमावदार रास्तों पर ले जाते हैं और (सबसे मजबूत कदम) सी भाषा में लंबी कोड लिस्टिंग दिखाते हैं। परिणामस्वरूप, यह पता चलता है कि लेख के इनपुट पर हमारे पास CUDA को समझने की तीव्र इच्छा वाला एक नया पाठक है, और आउटपुट पर हमारे पास एक ही पाठक है, लेकिन तथ्यों, आरेखों की गड़बड़ी से भरा हुआ सिर सूजा हुआ है। , कोड, एल्गोरिदम और शर्तें।
इस बीच, किसी भी तकनीक का लक्ष्य हमारे जीवन को आसान बनाना है। और CUDA इसमें बहुत अच्छा काम करता है। उनके काम के नतीजे सैकड़ों योजनाओं और एल्गोरिदम से बेहतर किसी भी संशयवादी को समझाने में सक्षम होंगे।
हर जगह नहीं
CUDA उच्च-प्रदर्शन वाले सुपरकंप्यूटरों द्वारा समर्थित है
एनवीडिया टेस्ला।
और फिर भी, औसत उपयोगकर्ता के जीवन को आसान बनाने के क्षेत्र में CUDA के काम के परिणामों को देखने से पहले, इसकी सभी सीमाओं को समझना उचित है। बिल्कुल जिन्न की तरह: कोई भी इच्छा, लेकिन एक। CUDA के पास अपनी अकिलिस हील्स भी हैं। उनमें से एक उन प्लेटफार्मों की सीमाएं हैं जिन पर यह काम कर सकता है।
CUDA का समर्थन करने वाले nVidia वीडियो कार्ड की सूची CUDA सक्षम उत्पाद नामक एक विशेष सूची में प्रस्तुत की गई है। सूची काफी प्रभावशाली है, लेकिन वर्गीकृत करना आसान है। CUDA समर्थन से इनकार नहीं किया गया है:
nVidia GeForce 8वीं, 9वीं, 100वीं, 200वीं और 400वीं श्रृंखला के मॉडल, बोर्ड पर न्यूनतम 256 मेगाबाइट वीडियो मेमोरी के साथ। समर्थन डेस्कटॉप और मोबाइल कार्ड दोनों तक फैला हुआ है।
अधिकांश डेस्कटॉप और मोबाइल वीडियो कार्ड एनवीडिया क्वाड्रो हैं।
एनवीडिया आईओएन नेटबुक श्रृंखला से सभी समाधान।
उच्च-प्रदर्शन एचपीसी (उच्च प्रदर्शन कंप्यूटिंग) और एनवीडिया टेस्ला सुपरकंप्यूटर समाधान व्यक्तिगत कंप्यूटिंग और स्केलेबल क्लस्टर सिस्टम को व्यवस्थित करने के लिए उपयोग किए जाते हैं।
इसलिए, CUDA-आधारित सॉफ़्टवेयर उत्पादों का उपयोग करने से पहले, पसंदीदा की इस सूची की जाँच करना उचित है।
वीडियो कार्ड के अलावा, CUDA का समर्थन करने के लिए एक उपयुक्त ड्राइवर की आवश्यकता होती है। यह केंद्रीय और ग्राफिक्स प्रोसेसर के बीच की कड़ी है, जो जीपीयू के मल्टी-कोर खजाने तक प्रोग्राम कोड और डेटा तक पहुंचने के लिए एक प्रकार के सॉफ्टवेयर इंटरफ़ेस के रूप में कार्य करता है। यह सुनिश्चित करने के लिए कि आप कोई गलती न करें, एनवीडिया ड्राइवर पेज पर जाने और नवीनतम संस्करण प्राप्त करने की अनुशंसा करता है।
...लेकिन प्रक्रिया ही
सीयूडीए कैसे काम करता है? पाठक को विशिष्ट शब्दों के रसातल में डाले बिना एक विशेष जीपीयू हार्डवेयर आर्किटेक्चर पर समानांतर कंप्यूटिंग की जटिल प्रक्रिया को कैसे समझाया जाए?
आप यह कल्पना करके ऐसा करने का प्रयास कर सकते हैं कि केंद्रीय प्रोसेसर ग्राफिक्स प्रोसेसर के साथ सहजीवन में प्रोग्राम को कैसे निष्पादित करता है।
वास्तुकला की दृष्टि से, सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) और उसके ग्राफिक्स समकक्ष (जीपीयू) को अलग-अलग तरीके से डिजाइन किया गया है। यदि हम ऑटोमोटिव उद्योग की दुनिया के साथ सादृश्य बनाते हैं, तो सीपीयू एक स्टेशन वैगन है, उनमें से एक जिसे "बार्न" कहा जाता है। यह एक यात्री कार की तरह दिखती है, लेकिन साथ ही (डेवलपर्स के दृष्टिकोण से) "यह एक स्विस, एक रीपर और पाइप पर एक खिलाड़ी है।" एक ही समय में एक छोटे ट्रक, बस और हाइपरट्रॉफाइड हैचबैक की भूमिका निभाता है। स्टेशन वैगन, संक्षेप में। इसमें कुछ सिलेंडर कोर हैं, लेकिन वे लगभग किसी भी कार्य को संभाल सकते हैं, और प्रभावशाली कैश मेमोरी बहुत सारा डेटा संग्रहीत करने में सक्षम है।
लेकिन GPU एक स्पोर्ट्स कार है। इसका केवल एक ही कार्य है: पायलट को जितनी जल्दी हो सके फिनिश लाइन तक पहुंचाना। इसलिए, कोई बड़ी ट्रंक मेमोरी नहीं, कोई अतिरिक्त सीटें नहीं। लेकिन सीपीयू की तुलना में सिलेंडर कोर सैकड़ों गुना अधिक हैं।
CUDA के लिए धन्यवाद, GPGPU प्रोग्राम डेवलपर्स को प्रोग्रामिंग की जटिलताओं में जाने की आवश्यकता नहीं है
डायरेक्टएक्स और ओपनजीएल जैसे ग्राफिक्स इंजनों के लिए विकास
केंद्रीय प्रोसेसर के विपरीत, जो ग्राफिक्स सहित किसी भी कार्य को हल करने में सक्षम है, लेकिन औसत प्रदर्शन के साथ, ग्राफिक्स प्रोसेसर को एक कार्य के उच्च गति समाधान के लिए अनुकूलित किया जाता है: इनपुट पर बहुभुज के एक समूह को पिक्सेल के एक समूह में बदलना उत्पादन। इसके अलावा, इस समस्या को GPU में सैकड़ों अपेक्षाकृत सरल कंप्यूटिंग कोर का उपयोग करके समानांतर में हल किया जा सकता है।
तो एक स्टेशन वैगन और एक स्पोर्ट्स कार में किस प्रकार का मेल हो सकता है? CUDA कुछ इस तरह से काम करता है: प्रोग्राम CPU पर तब तक चलता है जब तक कि कोड का एक अनुभाग न हो जिसे समानांतर में निष्पादित किया जा सके। फिर, इसे सबसे अच्छे सीपीयू के दो (या आठ) कोर पर धीरे-धीरे निष्पादित करने के बजाय, इसे सैकड़ों जीपीयू कोर में स्थानांतरित किया जाता है। साथ ही, इस अनुभाग का निष्पादन समय काफी कम हो जाता है, जिसका अर्थ है कि पूरे कार्यक्रम का निष्पादन समय भी कम हो जाता है।
तकनीकी रूप से, प्रोग्रामर के लिए कुछ भी नहीं बदलता है। CUDA प्रोग्राम का कोड C भाषा में लिखा जाता है। अधिक सटीक रूप से, इसकी विशेष बोली में "सी विद स्ट्रीम्स" (सी विद स्ट्रीम्स)। स्टैनफोर्ड में विकसित, सी भाषा के इस विस्तार को ब्रूक कहा जाता है। ब्रूक कोड को GPU में स्थानांतरित करने वाला इंटरफ़ेस एक वीडियो कार्ड का ड्राइवर है जो CUDA का समर्थन करता है। यह प्रोग्राम के इस अनुभाग की संपूर्ण प्रोसेसिंग प्रक्रिया को व्यवस्थित करता है ताकि प्रोग्रामर के लिए GPU एक CPU कोप्रोसेसर की तरह दिखे। व्यक्तिगत कंप्यूटिंग के शुरुआती दिनों में गणित सहसंसाधक के उपयोग के समान। ब्रूक, CUDA समर्थन वाले वीडियो कार्ड और उनके लिए ड्राइवरों के आगमन के साथ, कोई भी प्रोग्रामर अपने प्रोग्राम में GPU तक पहुंचने में सक्षम हो गया है। लेकिन इससे पहले इस शर्मिंदगी का स्वामित्व चुनिंदा लोगों के एक संकीर्ण समूह के पास था, जिन्होंने डायरेक्टएक्स या ओपनजीएल ग्राफिक्स इंजनों के लिए प्रोग्रामिंग तकनीकों का सम्मान करने में वर्षों बिताए थे।
इस दिखावटी शहद की बैरल में - CUDA की प्रशंसा - यह मरहम में एक मक्खी डालने के लायक है, अर्थात प्रतिबंध। प्रत्येक समस्या जिसे प्रोग्राम करने की आवश्यकता है उसे CUDA का उपयोग करके हल नहीं किया जा सकता है। नियमित कार्यालय कार्यों के समाधान में तेजी लाना संभव नहीं होगा, लेकिन आप Warcraft की दुनिया में एक ही प्रकार के हजारों सेनानियों के व्यवहार की गणना करने के लिए CUDA पर भरोसा कर सकते हैं। लेकिन ये तो बना-बनाया काम है. आइए उन उदाहरणों को देखें जिन्हें CUDA पहले से ही बहुत प्रभावी ढंग से हल कर चुका है।
नेक काम
CUDA एक बहुत ही व्यावहारिक तकनीक है। अपने वीडियो कार्ड में अपना समर्थन लागू करने के बाद, एनवीडिया को बिल्कुल उम्मीद थी कि सीयूडीए बैनर को विश्वविद्यालय के माहौल और वाणिज्य दोनों में कई उत्साही लोगों द्वारा अपनाया जाएगा। और वैसा ही हुआ. CUDA-आधारित परियोजनाएं चालू रहती हैं और लाभ पहुंचाती हैं।
एनवीडिया फिजएक्स
अपनी अगली गेमिंग उत्कृष्ट कृति का विज्ञापन करते समय, निर्माता अक्सर इसके 3डी यथार्थवाद पर जोर देते हैं। लेकिन इससे कोई फर्क नहीं पड़ता कि 3डी गेम की दुनिया कितनी वास्तविक है, अगर गुरुत्वाकर्षण, घर्षण और हाइड्रोडायनामिक्स जैसे भौतिकी के प्राथमिक नियमों को गलत तरीके से लागू किया जाता है, तो झूठ तुरंत महसूस किया जाएगा।
NVIDIA PhysX भौतिकी इंजन की क्षमताओं में से एक ऊतकों के साथ यथार्थवादी कार्य है।
बुनियादी भौतिक कानूनों के कंप्यूटर सिमुलेशन के लिए एल्गोरिदम लागू करना एक बहुत ही श्रम-गहन कार्य है। इस क्षेत्र में सबसे प्रसिद्ध कंपनियां आयरिश कंपनी हैवोक हैं, इसके क्रॉस-प्लेटफॉर्म फिजिकल हॉक फिजिक्स और कैलिफ़ोर्निया एजिया - दुनिया के पहले फिजिकल प्रोसेसर (पीपीयू - फिजिक्स प्रोसेसिंग यूनिट) और संबंधित फिजएक्स फिजिक्स इंजन के पूर्वज हैं। उनमें से पहला, हालांकि इंटेल द्वारा अधिग्रहित किया गया है, अब एटीआई वीडियो कार्ड और एएमडी प्रोसेसर के लिए हॉक इंजन को अनुकूलित करने के क्षेत्र में सक्रिय रूप से काम कर रहा है। लेकिन Ageia अपने PhysX इंजन के साथ nVidia का हिस्सा बन गया। उसी समय, nVidia ने PhysX को CUDA तकनीक के अनुकूल बनाने की कठिन समस्या को हल कर दिया।
यह आंकड़ों की बदौलत संभव हो सका। यह सांख्यिकीय रूप से सिद्ध हो चुका है कि GPU कितना भी जटिल रेंडरिंग क्यों न करे, इसके कुछ कोर अभी भी निष्क्रिय हैं। इन्हीं कोर पर PhysX इंजन चलता है।
CUDA के लिए धन्यवाद, खेल की दुनिया की भौतिकी से संबंधित गणनाओं का बड़ा हिस्सा वीडियो कार्ड पर किया जाने लगा। अन्य गेमप्ले समस्याओं को हल करने के लिए केंद्रीय प्रोसेसर की मुक्त शक्ति का उपयोग किया गया था। नतीजा आने में ज्यादा समय नहीं था. विशेषज्ञों के अनुसार, CUDA पर चलने वाले PhysX के साथ गेमप्ले में प्रदर्शन लाभ कम से कम परिमाण के क्रम में बढ़ गया है। भौतिक नियमों के साकार होने की संभावना भी बढ़ गई है। CUDA बहुआयामी वस्तुओं के लिए घर्षण, गुरुत्वाकर्षण और हमसे परिचित अन्य चीजों के कार्यान्वयन की नियमित गणना का ख्याल रखता है। अब न केवल नायक और उनके उपकरण उस भौतिक दुनिया के नियमों में पूरी तरह फिट बैठते हैं जिनसे हम परिचित हैं, बल्कि धूल, कोहरा, विस्फोट की लहर, लौ और पानी भी हैं।
NVIDIA टेक्सचर टूल्स 2 टेक्सचर कम्प्रेशन पैकेज का CUDA संस्करण
क्या आपको आधुनिक खेलों में यथार्थवादी वस्तुएं पसंद हैं? यह बनावट डेवलपर्स को धन्यवाद कहने लायक है। लेकिन बनावट में जितनी अधिक वास्तविकता होगी, उसका आयतन उतना ही अधिक होगा। यह उतना ही अधिक कीमती मेमोरी लेता है। इससे बचने के लिए, बनावट को आवश्यकतानुसार पूर्व-संपीड़ित और गतिशील रूप से विघटित किया जाता है। और संपीड़न और विसंपीड़न शुद्ध गणना हैं। बनावट के साथ काम करने के लिए, एनवीडिया ने एनवीडिया टेक्सचर टूल्स पैकेज जारी किया है। यह डायरेक्टएक्स बनावट (तथाकथित एचएफ प्रारूप) के कुशल संपीड़न और डीकंप्रेसन का समर्थन करता है। इस पैकेज का दूसरा संस्करण DirectX 11 तकनीक में लागू BC4 और BC5 संपीड़न एल्गोरिदम के लिए समर्थन का दावा करता है। लेकिन मुख्य बात यह है कि NVIDIA टेक्सचर टूल्स 2 में CUDA समर्थन शामिल है। एनवीडिया के अनुसार, यह बनावट संपीड़न और डीकंप्रेसन कार्यों में प्रदर्शन में 12 गुना वृद्धि देता है। इसका मतलब यह है कि गेमप्ले फ्रेम तेजी से लोड होंगे और खिलाड़ी को उनके यथार्थवाद से प्रसन्न करेंगे।
NVIDIA टेक्सचर टूल्स 2 पैकेज CUDA के साथ काम करने के लिए डिज़ाइन किया गया है। बनावट को संपीड़ित और विघटित करने पर प्रदर्शन लाभ स्पष्ट है।
CUDA का उपयोग करने से वीडियो निगरानी की दक्षता में काफी सुधार हो सकता है।
वास्तविक समय वीडियो स्ट्रीम प्रसंस्करण
कोई कुछ भी कहे, जासूसी की दृष्टि से मौजूदा दुनिया, ऑरवेल के बिग ब्रदर की दुनिया से कहीं ज़्यादा करीब है जितनी दिखती है। कार चालक और सार्वजनिक स्थानों पर आने वाले आगंतुक दोनों ही वीडियो कैमरों की नज़र महसूस करते हैं।
वीडियो जानकारी की पूर्ण-प्रवाह वाली नदियाँ इसके प्रसंस्करण के केंद्रों में बहती हैं और... एक संकीर्ण कड़ी में बहती हैं - एक व्यक्ति। अधिकांश मामलों में, वह वीडियो जगत की निगरानी करने वाला अंतिम प्राधिकारी होता है। इसके अलावा, प्राधिकरण सबसे प्रभावी नहीं है. पलकें झपकती हैं, विचलित हो जाता है और सो जाने की कोशिश करता है।
CUDA के लिए धन्यवाद, एक वीडियो स्ट्रीम में कई ऑब्जेक्ट्स की एक साथ ट्रैकिंग के लिए एल्गोरिदम लागू करना संभव हो गया। इस मामले में, प्रक्रिया वास्तविक समय में होती है, और वीडियो पूर्ण 30 एफपीएस है। आधुनिक मल्टी-कोर सीपीयू पर ऐसे एल्गोरिदम के कार्यान्वयन की तुलना में, सीयूडीए प्रदर्शन में दो या तीन गुना वृद्धि देता है, और यह, आप देखते हैं, काफी अधिक है।
वीडियो रूपांतरण, ऑडियो फ़िल्टरिंग
Badaboom वीडियो कनवर्टर रूपांतरण को गति देने के लिए CUDA का उपयोग करने वाला पहला है।
किसी नए वीडियो रेंटल उत्पाद को फुलएचडी गुणवत्ता में और बड़ी स्क्रीन पर देखना अच्छा लगता है। लेकिन आप सड़क पर अपने साथ बड़ी स्क्रीन नहीं ले जा सकते, और फ़ुलएचडी वीडियो कोडेक मोबाइल गैजेट के कम-पावर प्रोसेसर पर हिचकिचाहट देगा। धर्मान्तरण बचाव में आता है। लेकिन जिन लोगों ने व्यवहार में इसका सामना किया है उनमें से अधिकांश लंबे रूपांतरण समय के बारे में शिकायत करते हैं। यह समझ में आता है, प्रक्रिया नियमित है, समानांतरीकरण के लिए उपयुक्त है, और सीपीयू पर इसका निष्पादन बहुत इष्टतम नहीं है।
लेकिन CUDA ने इसका डटकर मुकाबला किया। पहला संकेत एलेवेंटल का बडाबूम कनवर्टर है। CUDA को चुनते समय Badaboom डेवलपर्स ने सही निर्णय लिया। परीक्षणों से पता चलता है कि यह एक मानक डेढ़ घंटे की मूवी को बीस मिनट से भी कम समय में iPhone/iPod Touch प्रारूप में परिवर्तित कर देता है। और यह इस तथ्य के बावजूद है कि केवल सीपीयू का उपयोग करते समय, इस प्रक्रिया में एक घंटे से अधिक समय लगता है।
CUDA और पेशेवर संगीत प्रेमियों की मदद करता है। उनमें से कोई भी एक प्रभावी एफआईआर क्रॉसओवर के लिए आधा साम्राज्य देगा - फिल्टर का एक सेट जो ध्वनि स्पेक्ट्रम को कई बैंडों में विभाजित करता है। यह प्रक्रिया बहुत श्रमसाध्य है और बड़ी मात्रा में ऑडियो सामग्री के साथ, साउंड इंजीनियर को कई घंटों तक "धूम्रपान" करने के लिए मजबूर करती है। CUDA-आधारित FIR क्रॉसओवर को लागू करने से इसके संचालन की गति सैकड़ों गुना बढ़ जाती है।
सीयूडीए भविष्य
GPGPU प्रौद्योगिकी को वास्तविकता बनाने के बाद, CUDA अपनी उपलब्धियों पर आराम नहीं कर रहा है। जैसा कि हर जगह होता है, प्रतिबिंब का सिद्धांत CUDA में काम करता है: अब न केवल nVidia वीडियो प्रोसेसर की वास्तुकला CUDA SDK संस्करणों के विकास को प्रभावित करती है, बल्कि CUDA तकनीक स्वयं nVidia को अपने चिप्स की वास्तुकला पर पुनर्विचार करने के लिए मजबूर करती है। ऐसे प्रतिबिंब का एक उदाहरण एनवीडिया आईओएन प्लेटफॉर्म है। इसका दूसरा संस्करण CUDA समस्याओं को हल करने के लिए विशेष रूप से अनुकूलित है। इसका मतलब यह है कि अपेक्षाकृत सस्ते हार्डवेयर समाधानों में भी, उपभोक्ताओं को CUDA की सभी शक्ति और शानदार क्षमताएं प्राप्त होंगी।
और इसे होस्ट कोड (मुख्य, नियंत्रण कोड) और डिवाइस कोड (हार्डवेयर कोड) (.cu एक्सटेंशन वाली फ़ाइलें) को किसी भी प्रोग्रामिंग वातावरण में अंतिम प्रोग्राम या लाइब्रेरी को असेंबल करने की प्रक्रिया के लिए उपयुक्त ऑब्जेक्ट फ़ाइलों में अनुवाद करने के लिए डिज़ाइन किया गया है, उदाहरण के लिए नेटबीन्स में.
CUDA आर्किटेक्चर ग्रिड मेमोरी मॉडल, क्लस्टर थ्रेड मॉडलिंग और SIMD निर्देशों का उपयोग करता है। यह न केवल उच्च-प्रदर्शन ग्राफिक्स कंप्यूटिंग के लिए लागू है, बल्कि एनवीडिया वीडियो कार्ड का उपयोग करके विभिन्न वैज्ञानिक कंप्यूटिंग के लिए भी लागू है। वैज्ञानिक और शोधकर्ता व्यापक रूप से विभिन्न क्षेत्रों में CUDA का उपयोग करते हैं, जिनमें खगोल भौतिकी, कम्प्यूटेशनल जीव विज्ञान और रसायन विज्ञान, द्रव गतिशीलता मॉडलिंग, विद्युत चुम्बकीय इंटरैक्शन, कंप्यूटेड टोमोग्राफी, भूकंपीय विश्लेषण और बहुत कुछ शामिल हैं। CUDA में OpenGL और Direct3D का उपयोग करके अनुप्रयोगों से जुड़ने की क्षमता है। CUDA लिनक्स, मैक ओएस एक्स और विंडोज जैसे ऑपरेटिंग सिस्टम के लिए क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर है।
22 मार्च 2010 को, एनवीडिया ने CUDA टूलकिट 3.0 जारी किया, जिसमें ओपनसीएल के लिए समर्थन शामिल था।
उपकरण
CUDA प्लेटफ़ॉर्म पहली बार आठवीं पीढ़ी के NVIDIA G80 चिप की रिलीज़ के साथ बाज़ार में आया और ग्राफ़िक्स चिप्स की सभी बाद की श्रृंखलाओं में मौजूद हो गया, जिनका उपयोग GeForce, Quadro और NVidia Tesla त्वरक परिवारों में किया जाता है।
CUDA SDK, G8x का समर्थन करने वाले हार्डवेयर की पहली श्रृंखला में CUDA SDK को API के रूप में उपयोग करते हुए 32-बिट सिंगल-प्रिसिजन वेक्टर प्रोसेसर था (CUDA C डबल प्रकार का समर्थन करता है, लेकिन इसकी सटीकता अब 32-बिट तक कम हो गई है) तैरनेवाला स्थल)। बाद के GT200 प्रोसेसर में 64-बिट परिशुद्धता (केवल SFU) के लिए समर्थन है, लेकिन प्रदर्शन 32-बिट परिशुद्धता की तुलना में काफी खराब है (इस तथ्य के कारण कि प्रति स्ट्रीम मल्टीप्रोसेसर केवल दो SFU हैं, जबकि आठ स्केलर प्रोसेसर हैं)। GPU हार्डवेयर मल्टीथ्रेडिंग का आयोजन करता है, जो आपको GPU के सभी संसाधनों का उपयोग करने की अनुमति देता है। इस प्रकार, भौतिक त्वरक के कार्यों को ग्राफिक्स त्वरक में स्थानांतरित करने की संभावना खुल जाती है (कार्यान्वयन का एक उदाहरण nVidia PhysX है)। यह जटिल गैर-ग्राफ़िकल गणनाएँ करने के लिए कंप्यूटर ग्राफ़िक्स हार्डवेयर का उपयोग करने की व्यापक संभावनाओं को भी खोलता है: उदाहरण के लिए, कम्प्यूटेशनल जीव विज्ञान और विज्ञान की अन्य शाखाओं में।
लाभ
ग्राफ़िक्स एपीआई के माध्यम से सामान्य प्रयोजन कंप्यूटिंग को व्यवस्थित करने के पारंपरिक दृष्टिकोण की तुलना में, इस क्षेत्र में CUDA आर्किटेक्चर के निम्नलिखित फायदे हैं:
प्रतिबंध
- डिवाइस पर निष्पादन योग्य सभी फ़ंक्शन रिकर्सन का समर्थन नहीं करते हैं (CUDA टूलकिट 3.1 पॉइंटर्स और रिकर्सन का समर्थन करता है) और कुछ अन्य सीमाएँ हैं
समर्थित जीपीयू और ग्राफिक्स त्वरक
CUDA तकनीक के लिए घोषित पूर्ण समर्थन वाले उपकरण निर्माता Nvidia के उपकरणों की सूची आधिकारिक Nvidia वेबसाइट: CUDA-सक्षम GPU उत्पाद (अंग्रेजी) पर उपलब्ध कराई गई है।
वास्तव में, निम्नलिखित परिधीय वर्तमान में पीसी हार्डवेयर बाजार में CUDA तकनीक का समर्थन करते हैं:
विशिष्टता संस्करण | जीपीयू | वीडियो कार्ड |
---|---|---|
1.0 | जी80, जी92, जी92बी, जी94, जी94बी | GeForce 8800GTX/अल्ट्रा, 9400GT, 9600GT, 9800GT, टेस्ला C/D/S870, FX4/5600, 360M, GT 420 |
1.1 | जी86, जी84, जी98, जी96, जी96बी, जी94, जी94बी, जी92, जी92बी | GeForce 8400GS/GT, 8600GT/GTS, 8800GT/GTS, 9600 GSO, 9800GTX/GX2, GTS 250, GT 120/30/40, FX 4/570, 3/580, 17/18/3700, 4700x2, 1xxM, 32 /370एम, 3/5/770एम, 16/17/27/28/36/37/3800एम, एनवीएस420/50 |
1.2 | जीटी218, जीटी216, जीटी215 | GeForce 210, GT 220/40, FX380 LP, 1800M, 370/380M, NVS 2/3100M |
1.3 | जीटी200, जीटी200बी | GeForce GTX 260, GTX 275, GTX 280, GTX 285, GTX 295, टेस्ला C/M1060, S1070, क्वाड्रो CX, FX 3/4/5800 |
2.0 | जीएफ100, जीएफ110 | GeForce (GF100) GTX 465, GTX 470, GTX 480, Tesla C2050, C2070, S/M2050/70, Quadro Plex 7000, Quadro 4000, 5000, 6000, GeForce (GF110) GTX 560 TI 448, GTX570, GTX580, GTX5 90 |
2.1 | जीएफ104, जीएफ114, जीएफ116, जीएफ108, जीएफ106 | GeForce 610M, GT 430, GT 440, GTS 450, GTX 460, GTX 550 Ti, GTX 560, GTX 560 Ti, 500M, क्वाड्रो 600, 2000 |
3.0 | जीके104, जीके106, जीके107 | GeForce GTX 690, GTX 680, GTX 670, GTX 660 Ti, GTX 660, GTX 650 Ti, GTX 650, GT 640, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 675MX, GeForce GTX 670MX, GTX 660M, GeForce GT 650M, GeForce GT 645M, GeForce GT 640M |
3.5 | जीके110 |
|
|
|
|
|
- मॉडल टेस्ला सी1060, टेस्ला एस1070, टेस्ला सी2050/सी2070, टेस्ला एम2050/एम2070, टेस्ला एस2050 मॉडल दोगुनी सटीकता के साथ जीपीयू गणना की अनुमति देते हैं।
विभिन्न संस्करणों की विशेषताएँ और विशिष्टताएँ
फ़ीचर समर्थन (असूचीबद्ध फ़ीचर हैं सभी गणना क्षमताओं के लिए समर्थित) |
गणना क्षमता (संस्करण) | ||||
---|---|---|---|---|---|
1.0 | 1.1 | 1.2 | 1.3 | 2.x | |
वैश्विक स्मृति में 32-बिट शब्द |
नहीं | हाँ | |||
वैश्विक मेमोरी में फ़्लोटिंग पॉइंट मान |
|||||
पूर्णांक परमाणु कार्य चालू हैं साझा मेमोरी में 32-बिट शब्द |
नहीं | हाँ | |||
atomicExch() 32-बिट पर काम कर रहा है साझा मेमोरी में फ़्लोटिंग पॉइंट मान |
|||||
पूर्णांक परमाणु कार्य चालू हैं वैश्विक स्मृति में 64-बिट शब्द |
|||||
वार्प वोट कार्य | |||||
डबल-प्रिसिजन फ़्लोटिंग-पॉइंट ऑपरेशन | नहीं | हाँ | |||
परमाणु कार्य 64-बिट पर संचालित होते हैं साझा स्मृति में पूर्णांक मान |
नहीं | हाँ | |||
फ़्लोटिंग-पॉइंट परमाणु जोड़ चालू है वैश्विक और साझा मेमोरी में 32-बिट शब्द |
|||||
_मतपत्र() | |||||
_थ्रेडफ़ेंस_सिस्टम() | |||||
_सिंथ्रेड्स_काउंट(), _सिंथ्रेड्स_और(), _syncthreads_or() |
|||||
सतही कार्य | |||||
थ्रेड ब्लॉक का 3डी ग्रिड |
तकनीकी निर्देश | गणना क्षमता (संस्करण) | ||||
---|---|---|---|---|---|
1.0 | 1.1 | 1.2 | 1.3 | 2.x | |
थ्रेड ब्लॉक के ग्रिड की अधिकतम आयामता | 2 | 3 | |||
थ्रेड ब्लॉक के ग्रिड का अधिकतम x-, y-, या z-आयाम | 65535 | ||||
थ्रेड ब्लॉक की अधिकतम आयामता | 3 | ||||
किसी ब्लॉक का अधिकतम x- या y-आयाम | 512 | 1024 | |||
किसी ब्लॉक का अधिकतम z-आयाम | 64 | ||||
प्रति ब्लॉक थ्रेड्स की अधिकतम संख्या | 512 | 1024 | |||
ताने का आकार | 32 | ||||
प्रति मल्टीप्रोसेसर निवासी ब्लॉकों की अधिकतम संख्या | 8 | ||||
प्रति मल्टीप्रोसेसर रेजिडेंट वार्प की अधिकतम संख्या | 24 | 32 | 48 | ||
प्रति मल्टीप्रोसेसर निवासी थ्रेड्स की अधिकतम संख्या | 768 | 1024 | 1536 | ||
प्रति मल्टीप्रोसेसर 32-बिट रजिस्टरों की संख्या | 8K | 16K | 32K | ||
प्रति मल्टीप्रोसेसर साझा मेमोरी की अधिकतम मात्रा | 16 केबी | 48 केबी | |||
साझा मेमोरी बैंकों की संख्या | 16 | 32 | |||
प्रति थ्रेड स्थानीय मेमोरी की मात्रा | 16 केबी | 512 केबी | |||
लगातार स्मृति आकार | 64 केबी | ||||
निरंतर मेमोरी के लिए प्रति मल्टीप्रोसेसर कैश वर्किंग सेट | 8 केबी | ||||
टेक्सचर मेमोरी के लिए प्रति मल्टीप्रोसेसर कैश वर्किंग सेट | डिवाइस पर निर्भर, 6 केबी और 8 केबी के बीच | ||||
1डी बनावट के लिए अधिकतम चौड़ाई |
8192 | 32768 | |||
1डी बनावट के लिए अधिकतम चौड़ाई रैखिक स्मृति से जुड़ा संदर्भ |
2 27 | ||||
अधिकतम चौड़ाई और परतों की संख्या 1डी स्तरित बनावट संदर्भ के लिए |
8192 x 512 | 16384 x 2048 | |||
2डी के लिए अधिकतम चौड़ाई और ऊंचाई बनावट संदर्भ से बंधा हुआ रैखिक मेमोरी या CUDA सरणी |
65536 x 32768 | 65536 x 65535 | |||
अधिकतम चौड़ाई, ऊंचाई और संख्या 2डी स्तरित बनावट संदर्भ के लिए परतों की |
8192 x 8192 x 512 | 16384 x 16384 x 2048 | |||
अधिकतम चौड़ाई, ऊंचाई और गहराई रैखिक से बंधे 3डी बनावट संदर्भ के लिए मेमोरी या CUDA सरणी |
2048 x 2048 x 2048 | ||||
बनावट की अधिकतम संख्या एक कर्नेल से बंधा जा सकता है |
128 | ||||
1डी सतह के लिए अधिकतम चौड़ाई CUDA सरणी से जुड़ा संदर्भ |
नहीं का समर्थन किया |
8192 | |||
2डी के लिए अधिकतम चौड़ाई और ऊंचाई सतह संदर्भ एक CUDA सरणी से जुड़ा हुआ है |
8192 x 8192 | ||||
सतहों की अधिकतम संख्या एक कर्नेल से बंधा जा सकता है |
8 | ||||
अनुदेशों की अधिकतम संख्या प्रति कर्नेल |
20 लाख |
उदाहरण
CudaArray* cu_array; बनावट< float , 2 >टेक्स; // सरणी आवंटित करें cudaMalloc( और cu_array, cudaCreateChannelDesc< float>(), चौड़ाई ऊंचाई) ; // छवि डेटा को सरणी cudaMemcpy (cu_array, छवि, चौड़ाई * ऊंचाई, cudaMemcpyHostToDevice) में कॉपी करें; // सरणी को बनावट से बांधें cudaBindTexture(टेक्स, cu_array); // कर्नेल dim3 ब्लॉकडिम(16, 16, 1) चलाएँ; dim3 ग्रिडडिम(चौड़ाई / ब्लॉकडिम.x, ऊंचाई / ब्लॉकडिम.वाई, 1) ; कर्नेल<<< gridDim, blockDim, 0 >>> (डी_ओडाटा, चौड़ाई, ऊंचाई); cudaUnbindTexture(tex); __ग्लोबल__ शून्य कर्नेल (फ्लोट * ओडेटा, पूर्णांक ऊंचाई, पूर्णांक चौड़ाई) (अहस्ताक्षरित पूर्णांक x = ब्लॉकआईडीएक्स.एक्स * ब्लॉकडिम.एक्स + थ्रेडआईडीएक्स.एक्स; अहस्ताक्षरित पूर्णांक वाई = ब्लॉकआईडीएक्स.वाई * ब्लॉकडिम.वाई + थ्रेडआईडीएक्स.वाई; फ्लोट सी = texfetch(tex, x, y) ; odata[ y* width+ x] = c; )
pycuda.driver को drv के रूप में आयात करें numpy drv.init() dev = drv.Device(0) ctx = dev.make_context() mod = drv.SourceModule( """ __global__ void multiple_them(फ्लोट *डेस्ट, फ्लोट *ए, फ्लोट *बी) (const int i = threadIdx.x; dest[i] = a[i] * b[i]; ) """) गुणा_उन्हें = mod.get_function ("गुणा_उन्हें") a = numpy.random .randn (400 ) .astype (numpy.float32 ) b = numpy.random .randn (400 ) .astype (numpy.float32 ) dest = numpy.zeros_like (ए) गुणा_उन्हें (drv.out (dest) , drv.In (a) , drv.In (b) , ब्लॉक= (400 , 1 , 1 ) ) प्रिंट dest-a*b
विश्वविद्यालयों में CUDA एक विषय के रूप में
दिसंबर 2009 तक, CUDA सॉफ़्टवेयर मॉडल दुनिया भर के 269 विश्वविद्यालयों में पढ़ाया जाता है। रूस में, CUDA पर प्रशिक्षण पाठ्यक्रम सेंट पीटर्सबर्ग पॉलिटेक्निक यूनिवर्सिटी, यारोस्लाव स्टेट यूनिवर्सिटी में दिए जाते हैं। पी. जी. डेमिडोव, मॉस्को, निज़नी नोवगोरोड, सेंट पीटर्सबर्ग, टवर, कज़ान, नोवोसिबिर्स्क, नोवोसिबिर्स्क राज्य तकनीकी विश्वविद्यालय, ओम्स्क और पर्म राज्य विश्वविद्यालय, समाज और मनुष्य की प्रकृति का अंतर्राष्ट्रीय विश्वविद्यालय "डुबना", इवानोवो राज्य ऊर्जा विश्वविद्यालय, बेलगोरोड राज्य विश्वविद्यालय , MSTU उन्हें। बॉमन, रूसी रासायनिक तकनीकी विश्वविद्यालय के नाम पर रखा गया। मेंडेलीव, अंतरक्षेत्रीय सुपरकंप्यूटर केंद्र आरएएस,। इसके अलावा, दिसंबर 2009 में, यह घोषणा की गई कि डबना शहर में स्थित पहला रूसी वैज्ञानिक और शैक्षणिक केंद्र "पैरेलल कंप्यूटिंग" का संचालन शुरू हो गया है, जिसके कार्यों में जीपीयू पर जटिल कंप्यूटिंग समस्याओं को हल करने पर प्रशिक्षण और परामर्श शामिल है।
यूक्रेन में, CUDA पर पाठ्यक्रम कीव इंस्टीट्यूट ऑफ सिस्टम एनालिसिस में पढ़ाए जाते हैं।
लिंक
आधिकारिक संसाधन
- CUDA ज़ोन (रूसी) - आधिकारिक CUDA वेबसाइट
- CUDA GPU कंप्यूटिंग (अंग्रेजी) - CUDA कंप्यूटिंग के लिए समर्पित आधिकारिक वेब फोरम
अनौपचारिक संसाधन
टॉम का हार्डवेयर- दिमित्री चेकानोव.एनवीडिया सीयूडीए: वीडियो कार्ड पर कंप्यूटिंग या सीपीयू की मृत्यु? . टॉम्स हार्डवेयर (22 जून, 2008)। संग्रहीत
- दिमित्री चेकानोव.एनवीडिया सीयूडीए: मास मार्केट के लिए बेंचमार्किंग जीपीयू एप्लिकेशन। टॉम्स हार्डवेयर (19 मई 2009)। मूल से 4 मार्च 2012 को संग्रहीत। 19 मई 2009 को पुनःप्राप्त।
- एलेक्सी बेरिलो। NVIDIA CUDA - GPU पर गैर-ग्राफ़िकल कंप्यूटिंग। भाग ---- पहला । iXBT.com (23 सितम्बर 2008)। 4 मार्च 2012 को मूल से संग्रहीत। 20 जनवरी 2009 को पुनःप्राप्त।
- एलेक्सी बेरिलो। NVIDIA CUDA - GPU पर गैर-ग्राफ़िकल कंप्यूटिंग। भाग 2 । iXBT.com (22 अक्टूबर 2008)। - NVIDIA CUDA के कार्यान्वयन के उदाहरण। 4 मार्च 2012 को मूल से संग्रहीत। 20 जनवरी 2009 को पुनःप्राप्त।
- बोरेस्कोव एलेक्सी विक्टरोविच। CUDA मूल बातें (20 जनवरी, 2009)। 4 मार्च 2012 को मूल से संग्रहीत। 20 जनवरी 2009 को पुनःप्राप्त।
- व्लादिमीर फ्रोलोव. CUDA प्रौद्योगिकी का परिचय. ऑनलाइन पत्रिका "कंप्यूटर ग्राफिक्स और मल्टीमीडिया" (19 दिसंबर, 2008)। 4 मार्च 2012 को मूल से संग्रहीत। 28 अक्टूबर 2009 को पुनःप्राप्त।
- इगोर ओस्कोलकोव. NVIDIA CUDA बड़ी कंप्यूटिंग की दुनिया के लिए एक किफायती टिकट है। कंप्यूटर्रा (30 अप्रैल, 2009)। 3 मई 2009 को पुनःप्राप्त.
- व्लादिमीर फ्रोलोव. CUDA प्रौद्योगिकी का परिचय (1 अगस्त, 2009)। मूल से 4 मार्च 2012 को संग्रहीत। 3 अप्रैल 2010 को पुनःप्राप्त।
- GPGPU.ru. कंप्यूटिंग के लिए वीडियो कार्ड का उपयोग करना
- . समानांतर कंप्यूटिंग केंद्र
टिप्पणियाँ
यह सभी देखें
NVIDIA | ||||||
---|---|---|---|---|---|---|
ग्राफ़िक प्रोसेसर |
|
आधुनिक प्रोसेसर के विकास में, कोर की संख्या में क्रमिक वृद्धि की प्रवृत्ति होती है, जिससे समानांतर कंप्यूटिंग में उनकी क्षमताएं बढ़ जाती हैं। हालाँकि, GPU लंबे समय से उपलब्ध हैं जो इस संबंध में CPU से काफी बेहतर हैं। और GPU की इन क्षमताओं को कुछ कंपनियों द्वारा पहले ही ध्यान में रखा जा चुका है। गैर-लक्ष्य कंप्यूटिंग के लिए ग्राफ़िक्स त्वरक का उपयोग करने का पहला प्रयास 90 के दशक के उत्तरार्ध से किया गया है। लेकिन केवल शेडर्स का उद्भव ही पूरी तरह से नई तकनीक के विकास के लिए प्रेरणा बन गया और 2003 में जीपीजीपीयू (सामान्य प्रयोजन ग्राफिक्स प्रोसेसिंग यूनिट) की अवधारणा सामने आई। इस पहल के विकास में एक महत्वपूर्ण भूमिका ब्रुकजीपीयू ने निभाई, जो सी भाषा के लिए एक विशेष विस्तार है। ब्रुकजीपीयू के आगमन से पहले, प्रोग्रामर केवल डायरेक्ट3डी या ओपनजीएल एपीआई के माध्यम से जीपीयू के साथ काम कर सकते थे। ब्रुक ने डेवलपर्स को एक परिचित वातावरण के साथ काम करने की अनुमति दी, और कंपाइलर ने विशेष पुस्तकालयों का उपयोग करके, निम्न स्तर पर जीपीयू के साथ बातचीत को लागू किया।
इस तरह की प्रगति इस उद्योग के नेताओं - एएमडी और एनवीआईडीआईए का ध्यान आकर्षित करने में मदद नहीं कर सकी, जिन्होंने अपने वीडियो कार्ड पर गैर-ग्राफ़िकल कंप्यूटिंग के लिए अपने स्वयं के सॉफ़्टवेयर प्लेटफ़ॉर्म विकसित करना शुरू किया। GPU डेवलपर्स से बेहतर उनके उत्पादों की सभी बारीकियों और विशेषताओं को कोई नहीं जानता, जो इन्हीं कंपनियों को विशिष्ट हार्डवेयर समाधानों के लिए सॉफ़्टवेयर पैकेज को यथासंभव कुशलतापूर्वक अनुकूलित करने की अनुमति देता है। वर्तमान में, NVIDIA CUDA (कंप्यूट यूनिफाइड डिवाइस आर्किटेक्चर) प्लेटफ़ॉर्म विकसित कर रहा है; AMD एक समान तकनीक CTM (क्लोज़ टू मेटल) या AMD स्ट्रीम कंप्यूटिंग कहता है। हम CUDA की कुछ क्षमताओं को देखेंगे और GeForce 8800 GT वीडियो कार्ड के G92 ग्राफिक्स चिप की कंप्यूटिंग क्षमताओं का अभ्यास में मूल्यांकन करेंगे।
लेकिन पहले, आइए GPU का उपयोग करके गणना करने की कुछ बारीकियों पर नज़र डालें। उनका मुख्य लाभ यह है कि ग्राफिक्स चिप को शुरू में कई थ्रेड्स को निष्पादित करने के लिए डिज़ाइन किया गया है, जबकि पारंपरिक सीपीयू का प्रत्येक कोर अनुक्रमिक निर्देशों की एक धारा को निष्पादित करता है। कोई भी आधुनिक GPU एक मल्टीप्रोसेसर होता है जिसमें कई कंप्यूटिंग क्लस्टर होते हैं, जिनमें से प्रत्येक में कई ALU होते हैं। सबसे शक्तिशाली आधुनिक GT200 चिप में 10 ऐसे क्लस्टर होते हैं, जिनमें से प्रत्येक में 24 स्ट्रीम प्रोसेसर होते हैं। G92 चिप पर आधारित परीक्षण किए गए GeForce 8800 GT वीडियो कार्ड में 16 स्ट्रीम प्रोसेसर वाली सात बड़ी कंप्यूटिंग इकाइयाँ हैं। सीपीयू वेक्टर गणना के लिए SIMD SSE ब्लॉक का उपयोग करते हैं (एकल निर्देश एकाधिक डेटा - एक निर्देश एकाधिक डेटा पर निष्पादित होता है), जिसके लिए डेटा को 4 वैक्टर में बदलने की आवश्यकता होती है। जीपीयू थ्रेड्स को स्केलरली प्रोसेस करता है, यानी। एक निर्देश कई थ्रेड्स पर लागू किया जाता है (SIMT - एकल निर्देश एकाधिक थ्रेड)। यह डेवलपर्स को डेटा को वैक्टर में परिवर्तित करने से बचाता है, और स्ट्रीम में मनमानी शाखाओं की अनुमति देता है। प्रत्येक जीपीयू कंप्यूट यूनिट में सीधी मेमोरी एक्सेस होती है। और वीडियो मेमोरी बैंडविड्थ अधिक है, कई अलग-अलग मेमोरी नियंत्रकों (टॉप-एंड G200 पर 8 64-बिट चैनल हैं) और उच्च ऑपरेटिंग आवृत्तियों के उपयोग के लिए धन्यवाद।
सामान्य तौर पर, कुछ कार्यों में बड़ी मात्रा में डेटा के साथ काम करते समय, जीपीयू सीपीयू की तुलना में बहुत तेज़ होते हैं। नीचे आप इस कथन का एक उदाहरण देखें:
चार्ट 2003 के बाद से सीपीयू और जीपीयू प्रदर्शन वृद्धि की गतिशीलता को दर्शाता है। एनवीआईडीआईए इस डेटा को अपने दस्तावेज़ों में विज्ञापन के रूप में उद्धृत करना पसंद करता है, लेकिन वे केवल सैद्धांतिक गणना हैं और वास्तव में अंतर, निश्चित रूप से बहुत छोटा हो सकता है।
लेकिन जैसा भी हो, जीपीयू की एक बड़ी संभावना है जिसका उपयोग किया जा सकता है, और जिसके लिए सॉफ्टवेयर विकास के लिए एक विशिष्ट दृष्टिकोण की आवश्यकता होती है। यह सब CUDA हार्डवेयर और सॉफ़्टवेयर वातावरण में कार्यान्वित किया जाता है, जिसमें कई सॉफ़्टवेयर स्तर होते हैं - उच्च-स्तरीय CUDA रनटाइम API और निम्न-स्तरीय CUDA ड्राइवर API।
CUDA प्रोग्रामिंग के लिए मानक C भाषा का उपयोग करता है, जो डेवलपर्स के लिए इसके मुख्य लाभों में से एक है। प्रारंभ में, CUDA में BLAS (बेसिक लीनियर अलजेब्रा पैकेज) और FFT (फूरियर ट्रांसफॉर्म) लाइब्रेरी शामिल हैं। CUDA में ओपनजीएल या डायरेक्टएक्स ग्राफिक्स एपीआई के साथ बातचीत करने की क्षमता, निम्न स्तर पर विकसित करने की क्षमता भी है, और सीपीयू और जीपीयू के बीच डेटा स्ट्रीम के अनुकूलित वितरण की विशेषता है। समान AMD प्लेटफ़ॉर्म के विपरीत, CUDA गणनाएँ ग्राफ़िक्स के साथ एक साथ की जाती हैं, जहाँ GPU पर गणना के लिए एक विशेष वर्चुअल मशीन लॉन्च की जाती है। लेकिन ऐसा "सहवास" भी त्रुटियों से भरा होता है यदि ग्राफिक्स एपीआई द्वारा एक बड़ा लोड बनाया जाता है जबकि CUDA एक साथ चल रहा है - आखिरकार, ग्राफिकल संचालन में अभी भी उच्च प्राथमिकता है। प्लेटफ़ॉर्म 32- और 64-बिट ऑपरेटिंग सिस्टम Windows XP, Windows Vista, MacOS X और Linux के विभिन्न संस्करणों के साथ संगत है। प्लेटफ़ॉर्म खुला है और वेबसाइट पर, वीडियो कार्ड के लिए विशेष ड्राइवरों के अलावा, आप कंपाइलर, डिबगर, मानक लाइब्रेरी और दस्तावेज़ीकरण सहित सॉफ़्टवेयर पैकेज CUDA टूलकिट, CUDA डेवलपर SDK डाउनलोड कर सकते हैं।
जहां तक CUDA के व्यावहारिक कार्यान्वयन की बात है, लंबे समय तक इस तकनीक का उपयोग केवल कण भौतिकी, खगोल भौतिकी, चिकित्सा या वित्तीय बाजार में परिवर्तनों की भविष्यवाणी आदि के क्षेत्र में अत्यधिक विशिष्ट गणितीय गणनाओं के लिए किया जाता था। लेकिन यह तकनीक धीरे-धीरे आम उपयोगकर्ताओं के करीब होती जा रही है, विशेष रूप से फ़ोटोशॉप के लिए विशेष प्लग-इन दिखाई दे रहे हैं जो GPU की कंप्यूटिंग शक्ति का उपयोग कर सकते हैं। एक विशेष पृष्ठ पर आप उन कार्यक्रमों की पूरी सूची का अध्ययन कर सकते हैं जो NVIDIA CUDA की क्षमताओं का उपयोग करते हैं।
MSI NX8800GT-T2D256E-OC वीडियो कार्ड पर नई तकनीक के व्यावहारिक परीक्षण के रूप में, हम TMPGEnc प्रोग्राम का उपयोग करेंगे। यह उत्पाद व्यावसायिक है (पूर्ण संस्करण की लागत $100 है), लेकिन एमएसआई वीडियो कार्ड के लिए यह 30 दिनों की अवधि के लिए परीक्षण संस्करण में बोनस के रूप में आता है। आप इस संस्करण को डेवलपर की वेबसाइट से डाउनलोड कर सकते हैं, लेकिन TMPGEnc 4.0 XPress MSI स्पेशल एडिशन को स्थापित करने के लिए आपको MSI कार्ड से ड्राइवरों के साथ मूल डिस्क की आवश्यकता है - इसके बिना प्रोग्राम इंस्टॉल नहीं किया जाएगा।
CUDA में कंप्यूटिंग क्षमताओं के बारे में सबसे संपूर्ण जानकारी प्रदर्शित करने और अन्य वीडियो एडेप्टर के साथ उनकी तुलना करने के लिए, आप विशेष CUDA-Z उपयोगिता का उपयोग कर सकते हैं। यह हमारे GeForce 8800GT वीडियो कार्ड के बारे में जानकारी देता है:
संदर्भ मॉडल की तुलना में, हमारी प्रतिलिपि उच्च आवृत्तियों पर काम करती है: रैस्टर डोमेन नाममात्र से 63 मेगाहर्ट्ज अधिक है, और शेडर इकाइयां 174 मेगाहर्ट्ज तेज हैं, और मेमोरी 100 मेगाहर्ट्ज तेज है।
हम केवल सीपीयू का उपयोग करके और निम्नलिखित कॉन्फ़िगरेशन पर टीएमपीजीएनसी प्रोग्राम में सीयूडीए के अतिरिक्त सक्रियण के साथ गणना करते समय उसी एचडी वीडियो की रूपांतरण गति की तुलना करेंगे:
- प्रोसेसर: पेंटियम डुअल-कोर E5200 2.5 GHz;
- मदरबोर्ड: गीगाबाइट P35-S3;
- मेमोरी: 2x1GB गुडराम PC6400 (5-5-5-18-2T)
- वीडियो कार्ड: MSI NX8800GT-T2D256E-OC;
- हार्ड ड्राइव: 320GB WD3200AAKS;
- बिजली की आपूर्ति: कूलरमास्टर एक्सट्रीम पावर 500-पीसीएपी;
- ऑपरेटिंग सिस्टम: Windows XP SP2;
- TMPGEnc 4.0 XPress 4.6.3.268;
- वीडियो कार्ड ड्राइवर: ForceWare 180.60.
एन्कोडिंग DivX 6.8.4 कोडेक का उपयोग करके की गई थी। इस कोडेक की गुणवत्ता सेटिंग्स में, सभी मान डिफ़ॉल्ट पर छोड़ दिए जाते हैं, मल्टीथ्रेडिंग सक्षम है।
TMPGEnc में मल्टीथ्रेडिंग समर्थन प्रारंभ में CPU/GPU सेटिंग टैब में सक्षम किया गया है। CUDA भी इसी अनुभाग में सक्रिय है।
जैसा कि आप उपरोक्त स्क्रीनशॉट से देख सकते हैं, CUDA का उपयोग करके फ़िल्टर प्रोसेसिंग सक्षम है, लेकिन हार्डवेयर वीडियो डिकोडर सक्षम नहीं है। प्रोग्राम दस्तावेज़ीकरण चेतावनी देता है कि अंतिम पैरामीटर को सक्रिय करने से फ़ाइल प्रसंस्करण समय बढ़ जाता है।
परीक्षण के परिणामों के आधार पर, निम्नलिखित डेटा प्राप्त किया गया था:
CUDA सक्षम के साथ 4 गीगाहर्ट्ज पर, हमें केवल कुछ सेकंड (या 2%) का लाभ हुआ, जो विशेष रूप से प्रभावशाली नहीं है। लेकिन कम आवृत्ति पर, इस तकनीक को सक्रिय करने से होने वाली वृद्धि से आप लगभग 13% समय बचा सकते हैं, जो बड़ी फ़ाइलों को संसाधित करते समय काफी ध्यान देने योग्य होगा। लेकिन फिर भी नतीजे उम्मीद के मुताबिक उतने प्रभावशाली नहीं हैं.
TMPGEnc प्रोग्राम में एक CPU और CUDA लोड संकेतक है; इस परीक्षण कॉन्फ़िगरेशन में, इसने CPU लोड को लगभग 20% और ग्राफ़िक्स कोर को शेष 80% पर दिखाया। परिणामस्वरूप, हमारे पास वही 100% है जो CUDA के बिना परिवर्तित करते समय होता है, और समय में बिल्कुल भी अंतर नहीं हो सकता है (लेकिन यह अभी भी मौजूद है)। 256 एमबी की छोटी मेमोरी क्षमता भी कोई सीमित कारक नहीं है। रिवाट्यूनर की रीडिंग से पता चलता है कि ऑपरेशन के दौरान 154 एमबी से अधिक वीडियो मेमोरी का उपयोग नहीं किया गया था।
निष्कर्ष
TMPGEnc प्रोग्राम उनमें से एक है जो CUDA तकनीक को जन-जन तक पहुंचाता है। इस प्रोग्राम में जीपीयू का उपयोग करने से आप वीडियो प्रोसेसिंग प्रक्रिया को तेज कर सकते हैं और केंद्रीय प्रोसेसर को काफी राहत दे सकते हैं, जो उपयोगकर्ता को एक ही समय में अन्य कार्यों को आराम से करने की अनुमति देगा। हमारे विशिष्ट उदाहरण में, GeForce 8800GT 256MB वीडियो कार्ड ने ओवरक्लॉक किए गए पेंटियम डुअल-कोर E5200 प्रोसेसर के आधार पर वीडियो परिवर्तित करते समय समय प्रदर्शन में थोड़ा सुधार किया। लेकिन यह स्पष्ट रूप से दिखाई देता है कि जैसे-जैसे आवृत्ति घटती है, CUDA को सक्रिय करने से लाभ बढ़ता है; कमजोर प्रोसेसर पर, इसके उपयोग से लाभ बहुत अधिक होगा। इस निर्भरता की पृष्ठभूमि के खिलाफ, यह मान लेना काफी तार्किक है कि लोड में वृद्धि (उदाहरण के लिए, बहुत बड़ी संख्या में अतिरिक्त वीडियो फिल्टर का उपयोग) के साथ भी, CUDA वाले सिस्टम के परिणाम अधिक भिन्न होंगे एन्कोडिंग प्रक्रिया पर खर्च किए गए समय में अंतर का महत्वपूर्ण डेल्टा। इसके अलावा, यह मत भूलिए कि G92 इस समय सबसे शक्तिशाली चिप नहीं है, और अधिक आधुनिक वीडियो कार्ड ऐसे अनुप्रयोगों में काफी उच्च प्रदर्शन प्रदान करेंगे। हालाँकि, जब एप्लिकेशन चल रहा होता है, तो GPU पूरी तरह से लोड नहीं होता है और, संभवतः, लोड वितरण प्रत्येक कॉन्फ़िगरेशन पर अलग-अलग निर्भर करता है, अर्थात् प्रोसेसर/वीडियो कार्ड संयोजन पर, जो अंततः प्रतिशत के रूप में बड़ी (या छोटी) वृद्धि दे सकता है। CUDA सक्रियण का. किसी भी मामले में, जो लोग बड़ी मात्रा में वीडियो डेटा के साथ काम करते हैं, यह तकनीक अभी भी उन्हें अपना समय बचाने की अनुमति देगी।
सच है, CUDA को अभी तक व्यापक लोकप्रियता नहीं मिली है, इस तकनीक के साथ काम करने वाले सॉफ़्टवेयर की गुणवत्ता में सुधार की आवश्यकता है। हमने जिस TMPGEnc 4.0 XPress प्रोग्राम की समीक्षा की, उसमें यह तकनीक हमेशा काम नहीं करती थी। एक ही वीडियो को कई बार पुनः एन्कोड किया जा सकता था, और फिर अचानक, अगली बार जब इसे लॉन्च किया गया, तो CUDA लोड पहले से ही 0% था। और यह घटना पूरी तरह से अलग-अलग ऑपरेटिंग सिस्टम पर पूरी तरह से यादृच्छिक थी। साथ ही, विचाराधीन प्रोग्राम ने XviD प्रारूप में एन्कोडिंग करते समय CUDA का उपयोग करने से इनकार कर दिया, लेकिन लोकप्रिय DivX कोडेक के साथ कोई समस्या नहीं थी।
परिणामस्वरूप, अब तक CUDA तकनीक केवल कुछ कार्यों में ही पर्सनल कंप्यूटर के प्रदर्शन को महत्वपूर्ण रूप से बढ़ा सकती है। लेकिन ऐसी तकनीक के अनुप्रयोग का दायरा विस्तारित होगा, और पारंपरिक प्रोसेसर में कोर की संख्या में वृद्धि की प्रक्रिया आधुनिक सॉफ्टवेयर अनुप्रयोगों में समानांतर मल्टी-थ्रेडेड कंप्यूटिंग की मांग में वृद्धि का संकेत देती है। यह अकारण नहीं है कि हाल ही में सभी उद्योग जगत के नेता सीपीयू और जीपीयू को एक एकीकृत वास्तुकला के भीतर संयोजित करने के विचार से ग्रस्त हो गए हैं (बस बहुप्रचारित एएमडी फ्यूजन को याद रखें)। शायद CUDA इस एकीकरण की प्रक्रिया के चरणों में से एक है।
हम परीक्षण उपकरण उपलब्ध कराने के लिए निम्नलिखित कंपनियों को धन्यवाद देते हैं:
- निम्न-स्तरीय सॉफ़्टवेयर इंटरफ़ेस का एक सेट ( एपीआई) गेम और अन्य उच्च-प्रदर्शन मल्टीमीडिया एप्लिकेशन बनाने के लिए। उच्च प्रदर्शन समर्थन शामिल है 2डी- और 3डी-ग्राफिक्स, ध्वनि और इनपुट डिवाइस।
Direct3D (डी3डी) - त्रि-आयामी प्रदर्शित करने के लिए इंटरफ़ेस पुरातन(ज्यामितीय निकाय)। सम्मिलित .
ओपन(अंग्रेज़ी से ग्राफ़िक्स लाइब्रेरी खोलें, शाब्दिक रूप से - ओपन ग्राफिक्स लाइब्रेरी) एक विनिर्देश है जो दो-आयामी और तीन-आयामी कंप्यूटर ग्राफिक्स का उपयोग करके एप्लिकेशन लिखने के लिए एक प्रोग्रामिंग भाषा-स्वतंत्र क्रॉस-प्लेटफ़ॉर्म प्रोग्रामिंग इंटरफ़ेस को परिभाषित करता है। सरल आदिम से जटिल 3डी दृश्यों को चित्रित करने के लिए 250 से अधिक फ़ंक्शन शामिल हैं। वैज्ञानिक अनुसंधान में वीडियो गेम, आभासी वास्तविकता और विज़ुअलाइज़ेशन बनाने के लिए उपयोग किया जाता है। मंच पर खिड़कियाँसे प्रतिस्पर्धा करता है .
ओपनसीएल(अंग्रेज़ी से कंप्यूटिंग भाषा खोलें, शाब्दिक रूप से - गणना की एक खुली भाषा) - रूपरेखा(सॉफ्टवेयर सिस्टम फ्रेमवर्क) विभिन्न ग्राफिक्स पर समानांतर कंप्यूटिंग से संबंधित कंप्यूटर प्रोग्राम लिखने के लिए ( जीपीयू) और ( ). ढाँचे को ओपनसीएलएक प्रोग्रामिंग भाषा और एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस शामिल है ( एपीआई). ओपनसीएलनिर्देश स्तर और डेटा स्तर पर समानता प्रदान करता है और तकनीक का कार्यान्वयन है जीपीजीपीयू.
जीपीजीपीयू(अंग्रेजी से संक्षिप्त) सामान्य-पी प्रयोजन जी ग्राफिक्स पी प्रोसेसिंग यू निट्स, अक्षरशः - जीपीयूसामान्य प्रयोजन) सामान्य कंप्यूटिंग के लिए ग्राफिक्स प्रोसेसिंग यूनिट (जीपीयू) या वीडियो कार्ड का उपयोग करने की एक तकनीक है जो आमतौर पर कंप्यूटर द्वारा की जाती है।
शेडर(अंग्रेज़ी) शेडर) - संश्लेषित छवियों पर छाया बनाने के लिए एक कार्यक्रम, जिसका उपयोग किसी वस्तु या छवि के अंतिम मापदंडों को निर्धारित करने के लिए त्रि-आयामी ग्राफिक्स में किया जाता है। आमतौर पर इसमें प्रकाश अवशोषण और प्रकीर्णन, बनावट मानचित्रण, प्रतिबिंब और अपवर्तन, छायांकन, सतह विस्थापन और प्रसंस्करण के बाद के प्रभावों के मनमाने ढंग से जटिल विवरण शामिल होते हैं। सरल ज्यामितीय आकृतियों का उपयोग करके जटिल सतहों की कल्पना की जा सकती है।
प्रतिपादन(अंग्रेज़ी) प्रतिपादन) - विज़ुअलाइज़ेशन, कंप्यूटर ग्राफिक्स में, सॉफ़्टवेयर का उपयोग करके एक मॉडल से एक छवि प्राप्त करने की प्रक्रिया।
एसडीके(अंग्रेजी से संक्षिप्त) सॉफ़्टवेयर विकास किट) - सॉफ्टवेयर डेवलपमेंट टूल्स का एक सेट।
CPU(अंग्रेजी से संक्षिप्त) सेंट्रल प्रोसेसिंग यूनिट, शाब्दिक रूप से - केंद्रीय / मुख्य / मुख्य कंप्यूटिंग डिवाइस) - केंद्रीय (माइक्रो); एक उपकरण जो मशीन निर्देशों को निष्पादित करता है; हार्डवेयर का एक टुकड़ा जो कम्प्यूटेशनल संचालन (ऑपरेटिंग सिस्टम और एप्लिकेशन सॉफ़्टवेयर द्वारा निर्दिष्ट) करने और सभी उपकरणों के संचालन के समन्वय के लिए जिम्मेदार है।
जीपीयू(अंग्रेजी से संक्षिप्त) ग्राफ़िक प्रोसेसिंग यूनिट, शाब्दिक रूप से - ग्राफिक कंप्यूटिंग डिवाइस) - ग्राफिक प्रोसेसर; एक अलग डिवाइस या गेम कंसोल जो ग्राफ़िक रेंडरिंग (विज़ुअलाइज़ेशन) करता है। आधुनिक जीपीयू कंप्यूटर ग्राफिक्स को यथार्थवादी तरीके से संसाधित करने और प्रदर्शित करने में बहुत कुशल हैं। आधुनिक वीडियो एडेप्टर में ग्राफिक्स प्रोसेसर का उपयोग 3डी ग्राफिक्स त्वरक के रूप में किया जाता है, लेकिन कुछ मामलों में इसका उपयोग गणना के लिए भी किया जा सकता है ( जीपीजीपीयू).
समस्या CPU
लंबे समय तक, पारंपरिक प्रदर्शन में वृद्धि मुख्य रूप से एक चिप पर ट्रांजिस्टर की संख्या में एक साथ वृद्धि के साथ घड़ी आवृत्ति में लगातार वृद्धि (लगभग 80% प्रदर्शन घड़ी आवृत्ति द्वारा निर्धारित किया गया था) के कारण हुई। . हालाँकि, घड़ी की आवृत्ति में और वृद्धि (3.8 गीगाहर्ट्ज़ से अधिक की घड़ी आवृत्ति पर, चिप्स बस ज़्यादा गरम हो जाती है!) कई मूलभूत भौतिक बाधाओं का सामना करती है (क्योंकि तकनीकी प्रक्रिया लगभग एक परमाणु के आकार के करीब आ गई है: , और एक सिलिकॉन परमाणु का आकार लगभग 0.543 एनएम है):
सबसे पहले, जैसे-जैसे क्रिस्टल का आकार घटता है और घड़ी की आवृत्ति बढ़ती है, ट्रांजिस्टर का लीकेज करंट बढ़ता है। इससे बिजली की खपत बढ़ जाती है और गर्मी उत्सर्जन बढ़ जाता है;
दूसरा, उच्च घड़ी की गति के लाभों को मेमोरी एक्सेस विलंबता द्वारा आंशिक रूप से नकार दिया जाता है, क्योंकि मेमोरी एक्सेस का समय बढ़ती घड़ी की गति के साथ नहीं रहता है;
तीसरा, कुछ अनुप्रयोगों के लिए, पारंपरिक सीरियल आर्किटेक्चर तथाकथित "वॉन न्यूमैन टोंटी" के कारण घड़ी की गति बढ़ने के कारण अक्षम हो जाते हैं, जो अनुक्रमिक गणना प्रवाह के परिणामस्वरूप होने वाली एक प्रदर्शन सीमा है। साथ ही, प्रतिरोधक-कैपेसिटिव सिग्नल ट्रांसमिशन में देरी बढ़ जाती है, जो घड़ी की आवृत्ति में वृद्धि के साथ जुड़ी एक अतिरिक्त बाधा है।
विकास जीपीयू
इसके समानांतर विकास हुआ (और है!) जीपीयू:
…
नवंबर 2008 - इंटेल 4-कोर की एक लाइन पेश की इंटेल कोर i7, जो नई पीढ़ी के माइक्रोआर्किटेक्चर पर आधारित हैं Nehalem. प्रोसेसर 2.6-3.2 गीगाहर्ट्ज़ की क्लॉक फ़्रीक्वेंसी पर काम करते हैं। 45nm प्रक्रिया प्रौद्योगिकी का उपयोग करके बनाया गया।
दिसंबर 2008 - 4-कोर की डिलीवरी शुरू हुई एएमडी फेनोम II 940(कोड नाम - डेनेब). 3 गीगाहर्ट्ज की आवृत्ति पर संचालित होता है, जिसे 45-एनएम प्रक्रिया प्रौद्योगिकी का उपयोग करके उत्पादित किया जाता है।
…
मई 2009 - कंपनी एएमडी GPU संस्करण पेश किया अति Radeon HD 4890कोर क्लॉक स्पीड 850 मेगाहर्ट्ज से बढ़कर 1 गीगाहर्ट्ज हो गई। यह पहला है ग्राफ़िकप्रोसेसर 1 गीगाहर्ट्ज पर चल रहा है। आवृत्ति में वृद्धि के कारण चिप की कंप्यूटिंग शक्ति 1.36 से बढ़कर 1.6 टेराफ्लॉप हो गई। प्रोसेसर में 800 (!) कंप्यूटिंग कोर हैं और वीडियो मेमोरी का समर्थन करता है जीडीडीआर5, डायरेक्टएक्स 10.1, अति क्रॉसफ़ायरएक्सऔर आधुनिक वीडियो कार्ड मॉडल में निहित अन्य सभी प्रौद्योगिकियाँ। चिप का निर्माण 55 एनएम तकनीक के आधार पर किया गया है।
मुख्य अंतर जीपीयू
विशिष्ट सुविधाएं जीपीयू(के साथ तुलना ) हैं:
- एक वास्तुकला जिसका उद्देश्य अधिकतम रूप से बनावट और जटिल ग्राफिक वस्तुओं की गणना की गति को बढ़ाना है;
- चरम शक्ति विशिष्ट जीपीयूउससे कहीं अधिक ;
- एक विशेष कन्वेयर वास्तुकला के लिए धन्यवाद, जीपीयूकी तुलना में ग्राफिक जानकारी को संसाधित करने में बहुत अधिक कुशल है।
"शैली का संकट"
"शैली संकट" के लिए 2005 तक परिपक्व हो गए - तभी वे प्रकट हुए। लेकिन, प्रौद्योगिकी के विकास के बावजूद, पारंपरिक की उत्पादकता में वृद्धि हुई है उल्लेखनीय रूप से कमी आई। साथ ही प्रदर्शन जीपीयूलगातार वृद्धि। तो, 2003 तक, यह क्रांतिकारी विचार मूर्त रूप ले लिया - अपनी आवश्यकताओं के लिए ग्राफ़िक्स की कंप्यूटिंग शक्ति का उपयोग करें. जीपीयू का उपयोग "गैर-ग्राफ़िकल" कंप्यूटिंग (भौतिकी सिमुलेशन, सिग्नल प्रोसेसिंग, कम्प्यूटेशनल गणित/ज्यामिति, डेटाबेस संचालन, कम्प्यूटेशनल जीव विज्ञान, कम्प्यूटेशनल अर्थशास्त्र, कंप्यूटर विज़न, आदि) के लिए तेजी से किया जा रहा है।
मुख्य समस्या यह थी कि कोई मानक प्रोग्रामिंग इंटरफ़ेस नहीं था जीपीयू. डेवलपर्स ने प्रयोग किया ओपनया Direct3D, लेकिन यह बहुत सुविधाजनक था. निगम NVIDIA(ग्राफिक्स, मीडिया और संचार प्रोसेसर के साथ-साथ वायरलेस मीडिया प्रोसेसर के सबसे बड़े निर्माताओं में से एक; 1993 में स्थापित) ने एक एकीकृत और सुविधाजनक मानक विकसित करना शुरू किया - और प्रौद्योगिकी पेश की CUDA.
वह कैसे शुरू हुआ
2006 - NVIDIAदर्शाता CUDA™; कंप्यूटिंग में एक क्रांति की शुरुआत जीपीयू.
2007 - NVIDIAवास्तुकला जारी करता है CUDA(मूल संस्करण क्यूडा एसडीके 15 फ़रवरी 2007 को प्रस्तुत किया गया था); पत्रिका से नामांकन "सर्वश्रेष्ठ नया उत्पाद"। लोकप्रिय विज्ञानऔर प्रकाशन से "पाठकों की पसंद"। एचपीसीवायर.
2008 - प्रौद्योगिकी एनवीडिया क्यूडासे "तकनीकी उत्कृष्टता" श्रेणी जीती पीसी पत्रिका.
क्या हुआ है CUDA
CUDA(अंग्रेजी से संक्षिप्त) एकीकृत डिवाइस आर्किटेक्चर की गणना करें, शाब्दिक रूप से - उपकरणों का एकीकृत कंप्यूटिंग आर्किटेक्चर) - आर्किटेक्चर (सॉफ्टवेयर और हार्डवेयर का एक सेट) जो आपको उत्पादन करने की अनुमति देता है जीपीयूसामान्य प्रयोजन गणना, जबकि जीपीयूवास्तव में एक शक्तिशाली सहसंसाधक के रूप में कार्य करता है।
तकनीकी एनवीडिया क्यूडा™प्रोग्रामिंग भाषा में एकमात्र विकास वातावरण है सी, जो डेवलपर्स को ऐसे सॉफ़्टवेयर बनाने की अनुमति देता है जो GPU की प्रसंस्करण शक्ति के कारण जटिल कंप्यूटिंग समस्याओं को कम समय में हल करता है। दुनिया में लाखों लोग पहले से ही काम कर रहे हैं जीपीयूसमर्थन के साथ CUDA, और हजारों प्रोग्रामर पहले से ही (मुफ़्त!) टूल का उपयोग कर रहे हैं CUDAअनुप्रयोगों में तेजी लाने और सबसे जटिल, संसाधन-गहन कार्यों को हल करने के लिए - वीडियो और ऑडियो एन्कोडिंग से लेकर तेल और गैस अन्वेषण, उत्पाद मॉडलिंग, चिकित्सा इमेजिंग और वैज्ञानिक अनुसंधान तक।
CUDAडेवलपर को अपने विवेक से, ग्राफिक्स त्वरक के निर्देशों के सेट तक पहुंच व्यवस्थित करने और इसकी मेमोरी को प्रबंधित करने और उस पर जटिल समानांतर गणना व्यवस्थित करने का अवसर देता है। ग्राफ़िक्स त्वरक समर्थन CUDAआज के समान एक शक्तिशाली प्रोग्रामयोग्य खुला आर्किटेक्चर बन जाता है। यह सब डेवलपर को हार्डवेयर निर्माण तक निम्न-स्तरीय, वितरित और उच्च गति वाली पहुंच प्रदान करता है CUDAकंपाइलर, डिबगर्स, गणितीय लाइब्रेरी और सॉफ़्टवेयर प्लेटफ़ॉर्म जैसे गंभीर उच्च-स्तरीय टूल बनाने के लिए एक आवश्यक आधार।
यूराल्स्की, अग्रणी प्रौद्योगिकी विशेषज्ञ NVIDIA, तुलना करना जीपीयूऔर , यह कहता है: “ - यह एक एसयूवी है. वह हमेशा और हर जगह गाड़ी चलाता है, लेकिन बहुत तेज़ नहीं। ए जीपीयू- यह एक स्पोर्ट्स कार है। खराब सड़क पर, यह बस कहीं नहीं जाएगी, लेकिन इसे एक अच्छी सतह दें, और यह अपनी पूरी गति दिखाएगी, जिसके बारे में एक एसयूवी ने कभी सपने में भी नहीं सोचा होगा!..'
प्रौद्योगिकी क्षमताएं CUDA