ग्राफ़िक्स प्रसंस्करण इकाइयों पर सामान्य प्रयोजन कंप्यूटिंग

ग्राफ़िक्स प्रोसेसिंग युनिट (जीपीजीपीयू, या अधिकांशतः जीपीजीपी) पर सामान्य प्रयोजन कंप्यूटिंग ग्राफिक्स प्रोसेसिंग यूनिट (जीपीयू) का उपयोग करके कंप्यूटेशन का कार्य करना है, जो सामान्यतः सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) द्वारा उपयोग किए जाते हैं। और कंप्यूटर ग्राफिक्स के लिए गणना करता है, कंप्यूटर में कई वीडियो कार्डों का उपयोग करना, या बड़ी संख्या में ग्राफिक्स चिप्स का उपयोग करना, ग्राफिक्स प्रोसेसिंग के पहले से ही पैरलेल स्वरूप को और भी पैरलेलाइज़ करता है।

अनिवार्य रूप से, जीपीजीपीयू ग्राफ़िक्स पाइपलाइन या अधिक जीपीयू और सीपीयू के बीच प्रकार की समानांतर कंप्यूटिंग है जो डेटा का विश्लेषण करती है जैसे कि यह छवि या अन्य ग्राफिक रूप में होता है। जबकि जीपीयू कम आवृत्तियों पर संचालित होते हैं, उनमें सामान्यतः अविष्कार पर मल्टी-कोर प्रोसेसर की संख्या कई गुना होती है। इस प्रकार, जीपीयू पारंपरिक सीपीयू की समानता में प्रति सेकंड कहीं अधिक चित्र और ग्राफिकल डेटा संसाधित कर सकता है। डेटा को ग्राफ़िकल रूप में माइग्रेट करना और फिर उसे स्कैन और विश्लेषण करने के लिए जीपीयू का उपयोग करना बड़ा स्पीडअप बना सकता है। 21वीं सदी की प्रारंभ में जीपीजीपीयू पाइपलाइनों अविष्कार ग्राफ़िक्स प्रसंस्करण (उदाहरण के लिए उत्तम शेडर्स के लिए) के लिए विकसित किया गया था। ये पाइपलाइनें वैज्ञानिक कंप्यूटिंग आवश्यकताओं के लिए उपयुक्त पाई गईं और तब से इन्हें इस दिशा में विकसित किया गया है।

इतिहास
सिद्धांत में, जोड़, गुणा और अन्य गणितीय कार्यों सहित किसी भी इच्छानुसार अविष्कार से बूलियन फ़ंक्शन को लाॅजिक ऑपरेटरों के कार्यात्मक पूर्णता सेट से बनाया जा सकता है। 1987 में, कॉनवे का गेम ऑफ लाइफ बिट सदिश अविष्कार पर टिल तिल के विशेष अनुक्रम को लागू करने के लिए बन जाता है नामक प्रारंभिक स्ट्रीम प्रोसेसिंग का उपयोग करके सामान्य प्रयोजन कंप्यूटिंग के पहले उदाहरणों में से बन गया। ग्राफिक्स प्रोसेसर पर प्रोग्रामेबल शेडर्स और फ्लोटिंग पॉइंट अविष्कार सपोर्ट दोनों के आगमन के साथ, 2001 के बाद जीपीयू पर सामान्य प्रयोजन कंप्यूटिंग अधिक व्यावहारिक और लोकप्रिय हो गई। विशेष रूप से, आव्यूह (गणित)या सदिश (गणित और भौतिकी) से जुड़ी समस्याएं – विशेष रूप से दो-, तीन-, या चार-आयामी सदिश –  को जीपीयू में अनुवाद करना आसान था, जो उन प्रकारों पर मूल गति और समर्थन के साथ कार्य करता है। जीपीजीपीयू के लिए महत्वपूर्ण मील का पत्थर वर्ष 2003 था जब दो अनुसंधान सेटों ने स्वतंत्र रूप से जीपीयू पर सामान्य रैखिक बीजगणित समस्याओं के समाधान के लिए जीपीयू-आधारित दृष्टिकोण की अविष्कार की जो सीपीयू की समानता में तेजी से चलते थे।  जीपीयू को सामान्य प्रयोजन प्रोसेसर के रूप में उपयोग करने के इन प्रारंभिक प्रयासों के लिए ग्राफिक्स प्राइमेटिव के संदर्भ में कम्प्यूटेशनल समस्याओं को सुधारने की आवश्यकता थी, जैसा कि ग्राफिक्स प्रोसेसर, ओपनजीएल और डायरेक्टएक्स के लिए दो प्रमुख एपीआई द्वारा समर्थित है। इस बोझिल अनुवाद को सामान्य प्रयोजन प्रोग्रामिंग लैंग्वेज और एपीआई जैसे लिब श/रैपिडमाइंड, ब्रुकजीपीयू और एक्सेलेरेटर के आगमन से रोका गया था। इसके बाद एनवीडिया का CUDA आया, जिसने प्रोग्रामर्स को अधिक सामान्य उच्च-प्रदर्शन कंप्यूटिंग अवधारणाओं के पक्ष में अंतर्निहित ग्राफिकल अवधारणाओं को अनदेखा करने की अनुमति दी। नई, हार्डवेयर-विक्रेता-स्वतंत्र प्रस्तुतिों में माइक्रोसॉफ्ट अविष्कार का डायरेक्टकंप्यूट अविष्कार और एप्पल/ख्रोनॉस ग्रुप का ओपनसीएल सम्मिलित हैं। इसका कारण यह है कि आधुनिक जीपीजीपीयू पाइपलाइन डेटा को ग्राफिकल रूप में पूर्ण और स्पष्ट रूपांतरण की आवश्यकता के बिना जीपीयू की गति का लाभ उठा सकती है। GPGPU.org के संस्थापक मार्क हैरिस ने जीपीयू शब्द गढ़ा।

कार्यान्वयन
कोई भी भाषा जो सीपीयू पर चल रहे कोड को रिटर्न वैल्यू के लिए जीपीयू शेडर को पोल करने की अनुमति देती है, जीपीजीपीयू फ्रेमवर्क बना सकती है। समानांतर कंप्यूटिंग के लिए प्रोग्रामिंग मानकों में ओपनसीएल (विक्रेता-स्वतंत्र), ओपनएसीसी, ओपनएमपी और ओपनएचएमपीपी सम्मिलित हैं।

, ओपनसीएल प्रमुख ओपन सामान्य प्रयोजन जीपीयू कंप्यूटिंग लैंग्वेज है, और क्रोनोस सेट द्वारा परिभाषित खुला मानक है। ओपनसीएल क्रॉस-प्लेटफॉर्म जीपीजीपीयू प्लेटफॉर्म प्रदान करता है जो सीपीयू पर डेटा समानांतर गणना का अतिरिक्त समर्थन करता है। ओपनसीएल इंटेल, एएमडी, ए एनविडिया अविष्कार और एआरएम प्लेटफार्मों पर सक्रिय रूप से समर्थित है। ख्रोनोस ग्रुप ने SYCL को भी मानकीकृत और कार्यान्वित किया है, जो शुद्ध C++11 पर आधारित एकल-स्रोत डोमेन विशिष्ट एम्बेडेड भाषा के रूप में ओपनसीएल के लिए उच्च-स्तरीय प्रोग्रामिंग मॉडल है।

प्रमुख स्वामित्व ढांचा एनवीडिया सीयूडीए है। एनवीडिया ने 2006 में CUDA, सॉफ्टवेयर डेवलपमेंट किट (एसडीके) और अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) लॉन्च किया, जो जीफोर्स 8 श्रृंखला और बाद के जीपीयू पर निष्पादन के लिए एल्गोरिदम को कोड करने के लिए प्रोग्रामिंग लैंग्वेज सी (प्रोग्रामिंग लैंग्वेज ) का उपयोग करने की अनुमति देता है। 2016 में लॉन्च किया गया ROCm, CUDA के लिए AMD की ओपन-सोर्स प्रतिक्रिया है। 2022 तक, सुविधाओं के स्थितियों में यह CUDA के बराबर है, और इसमें अभी भी उपभोक्ता समर्थन का अभाव है। Opeएनविडिया अविष्कार को 2003-2005 के बीच टोरंटो विश्वविद्यालय में विकसित किया गया था, एनवीडिया के सहयोग से। अल्टिमेश द्वारा बनाया गया अल्टिमेश हाइब्रिडाइज़र सामान्य इंटरमीडिएट लैंग्वेज को CUDA बायनेरिज़ में संकलित करता है। यह जेनरिक और वर्चुअल फ़ंक्शंस का समर्थन करता है। डिबगिंग और प्रोफाइलिंग को विजुअल स्टूडियो और एनसाइट के साथ एकीकृत किया गया है। यह विज़ुअल स्टूडियो मार्केटप्लेस पर विज़ुअल स्टूडियो एक्सटेंशन के रूप में उपलब्ध है। माइक्रोसॉफ्ट ने डायरेक्टकंप्यूट जीपीयू कंप्यूटिंग एपीआई प्रस्तुत किया, जिसे डायरेक्टएक्स 11 एपीआई के साथ जारी किया गया।, क्वांटएलिया द्वारा निर्मित, माइक्रोसॉफ्ट .नेट भाषाओं के लिए देशी जीपीयू कंप्यूटिंग क्षमताओं का परिचय F शार्प (प्रोग्रामिंग लैंग्वेज)|F शार्प और सी शार्प (प्रोग्रामिंग लैंग्वेज)|सी#। एलिया जीपीयू प्रतिनिधियों और स्वचालित मेमोरी प्रबंधन का उपयोग करके जीपीयू समानांतर-के लिए और समानांतर समुच्चय पर आधारित सरलीकृत जीपीयू प्रोग्रामिंग मॉडल भी प्रदान करता है। मैटलैब समानांतर कंप्यूटिंग टूलबॉक्स और मैटलैब वितरित कंप्यूटिंग सर्वर का उपयोग करके GPजीपीयू त्वरण का समर्थन करता है, और जैकेट (सॉफ़्टवेयर) जैसे तृतीय-पक्ष पैकेज। जीपीजीपीयू प्रसंस्करण का उपयोग भौतिकी इंजनों द्वारा न्यूटोनियन भौतिकी का अनुकरण करने के लिए भी किया जाता है, और व्यावसायिक कार्यान्वयन में हॉक (सॉफ्टवेयर) | हॉक फिजिक्स, एफएक्स और फिजएक्स सम्मिलित हैं, दोनों का उपयोग सामान्यतः कंप्यूटर और वीडियो गेम के लिए किया जाता है। C++ एक्सेलेरेटेड मैसिव पैरेललिज्म (C++ AMP) लाइब्रेरी है जो जीपीयू पर डेटा-समानांतर हार्डवेयर का उपयोग करके C++ कोड के निष्पादन को तेज करती है।

मोबाइल कंप्यूटर
मोबाइल जीपीयू की बढ़ती शक्ति की प्रवृत्ति के कारण, सामान्य प्रयोजन प्रोग्रामिंग प्रमुख मोबाइल ऑपरेटिंग सिस्टम चलाने वाले मोबाइल उपकरणों पर भी उपलब्ध हो गई है। गूगल एंड्राइड (ऑपरेटिंग सिस्टम) 4.2 ने मोबाइल डिवाइस जीपीयू पर रेंडरस्क्रिप्ट कोड चलाने को सक्षम किया। ऐप्पल इंक ने आईओएस अनुप्रयोगों के लिए मालिकाना धातु (एपीआई) एपीआई प्रस्तुत किया, जो ऐप्पल के जीपीयू कंप्यूट शेडर्स के माध्यम से इच्छानुसार कोड निष्पादित करने में सक्षम है।

हार्डवेयर समर्थन
कंप्यूटर वीडियो कार्ड विभिन्न विक्रेताओं, जैसे एनवीडिया, एएमडी द्वारा निर्मित किए जाते हैं। ऐसे विक्रेताओं के कार्ड इंटीजर और फ्लोटिंग पॉइंट अविष्कार प्रारूप (32-बिट और 64-बिट) जैसे डेटा-प्रारूप समर्थन को लागू करने में भिन्न होते हैं। ग्राफिक कार्ड की विभिन्न विशेषताओं को सरल शेडर मॉडल संस्करण संख्या (1.0, 2.0, 3.0, आदि) में रैंक करने में सहायता करने के लिए माइक्रोसॉफ्ट ने उच्च-स्तरीय शेडिंग भाषा#शेडर मॉडल समानता मानक प्रस्तुत किया।

इंटीजर संख्या
प्री-डायरेक्टएक्स 9 वीडियो कार्ड केवल पैलेट (कंप्यूटिंग) या इंटीजर रंग प्रकारों का समर्थन करते हैं। विभिन्न प्रारूप उपलब्ध हैं, प्रत्येक में लाल तत्व, हरा तत्व और नीला तत्व सम्मिलित है। कभी-कभी पारदर्शिता के लिए उपयोग करने के लिए और अल्फा मान जोड़ा जाता है। सामान्य प्रारूप हैं:
 * प्रति पिक्सेल 8 बिट्स - कभी-कभी पैलेट मोड, जहां प्रत्येक मान किसी अन्य प्रारूप में निर्दिष्ट वास्तविक रंग मान के साथ तालिका में सूचकांक होता है। कभी-कभी लाल के लिए तीन बिट, हरे के लिए तीन बिट और नीले के लिए दो बिट होते हैं।
 * 16 बिट प्रति पिक्सेल - सामान्यतः बिट्स को लाल के लिए पांच बिट्स, हरे के लिए छह बिट्स और नीले के लिए पांच बिट्स के रूप में आवंटित किया जाता है।
 * 24 बिट प्रति पिक्सेल - लाल, हरे और नीले प्रत्येक के लिए आठ बिट हैं।
 * 32 बिट प्रति पिक्सेल - लाल, हरा, नीला और अल्फा कंपोजिटिंग में से प्रत्येक के लिए आठ बिट हैं।

फ़्लोटिंग-पॉइंट नंबर
प्रारंभिक फिक्स्ड फंक्शन या सीमित प्रोग्रामयोग्यता ग्राफिक्स (अर्थात, डायरेक्टएक्स 8.1-अनुपालक जीपीयू तक और इसमें सम्मिलित ) के लिए यह पर्याप्त था क्योंकि यह डिस्प्ले में उपयोग किया जाने वाला प्रतिनिधित्व भी है। इस प्रतिनिधित्व की कुछ सीमाएँ हैं। पर्याप्त ग्राफ़िक्स प्रसंस्करण शक्ति को देखते हुए ग्राफ़िक्स प्रोग्रामर भी उच्च-गतिशील-रेंज इमेजिंग जैसे प्रभाव प्राप्त करने के लिए फ्लोटिंग पॉइंट डेटा प्रारूप जैसे उत्तम प्रारूपों का उपयोग करना चाहेंगे। कई GP जीपीयू अनुप्रयोगों को फ़्लोटिंग पॉइंट त्रुटिहीन की आवश्यकता होती है, जो डायरेक्टएक्स 9 विनिर्देश के अनुरूप वीडियो कार्ड के साथ आते हैं। डायरेक्टएक्स 9 शेडर मॉडल 2.x ने दो स्पष्ट प्रकारों के समर्थन का सुझाव दिया: पूर्ण और आंशिक त्रुटिहीन। पूर्ण परिशुद्धता समर्थन या तो FP32 या FP24 (फ़्लोटिंग पॉइंट 32- या 24-बिट प्रति घटक) या इससे अधिक हो सकता है, जबकि आंशिक परिशुद्धता FP16 थी। एटी टेक्नोलॉजीज़ की रेडियन R300 श्रृंखला के जीपीयू ने केवल प्रोग्रामेबल फ्रैगमेंट पाइपलाइन में FP24 परिशुद्धता का समर्थन किया (चूँकि FP32 वर्टेक्स प्रोसेसर में समर्थित था) जबकि एनविडिया अविष्कार की जीफोर्स एफ़एक्स श्रृंखला FP16 और FP32 दोनों का समर्थन करती थी; अन्य विक्रेताओं जैसे S3 ग्राफ़िक्स और XGI टेक्नोलॉजी ने FP24 तक के प्रारूपों के मिश्रण का समर्थन किया। एनवीडिया जीपीयू पर फ़्लोटिंग पॉइंट का कार्यान्वयन अधिकतर IEEE फ़्लोटिंग-पॉइंट मानक के अनुरूप है; चूँकि, यह सभी विक्रेताओं के लिए सच नहीं है। इसका शुद्धता पर प्रभाव पड़ता है जिसे कुछ वैज्ञानिक अनुप्रयोगों के लिए महत्वपूर्ण माना जाता है। जबकि 64-बिट फ्लोटिंग पॉइंट वैल्यू (डबल प्रिसिजन फ्लोट) सामान्यतः सीपीयू पर उपलब्ध हैं, ये जीपीयू पर सार्वभौमिक रूप से समर्थित नहीं हैं। कुछ जीपीयू आर्किटेक्चर आईईईई अनुपालन का त्याग करते हैं, जबकि अन्य में दोहरी परिशुद्धता का अभाव होता है। जीपीयू पर दोहरे परिशुद्धता फ़्लोटिंग पॉइंट मानों का अनुकरण करने के प्रयास हुए हैं; चूँकि , स्पीड ट्रेडऑफ़ पहली बार में कंप्यूटिंग को जीपीयू पर लोड करने के किसी भी लाभ को नकार देता है।

वेक्टरीकरण
जीपीयू पर अधिकांश ऑपरेशन वेक्टरकृत विधि से संचालित होते हैं: ऑपरेशन साथ चार मानों पर किया जा सकता है। उदाहरण के लिए, यदि रंग $⟨R1, G1, B1⟩$ को दूसरे रंग से संशोधित किया जाना है $⟨R2, G2, B2⟩$, जीपीयू परिणामी रंग उत्पन्न कर सकता है $⟨R1*R2, G1*G2, B1*B2⟩$ ऑपरेशन में. यह कार्यक्षमता ग्राफ़िक्स में उपयोगी है क्योंकि लगभग प्रत्येक बुनियादी डेटा प्रकार सदिश (या तो 2-, 3-, या 4-आयामी) है। उदाहरणों में शीर्ष, रंग, सामान्य सदिश और बनावट निर्देशांक सम्मिलित हैं। कई अन्य एप्लिकेशन इसका अच्छा उपयोग कर सकते हैं, और उनके उच्च प्रदर्शन के कारण, सदिश निर्देश, जिसे एकल निर्देश, एकाधिक डेटा (एकल निर्देश, एकाधिक डेटा) कहा जाता है, लंबे समय से सीपीयू पर उपलब्ध हैं।

जीपीयू बनाम सीपीयू
शुरुआत में, डेटा सीधे एकबार सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) से ग्राफिक्स प्रोसेसिंग यूनिट (जीपीयू) तक भेजा जाता था, फिर प्रदर्शन उपकरण तक एक-तरफ़ा पारित किया जाता था। चूँकि, समय के साथ, जीपीयू के लिए सरल रूप में डेटा को स्टोर करना महत्वपूर्ण हो गया था, जिसे सीपीयू को पास करने के लिए वापस भेजा जा सकता था जो एक छवि को विश्लेषण करता है, या एक विज्ञानिक डेटा का सेट जो वीडियो कार्ड द्वारा समझा जा सकता है। जीपीयू के पास प्रत्येक ड्रॉ ऑपरेशन का एक्सेस होता है, इसलिए यह डेटा को इन रूपों में तेजी से विश्लेषित कर सकता है, जबकि सीपीयू को प्रत्येक पिक्सेल या डेटा तत्व को बहुत धीमे ढंग से पोल करना पड़ता है, क्योंकि सीपीयू और उसके बड़े पूल के बीच रैंडम-एक्सेस मेमोरी (या और खराब हालत में, हार्ड ड्राइव) के बीच एक्सेस की गति जीपीयू और वीडियो कार्ड में स्वाभाविक रूप से स्मॉलर मात्रा की और महंगे मेमोरी होती है जो बहुत तेजी से एक्सेस करने में सक्षम होती है। सक्रिय रूप से विश्लेषण किए जाने वाले डेटा सेट के हिस्से को बनावट या अन्य आसानी से पढ़ने योग्य जीपीयू रूपों के रूप में उस जीपीयू मेमोरी में स्थानांतरित करने से गति में वृद्धि होती है। जीपीजीपीयू डिज़ाइन की विशिष्ट विशेषता सूचना डुप्लेक्स (दूरसंचार) को जीपीयू से सीपीयू में वापस स्थानांतरित करने की क्षमता है; सामान्यतः अविष्कार पर दोनों दिशाओं में डेटा थ्रूपुट आदर्श रूप से उच्च होता है, जिसके परिणामस्वरूप विशिष्ट उच्च-उपयोग ऐल्गरिदम विधि की गति पर गुणक (गुणक) प्रभाव पड़ता है। जीपीजीपीयू पाइपलाइन विशेष रूप से बड़े डेटा सेट और/या 2डी या 3डी इमेजरी वाले डेटा पर दक्षता में सुधार कर सकती हैं। इसका उपयोग जटिल ग्राफिक्स पाइपलाइनों के साथ-साथ वैज्ञानिक कंप्यूटिंग में भी किया जाता है; जीनोम मैपिंग जैसे बड़े डेटा सेट वाले फील्डों में, या जहां दो- या तीन-आयामी विश्लेषण उपयोगी है, वहां और भी अधिक – विशेष रूप से वर्तमान में बायोमोलिक्यूल विश्लेषण, प्रोटीन अध्ययन और अन्य जटिल कार्बनिक रसायन विज्ञान में। ऐसी पाइपलाइनें अन्य फील्डों के अतिरिक्त, छवि प्रसंस्करण और कंप्यूटर दृष्टि में दक्षता में भी अधिक सुधार कर सकती हैं; साथ ही सामान्यतः अविष्कार पर समानांतर कंप्यूटिंग। कुछ अत्यधिक अनुकूलित पाइपलाइनों ने उच्च-उपयोग कार्य पर मूल सीपीयू-आधारित पाइपलाइन की गति में कई सौ गुना वृद्धि प्राप्त की है। सरल उदाहरण जीपीयू प्रोग्राम होगा जो औसत प्रकाश मूल्यों के बारे में डेटा एकत्र करता है क्योंकि यह कैमरे या कंप्यूटर ग्राफिक्स प्रोग्राम से कुछ दृश्य को सीपीयू पर मुख्य प्रोग्राम में वापस प्रस्तुत करता है, जिससे सीपीयू समग्र स्क्रीन दृश्य में समायोजन कर सके। अधिक उन्नत उदाहरण संख्यात्मक डेटा और संसाधित छवि दोनों को मोबाइल रोबोट को नियंत्रित करने वाले कंप्यूटर विज़न प्रोग्राम की रूपरेखा का प्रतिनिधित्व करने के लिए किनारे का पता लगाना का उपयोग कर सकता है। क्योंकि जीपीयू के पास किसी छवि में प्रत्येक पिक्सेल या अन्य चित्र तत्व तक तेज़ और स्थानीय हार्डवेयर पहुंच होती है, यह इसका विश्लेषण और औसत कर सकता है (पहले उदाहरण के लिए) या सीपीयू की समानता में बहुत अधिक गति के साथ सोबेल ऑपरेटर या अन्य कनवल्शन फ़िल्टर (दूसरे के लिए) लागू कर सकता है, जिसे सामान्यतः अविष्कार पर प्रश्न में ग्राफ़िक की धीमी रैंडम-एक्सेस मेमोरी प्रतियों तक पहुंच होनी चाहिए। जीपीयूपीयू मूल रूप से एक सॉफ़्टवेयर कॉन्सेप्ट है, न कि हार्डवेयर कॉन्सेप्ट; यह एक ऐल्गोरिदम के प्रकार है, न कि किसी उपकरण का टुकड़ा। विशेष उपकरण डिज़ाइन किए गए हैं, जो परंपरागत रूप से बहुत बड़े मात्रा के डेटा पर बहुत कम एल्गोरिदम को करते हैं। मासिव्ली पैरललाइज्ड, विशाल-डेटा-स्तरीय टास्क इस तरह से विशेष रूप से रैक कंप्यूटिंग (रैक में बनाए गए कई समान, अधिकतर तय किए गए मशीनों के साथ) के माध्यम से भी अधिक संशोधित किए जा सकते हैं, जो तीसरे लेवल को जोड़ते हैं - बहुत से कंप्यूटिंग यूनिट, प्रत्येक एक में बहुत सारे सीपीयूजीपीयूजीपीयू उपयोग करते हैं। बिटकॉइन "माइनर्स" में ऐसे सेटअप का उपयोग अधिकतर प्रक्रिया के लिए किया गया है।

कैश
ऐतिहासिक रूप से, सीपीयू ने हार्डवेयर-प्रबंधित सीपीयू कैश का उपयोग किया है, किन्तु पहले के जीपीयू केवल सॉफ्टवेयर-प्रबंधित स्थानीय यादें प्रदान करते थे। चूँकि, जैसे-जैसे सामान्य प्रयोजन के अनुप्रयोगों के लिए जीपीयू का उपयोग बढ़ रहा है, अत्याधुनिक जीपीयू को हार्डवेयर-प्रबंधित बहु-स्तरीय कैश के साथ डिज़ाइन किया जा रहा है, जिसने जीपीयू को मुख्यधारा कंप्यूटिंग की ओर बढ़ने में सहायता की है। उदाहरण के लिए, जीफोर्स 200 श्रृंखला GT200 आर्किटेक्चर जीपीयू में L2 कैश की सुविधा नहीं थी, Fermi (माइक्रोआर्किटेक्चर) जीपीयू में 768 KiB अंतिम-स्तर कैश है, केप्लर (माइक्रोआर्किटेक्चर) जीपीयू में 1.5 MiB अंतिम-स्तर कैश है, मैक्सवेल (माइक्रोआर्किटेक्चर) जीपीयू में 2 MiB अंतिम-स्तर कैश है, और पास्कल (माइक्रोआर्किटेक्चर) जीपीयू में 4 MiB अंतिम-स्तर कैश है।

फ़ाइल पंजीकृत करें
जीपीयू में बहुत बड़े रजिस्टर फ़ाइल होते हैं, जिससे उन्हें संदर्भ-स्विचिंग लेटेंसी को कम करने की अनुमति होती है। रजिस्टर फ़ाइल का आकार भी विभिन्न जीपीयू पीढ़ियों में बढ़ रहा है, जैसे मैक्सवेल (जीएम200), पैस्कल और वोल्टा जीपीयू में कुल रजिस्टर फ़ाइल का आकार 6 MiB, 14 MiB और 20 MiB है। तुलना में, सीपीयू पर रजिस्टर फ़ाइल का आकार छोटा होता है, सामान्यतः किलोबाइटों या सैंकड़ों किलोबाइटों का होता है।

ऊर्जा दक्षता
जीपीयू की उच्च प्रदर्शन का भुगतान उच्च विद्युत खपत की रूप में होता है, जिसकी पूर्ण भार में वास्तव में पीसी सिस्टम के शेष हिस्से के समान शक्ति होती है। पास्कल श्रृंखला जीपीयू (टेस्ला P100) की अधिकतम बिजली खपत 250W निर्दिष्ट की गई थी।

स्ट्रीम प्रोसेसिंग
जीपीयू विशेष रूप से ग्राफिक्स के लिए डिज़ाइन किए गए हैं और इसलिए ऑपरेशन और प्रोग्रामिंग में बहुत प्रतिबंधक होते हैं। इनके डिज़ाइन के कारण, जीपीयू केवल उन समस्याओं के लिए प्रभावी हैं जो स्ट्रीम प्रोसेसिंग का उपयोग करके हल किए जा सकती हैं और हार्डवेयर केवल कुछ विशेष तरीकों में प्रयोग किया जा सकता है। निम्नलिखित चर्चा, जिसमें वर्टेक्स, फ्रेगमेंट्स और टेक्स्चर्स का उल्लेख है, मुख्य रूप से ग्राफिक्स API (ओपेनजीएल या डायरेक्टएक्स) का उपयोग करके सामान्य-उद्देशीय गणना को करने के लिए किया जाने वाले पुराने जीपीयू प्रोग्रामिंग के प्रति है, जहां CUDA (एनविडिया, 2007) और ओपनसीएल (विक्रेता-निर्दिष्ट, 2008) सामान्य-उद्देशीय कंप्यूटिंग API की प्रस्तावना से, नए जीपीयू कोडों में अब गणना को ग्राफिक्स प्राथमिकियों के साथ मानचित्र करना आवश्यक नहीं होता। जीपीयू के स्ट्रीम प्रोसेसिंग की प्रकृति APIs का उपयोग किये जाने पर भी स्थायी रहती है। (उदाहरण के लिए, देखें) जीपीयू केवल स्वतंत्र वर्टेक्स और फ्रेगमेंट्स को प्रोसेस कर सकते हैं, लेकिन उन्हें परालल ढंग से कई तत्वों का प्रोसेस कर सकते हैं। यह खासतौर पर उपयुक्त होता है जब प्रोग्रामर बहुत सारे वर्टेक्स या फ्रेगमेंट्स को एक ही तरीके से प्रोसेस करना चाहता है। इस मायने में, जीपीयू स्ट्रीम प्रोसेसर्स हैं - प्रोसेसर्स जो एक बार में एक स्ट्रीम में बहुत सारे रेकर्ड्स पर एक कर्नल को चला कर पारलेल में काम कर सकते हैं। स्ट्रीम सामान्य रूप से एक सेट होती है जिसमें समान गणना की आवश्यकता होती है। स्ट्रीम्स डेटा पैरालेलिज़म प्रदान करते हैं। कर्नेल की गणना करें वे फ़ंक्शंस होते हैं जिन्हें प्रत्येक स्ट्रीम में प्रत्येक तत्व पर लागू किया जाता है। जीपीयू में, वर्टेक्स और फ्रेगमेंट्स स्ट्रीम में तत्व होते हैं और वर्टेक्स और फ्रेगमेंट शेडर्स उन पर चलाए जाने वाले कर्नल्स होते हैं। प्रत्येक तत्व के लिए, हम केवल इनपुट से पढ़ सकते हैं, इस पर कार्यवाही कर सकते हैं, और आउटपुट में लिख सकते हैं। एकाधिक इनपुट और एकाधिक आउटपुट रखने की अनुमति है, किन्तु मेमोरी का टुकड़ा कभी भी पढ़ने योग्य और लिखने योग्य नहीं होता है। अंकगणितिक घनत्व को मेमोरी संचयित करने के लिए प्रदर्शित ओपरेशनों की संख्या के रूप में परिभाषित किया जाता है। जीपीयू अनुप्रयोगों के लिए उच्च अंकगणितिक घनत्व महत्वपूर्ण होता है अन्यथा मेमोरी एक्सेस लेटेंसी गणना की गति को सीमित कर देगी। आदर्श जीपीयू अनुप्रयोगों में बड़े डेटा सेट, उच्च पैराललिस्म, और डेटा तत्वों के बीच न्यूनता होती है।

कम्प्यूटेशनल संसाधन
जीपीयू पर विभिन्न प्रकार के गणनात्मक संसाधन होते हैं: वास्तव में, प्रोग्राम फ्रेमबफर के अतिरिक्त आउटपुट के लिए लिखने योग्य टेक्स्चर का प्रयोग कर सकता है। इसे या तो टेक्स्चर में रेंडर करने (RTT), बैकबफर को टेक्स्चर में कॉपी करने और उसे बैकबफर से बाप्रत्येक आने के लिए उपयोग करने (RTBCTT), या नवीनतम स्ट्रीम-आउट के माध्यम से किया जा सकता है।
 * प्रोग्राम करने योग्य प्रोसेसर - वर्टेक्स, प्रिमिटिव, फ्रैगमेंट और मुख्य रूप से कंप्यूट पाइपलाइन, जो प्रोग्रामर को डेटा स्ट्रीम पर कर्नल चलाने की अनुमति देते हैं।
 * रैस्टराइज़र - फ्रैगमेंट्स बनाता है और पर-वर्टेक्स स्थिरांक जैसे टेक्स्चर संयोजनों और रंग को इंटरपोलेट करता है।
 * बनावट इकाई - केवल पढ़ने योग्य मेमोरी इंटरफ़ेस
 * फ़्रेमबफ़र - केवल-लिखने योग्य मेमोरी इंटरफ़ेस

प्रवाह जैसी बनावट
जीपीयू में स्ट्रीम को लेने के लिए सबसे सामान्य रूप 2D ग्रिड होता है क्योंकि यह जीपीयू में निर्मित रेंडरिंग मॉडल के साथ प्राकृतिक रूप से मिलता है। बहुत सी गणनाएं प्राकृतिक रूप से ग्रिड में मानचित्र हो जाती हैं: आव्यूह बीजगणित, छवि प्रसंस्करण, भौतिक आधारित अनुकरण, और इसी तरह की अनुकरण।

चूँकि बनावट का उपयोग मेमोरी के रूप में किया जाता है, टेक्स्चर लुकअप्स फिर मेमोरी रीड के रूप में उपयोग किए जाते हैं। इस कारण से कुछ ऑपरेशन जीपीयू द्वारा स्वतः किए जा सकते हैं।

कर्नल
कंप्यूट कर्नेल को लूप (कंप्यूटिंग) के शरीर के रूप में माना जा सकता है। उदाहरण के लिए, सीपीयू पर ग्रिड पर काम करने वाले प्रोग्रामर के पास ऐसा कोड हो सकता है जो इस प्रकार दिखता है: जीपीयू पर, प्रोग्रामर केवल कर्नल के रूप में लूप के शरीर को और किस डेटा पर लूप चलाने के लिए ज्यामिति प्रसंस्करण को निमंत्रण करके निर्दिष्ट करता है।

प्रवाह नियंत्रण
वर्तमान भाषाओं में प्रवाह नियंत्रण इफ-थेन-एल्स फॉर तथा व्हिले प्रकार के लूप का उपयोग करके फंक्शन की फ्लो नियंत्रण कर सकते हैं। ऐसे फ्लो नियंत्रण संरचनाएं हाल ही में जीपीयू में जोड़ी गई हैं। कंडीशनल राइट्स को योग्य रीति से निर्मित फंक्शन/बिट ऑपरेशन के माध्यम से किया जा सकता है, लेकिन लूपिंग और कंडीशनल ब्रांचिंग का उपयोग नहीं हो सकता था।

हाल के जीपीयू ब्रांचिंग को अनुमति देते हैं, लेकिन सामान्यतः इसमें परफ़ॉर्मेंस दंडनीयता होती है। ब्रांचिंग का उपयोग सामान्य रूप से आंतरिक लूप में बचना चाहिए, चाहे वह सीपीयू या जीपीयू कोड में हो, और यदि हार्डवेयर समर्थन उपलब्ध नहीं है तो स्थिर ब्रांच निर्धारण, पूर्व-गणना, प्रेडिकेशन, लूप विभाजन और जेड-कल के विभिन्न तरीके का उपयोग किया जा सकता है।

मानचित्र
मानचित्र ऑपरेशन सरल रूप से स्ट्रीम में प्रत्येक तत्व पर दिए गए फंक्शन (कर्नल) को लागू करता है। साधारण उदाहरण है स्ट्रीम में प्रत्येक मान को स्थिरांक (छवि की चमक बढ़ाना) से गुणा करना है। मानचित्र संचालन को जीपीयू पर सरलता से लागू किया जा सकता है। प्रोग्रामर स्क्रीन पर प्रत्येक पिक्सेल के लिए टुकड़ा उत्पन्न करता है और प्रत्येक पर टुकड़ा प्रोग्राम लागू करता है। समान आकार की परिणाम स्ट्रीम आउटपुट बफ़र में संग्रहीत होती है।

कम करें
कुछ गणनाएं बड़े स्ट्रीम से छोटे स्ट्रीम की गणना करने की आवश्यकता होती है (संभवतः केवल तत्व की स्ट्रीम)। इसे स्ट्रीम का संक्षेपण कहा जाता है। सामान्य रूप से, संक्षेपण को कई चरणों में पूरा किया जा सकता है। पिछले चरण के परिणाम को वर्तमान चरण के लिए इनपुट के रूप में उपयोग किया जाता है और जिस सीमा के अधीन ऑपरेशन लागू किया जाता है, वह सीमा कम होती जाती है जब तक कि अंत में केवल स्ट्रीम तत्व बचता है।

स्ट्रीम फ़िल्टरिंग
स्ट्रीम फ़िल्टरिंग मूल रूप से गैर-समान्य संक्षेपण होता है। फ़िल्टरिंग में स्ट्रीम से कुछ मापदंडों पर आधारित तत्वों को हटाना सम्मिलित होता है।

स्कैन
स्कैन ऑपरेशन, जिसे समानांतर उपसर्ग योग भी कहा जाता है, सदिश (स्ट्रीम) को डेटा तत्वों और (विचित्र) जुड़ावी बाइनरी फ़ंक्शन '+' के साथ और पहचान तत्व 'i' के साथ लेता है। यदि इनपुट [a0, a1, a2, a3, ...] है, तो विशेष स्कैन आउटपुट [i, a0, a0 + a1, a0 + a1 + a2, ...] उत्पन्न करता है, जबकि समावेशी स्कैन आउटपुट [a0, a0 + a1, a0 + a1 + a2, a0 + a1 + a2 + a3, ...] उत्पन्न करता है और अस्तित्व की आवश्यकता नहीं होती है। यदि पहली नजर में यह ऑपरेशन स्रोतिया रूप से विकल्प लगता है, तो कुशल समानांतर स्कैन एल्गोरिदम संभव है और इन्हें ग्राफिक्स प्रोसेसिंग यूनिटों पर लागू किया गया है। स्कैन ऑपरेशन में उदाहरण के लिए, क्विकसॉर्ट और स्पार्स आव्यूह -सदिश गुणन का उपयोग होता है।

बिखेरना
स्कैटर ऑपरेशन सबसे प्राकृतिक रूप से वर्टेक्स प्रोसेसर पर परिभाषित होता है। वर्टेक्स प्रोसेसर वर्टेक्स की स्थिति को समायोजित कर सकता है, जिससे प्रोग्रामर को नियंत्रित होता है कि ग्रिड पर डेटा कहाँ जमा की जाती है। अन्य विस्तार भी संभव हैं, जैसे कि वर्टेक्स द्वारा प्रभावित फील्ड कितना बड़ा होता है।

फ़्रैगमेंट प्रोसेसर सीधी स्कैटर ऑपरेशन को संचालित नहीं कर सकता है क्योंकि फ्रैगमेंट के निर्माण के समय फ्रेगमेंट की स्थान निश्चित होती है और इसे प्रोग्रामर द्वारा बदला नहीं जा सकता है। चूंकि, कभी-कभी अभिकल्पित स्कैटर ऑपरेशन को फिर से रूपांतरित या दूसरे गैदर चरण के साथ लागू किया जा सकता है। स्कैटर अनुमानित कार्यान्वयन में सबसे पहले आउटपुट मूल्य और आउटपुट पता उत्पन्न करता है। तत्कालीन गैदर ऑपरेशन उपयोग करता है पता समानताएं करने के लिए, जिससे देखा जा सकता है कि क्या आउटपुट मूल्य वर्तमान आउटपुट स्लॉट से मिलता है।

समर्पित कंप्यूट कर्नल में, स्कैटर को इंडेक्सड राइट्स द्वारा प्रदर्शित किया जा सकता है।

इकट्ठा करें
इकट्ठा करना (सदिश संबोधन) बिखराव का विपरीत है। स्कैटर मानचित्र के अनुसार तत्वों को पुन: व्यवस्थित करने के बाद, इकट्ठा किए गए मानचित्र स्कैटर के अनुसार तत्वों के क्रम को पुनर्स्थापित कर सकता है। समर्पित कंप्यूट कर्नेल में, अनुक्रमित रीड्स द्वारा इकट्ठा किया जा सकता है। अन्य शेडर्स में, इसे टेक्सचर-लुकअप के साथ प्रदर्शित किया जाता है।

वर्गीकरण
सॉर्ट ऑपरेशन अव्यवस्थित तत्वों का व्यवस्थित तत्व सेट में परिवर्तित करता है। जीपीयू पर सबसे सामान्य अमल दिशावर्त सॉर्ट का उपयोग करता है जो इंटीजर और फ्लोटिंग पॉइंट डेटा के लिए होता है और सामान्य तुलनायोग्य डेटा के लिए कोर्स-ग्रेन्ड मर्ज़ सॉर्ट और फाइन-ग्रेन्ड सॉर्टिंग नेटवर्क का उपयोग करता है।

सर्च
सर्च ऑपरेशन प्रोग्रामर को स्ट्रीम में दिए गए निर्दिष्ट तत्व को ढूंढने, या संभवतः किसी निर्दिष्ट तत्व के पड़ोसियों को ढूंढने की अनुमति देता है। जिस स्थिति में डेटाबेस खोजों में इसका बहुत उपयोग किया जाता है। जीपीयू का उपयोग किसी व्यक्तिगत तत्व की खोज को तेज़ करने के लिए नहीं किया जाता है, किंतु इसे समानांतर रूप से कई सर्चें चलाने के लिए उपयोग किया जाता है। सामान्यतः सर्च मेथड के रूप में सॉर्टेड तत्वों पर बाइनरी सर्च का उपयोग किया जाता है।

डेटा संरचनाएं
जीपीयू पर विभिन्न प्रकार की डेटा संरचनाओं का प्रतिनिधित्व किया जा सकता है:


 * सघन सारणी डेटा संरचना
 * विरल आव्यूह (विरल सरणी) –  स्थिर या गतिशील
 * अनुकूली संरचनाएं (संघ प्रकार)

अनुप्रयोग
निम्नलिखित कुछ फील्ड हैं जहां सामान्य प्रयोजन कंप्यूटिंग के लिए जीपीयू का उपयोग किया गया है:


 * स्वचालित समानांतरीकरण
 * कम्प्यूटेशनल भौतिकी और भौतिकी इंजन (सामान्यतः न्यूटोनियन भौतिकी मॉडल पर आधारित)
 * कॉनवे का गेम ऑफ लाइफ, कपड़ा अनुकरण, यूलर समीकरणों के समाधान द्वारा द्रव असंपीड्य प्रवाह (द्रव गतिशीलता) या नेवियर-स्टोक्स समीकरण
 * सांख्यिकीय भौतिकी
 * आइसिंग मॉडल
 * फिल्टर गेज सिद्धांत
 * विभाजन (छवि प्रसंस्करण) – 2डी और 3डी
 * स्तर निर्धारित करने के विधि
 * परिकलित टोमोग्राफी पुनर्निर्माण
 * फास्ट फूरियर ट्रांसफॉर्म
 * जीपीयू सीखना – यंत्र अधिगम और डेटा खनन गणना, उदाहरण के लिए, सॉफ़्टवेयर BIDMach के साथ
 * k-निकटतम पड़ोसी एल्गोरिथ्म
 * फजी लॉजिक
 * टोन मैपिंग
 * ऑडियो सिग्नल प्रोसेसिंग
 * अंकीय संकेत प्रक्रिया (डीएसपी) के लिए जीपीयू का उपयोग करने के लिए ऑडियो और ध्वनि प्रभाव प्रसंस्करण
 * एनालॉग सिग्नल प्रोसेसिंग
 * भाषण प्रसंस्करण
 * डिजिटल इमेज प्रोसेसिंग
 * वीडियो प्रोसेसिंग
 * हार्डवेयर ने वीडियो डिकोडिंग और पोस्ट-प्रोसेसिंग को त्वरित किया
 * मोशन मुआवज़ा (एमओ कॉम्प)
 * व्युत्क्रम असतत कोसाइन परिवर्तन (iDCT)
 * वेरिएबल-लेंथ डिकोडिंग (वीएलडी), हफ़मैन कोडिंग
 * व्युत्क्रम परिमाणीकरण (आईक्यू, बुद्धिलब्धि के साथ भ्रमित न हों)
 * इन-लूप डीब्लॉकिंग
 * बिटस्ट्रीम प्रोसेसिंग (सीएवीएलसी/सीएबीएसी) इस कार्य के लिए विशेष प्रयोजन हार्डवेयर का उपयोग कर रही है क्योंकि यह क्रमिक कार्य है जो नियमित जीपीजीपीयू गणना के लिए उपयुक्त नहीं है।
 * deinterlacing
 * स्थानिक-अस्थायी डिइंटरलेसिंग
 * शोर में कमी
 * किनारा एनहांसमेंट
 * रंग सुधार
 * हार्डवेयर त्वरित वीडियो एन्कोडिंग और प्री-प्रोसेसिंग
 * वैश्विक चमक – किरण अनुरेखण (ग्राफिक्स), फोटॉन मैपिंग, रेडियोसिटी (कंप्यूटर ग्राफिक्स) अन्य के मध्य, उपसतह प्रकीर्णन
 * ज्यामितीय कंप्यूटिंग – रचनात्मक ठोस ज्यामिति, दूरी फील्ड, टकराव का पता लगाना, पारदर्शिता गणना, छाया निर्माण
 * वैज्ञानिक कंप्यूटिंग
 * मोंटे कार्लो प्रकाश प्रसार का अनुकरण
 * मौसम की भविष्यवाणी
 * जलवायु अनुसंधान
 * जीपीयू पर आणविक मॉडलिंग नाम = हसन खोंडकर एस. 2014 पीपी. 612-17
 * क्वांटम यांत्रिक भौतिकी
 * खगोल भौतिकी

इलेक्ट्रॉनिक डिज़ाइन स्वचालन स्वचालन
 * जैव सूचना विज्ञान
 * कम्प्यूटेशनल वित्त
 * मेडिकल इमेजिंग
 * क्लिनिकल निर्णय समर्थन प्रणाली (सीडीएसएस)
 * कंप्यूटर दृष्टि
 * डिजिटल सिग्नल प्रोसेसिंग / सिग्नल प्रोसेसिंग
 * नियंत्रण इंजीनियरिंग
 * गतिविधि अनुसंधान
 * इसका कार्यान्वयन: संसाधन बाधित परियोजना शेड्यूलिंग समस्या को हल करने वाला जीपीयू टैबू अविष्कार एल्गोरिदम गिटहब पर निःशुल्क उपलब्ध है; नर्स शेड्यूलिंग समस्या को हल करने वाला जीपीयू एल्गोरिदम GitHub पर निःशुल्क उपलब्ध है।
 * न्यूरल नेटवर्क्स
 * डेटाबेस संचालन
 * कम्प्यूटेशनल तरल सक्रिय विशेष रूप फिल्टर बोल्ट्ज़मैन विधियाँ विधियों का उपयोग करते हुए
 * क्रिप्टोग्राफी और क्रिप्ट विश्लेषण
 * प्रदर्शन मॉडलिंग: जीपीयू पर कम्प्यूटेशनल रूप से गहन कार्य<संदर्भ नाम = हसन खोंडकर एस. 2014 पीपी. 612-17 />
 * इनका कार्यान्वयन: एमडी6, उच्च एन्क्रिप्शन मानक (एईएस), डेटा एन्क्रिप्शन मानक (डीईएस), आरएसए (एल्गोरिदम), अण्डाकार वक्र क्रिप्टोग्राफी (ईसीसी)
 * पासवर्ड क्रैक करना
 * क्रिप्टोकोर्रेंसी लेनदेन प्रसंस्करण (खनन) (बिटकॉइन नेटवर्क#खनन)
 * एंटीवायरस सॉफ्टवेयर
 * अतिक्रमण पता चलना
 * सेटी@होम, आइंस्टीन@होम जैसी वितरित कंप्यूटिंग परियोजनाओं के लिए कंप्यूटिंग शक्ति बढ़ाएँ

जैव सूचना विज्ञान
जैव सूचना विज्ञान में जीपीजीपीयू का उपयोग:

आण्विक गतिशीलता
† प्रत्याशित गति बढ़ाव सिस्टम कॉन्फ़िगरेशन पर अत्यधिक निर्भर रखते हैं। जीपीयू प्रदर्शन, मल्टी-कोर x86 सीपीयू सॉकेट के विरूद्व- समानता की गई है। जीपीयू प्रदर्शन को जीपीयू समर्थित सुविधाओं पर बेंचमार्क किया गया है और कर्नेल प्रदर्शन समानता के लिए कर्नेल (छवि प्रसंस्करण) हो सकता है। इसके लिए उपयोग किए गए कॉन्फ़िगरेशन के विवरण के लिए, अनुप्रयोग वेबसाइट को देखें। स्पीडअप्स न्विडिया की इनहाउस टेस्टिंग या आईएसवी के डाक्यूमेंटेशन के अनुसार हैं।

इस एप्लिकेशन के लिए नवीडिया द्वारा सिफारिश की गई जीपीयू: ‡ Q=क्वाड्रो जीपीयू, T=टेस्ला जीपीयू। विकासक या आईएसवी से प्रमाणिकरण सूचना प्राप्त करने के लिए संपर्क करें।

यह भी देखें

 * तेज़ द्वितीय
 * भौतिकी इंजन
 * उन्नत सिमुलेशन लाइब्रेरी
 * भौतिकी प्रसंस्करण इकाई (पीपीयू)
 * धातु के निकट
 * ऑडियो प्रोसेसिंग यूनिट
 * लारबी (माइक्रोआर्किटेक्चर)
 * एआई त्वरक
 * गहन शिक्षण प्रोसेसर (डीएलपी)
 * जीपीयूलिब