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

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

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

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

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

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

प्रमुख स्वामित्व ढांचा एनवीडिया सीयूडीए है। एनवीडिया ने 2006 में CUDA, सॉफ्टवेयर डेवलपमेंट किट (एसडीके) और अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) लॉन्च किया, जो GeForce 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-आयामी) है। उदाहरणों में शीर्ष, रंग, सामान्य सदिश और बनावट निर्देशांक सम्मिलित हैं। कई अन्य एप्लिकेशन इसका अच्छा उपयोग कर सकते हैं, और उनके उच्च प्रदर्शन के कारण, सदिश निर्देश, जिसे एकल निर्देश, एकाधिक डेटा (एकल निर्देश, एकाधिक डेटा) कहा जाता है, लंबे समय से सीपीयू पर उपलब्ध हैं।

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

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

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

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

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

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

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

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

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

प्रवाह नियंत्रण
अनुक्रमिक कोड में यदि-तब-अन्यथा कथनों और लूप के विभिन्न रूपों का उपयोग करके प्रोग्राम के प्रवाह को नियंत्रित करना संभव है। ऐसी प्रवाह नियंत्रण संरचनाएँ हाल ही में जीपीयू में जोड़ी गई हैं। अंकगणित/बिट संचालन की उचित रूप से तैयार की गई श्रृंखला का उपयोग करके सशर्त लेखन किया जा सकता है, किन्तु लूपिंग और सशर्त शाखा संभव नहीं थी।

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

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

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

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

स्कैन
स्कैन ऑपरेशन, जिसे प्रीफ़िक्स सम#पैरेलल एल्गोरिथम भी कहा जाता है, डेटा तत्वों के सदिश (स्ट्रीम) और पहचान तत्व '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, उच्च एन्क्रिप्शन मानक (एईएस), डेटा एन्क्रिप्शन मानक (डीईएस), आरएसए (एल्गोरिदम), अण्डाकार वक्र क्रिप्टोग्राफी (ईसीसी)
 * पासवर्ड क्रैक करना
 * cryptocurrency लेनदेन प्रसंस्करण (खनन) (बिटकॉइन नेटवर्क#खनन)
 * एंटीवायरस सॉफ्टवेयर
 * घुसपैठ का पता लगाना
 * SETI@home, Einstein@home जैसी वितरित कंप्यूटिंग परियोजनाओं के लिए कंप्यूटिंग शक्ति बढ़ाएँ

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

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

‡ Q=क्वाड्रो जीपीयू, T=टेस्ला जीपीयू। एनवीडियाअविष्कार द्वारा इस अनुप्रयोग के लिए अनुशंसित जीपीयू। प्रमाणन सूचना प्राप्त करने के लिए डेवलपर या ISV से जाँच करें।

यह भी देखें

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