2008-10-20 17 views
138

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

  • "हैलो दुनिया" GPU समुदाय के बराबर क्या है?
  • प्रमुख जीपीयू विक्रेताओं के लिए जीपीयू प्रोग्रामिंग शुरू करने के लिए मैं कहां जाऊं, मैं कहां जाऊं?

-Adam

+1

क्या आप जीपीजीपीयू या ग्राफिक्स कोडिंग के बारे में बात कर रहे हैं? – Menkboy

+4

वह सीयूडीए (एनवीडिया जीपीयू के लिए एक एपीआई) और अन्य तकनीकों के बारे में बात कर रहा है। गैर ग्राफिक्स कोडिंग के लिए जीपीयू में उपलब्ध एफपीयू इकाइयों का उपयोग करना। – Wedge

+0

संदर्भ के लिए, पिछली पीढ़ी के GeForce 8800 में 128 स्ट्रीम प्रोसेसर हैं जो 1.3 गीगाहर्ट्ज पर चल रहे हैं, लाइन जीटीएक्स 280 के शीर्ष में 240 स्ट्रीम प्रोसेसर हैं, इन जीपीयू का सैद्धांतिक प्रदर्शन क्रमश: 0.5 और 0.9 टेराफ्लॉप्स है। – Wedge

उत्तर

56

चेक बाहर NVIDIA के द्वारा CUDA, IMO यह GPU प्रोग्रामिंग करने का सबसे आसान मंच है। पढ़ने के लिए बहुत सी शांत सामग्री हैं। http://www.nvidia.com/object/cuda_home.html

हैलो वर्ल्ड GPU का उपयोग करके गणना के किसी भी प्रकार करने के लिए किया जाएगा।

उम्मीद है कि मदद करता है।

13
  1. आप प्रोग्राम शिखर और पिक्सेल shaders कि सीधे के लिए GPU पर कोड के निष्पादन अनुमति देते हैं बफ़र्स कि कर रहे हैं तैयार किया जा हेरफेर मिलता है। ये भाषाएं (यानी ओपनजीएल के जीएल शेडर लैंग और हाई लेवल शेडर लैंग और डायरेक्टएक्स के समकक्ष ), सी शैली वाक्यविन्यास हैं, और वास्तव में उपयोग करने में आसान हैं। एचएलएसएल के कुछ उदाहरण XNA गेम स्टूडियो और डायरेक्ट एक्स के लिए here पाया जा सकता है। मेरे पास कोई सभ्य जीएलएसएल संदर्भ नहीं है, लेकिन मैं सुनिश्चित करता हूं कि बहुत कुछ है। ये शेडर भाषाओं में हेरफेर क्या ग्राफिक्स कार्ड पर एक प्रति-शिखर या प्रति पिक्सेल स्तर पर तैयार हो जाता है, सीधे , छाया, प्रकाश की तरह बातें कर रही है, और वास्तव में करने के लिए आसान खिलने करने की शक्ति का एक विशाल राशि देने लागू।
  2. दूसरी बात जो दिमाग में आती है openCL का उपयोग सामान्य प्रयोजन जीपीयू के नए लाइनों के लिए कोड करने के लिए कर रही है। मैं यह सुनिश्चित नहीं करता कि इसका उपयोग कैसे किया जाए, लेकिन मेरी समझ यह है कि ओपनसीएल आपको ग्राफिक्स कार्ड और सामान्य सीपीयू दोनों पर एक्सेस प्रोसेसर में सक्षम होने की शुरुआत देता है। यह अभी तक मुख्यधारा की तकनीक नहीं है, और ऐसा लगता है कि ऐप्पल द्वारा संचालित किया जाता है।
  3. CUDA एक गर्म विषय प्रतीत होता है। सीयूडीए जीपीयू पावर तक पहुंचने का एनवीडिया का तरीका है। Here कुछ परिचय हैं
3

प्रयास करें GPU++ और libSh

LibSh लिंक कैसे वे ग्राफिक्स पुरातन करने के लिए प्रोग्रामिंग भाषा के लिए बाध्य का अच्छा वर्णन है (और जाहिर है, पुरातन खुद को), और GPU ++ बताता है कि उसके सभी कोड उदाहरणों के साथ, दोनों के बारे में।

7

ATI Stream Computing SDK पर एक नज़र डालें। यह स्टैनफोर्ड में विकसित BrookGPU पर आधारित है।

भविष्य में सभी GPU कार्य को OpenCL का उपयोग करके मानकीकृत किया जाएगा। यह एक ऐप्पल प्रायोजित पहल है जो ग्राफिक्स कार्ड विक्रेता तटस्थ होगा।

6

सीयूडीए शुरू करने के लिए एक उत्कृष्ट ढांचा है। यह आपको सी में जीपीजीपीयू कर्नल लिखने देता है। कंपाइलर आपके कोड से जीपीयू माइक्रोक्रोड का उत्पादन करेगा और सीपीयू पर आपके नियमित कंपाइलर पर चलने वाली हर चीज भेज देगा। यह केवल एनवीआईडीआईए है और केवल 8-श्रृंखला कार्ड या बेहतर पर काम करता है। आप CUDA zone देख सकते हैं कि इसके साथ क्या किया जा सकता है। CUDA SDK में कुछ महान डेमो हैं। वास्तव में कोड लिखने के लिए एसडीके के साथ आने वाला दस्तावेज एक बहुत अच्छा प्रारंभिक बिंदु है। यह आपको एक मैट्रिक्स गुणा कर्नेल लिखने के माध्यम से चलेगा, जो शुरू करने के लिए एक महान जगह है।

8

मुझे लगता है कि दूसरों ने आपके दूसरे प्रश्न का उत्तर दिया है। पहले के रूप में, CUDA की "हैलो वर्ल्ड", मुझे नहीं लगता कि एक सेट मानक है, लेकिन व्यक्तिगत रूप से, मैं एक समांतर योजक (यानी एक प्रोग्राम जो एन पूर्णांक को प्रस्तुत करता है) की अनुशंसा करता हूं।

यदि आप एनवीआईडीआईए एसडीके में "कमी" उदाहरण देखते हैं, तो सतही रूप से सरल कार्य को कोलेस्ड रीड, मेमोरी बैंक टकराव और लूप अनोलिंग जैसे कई सीयूडीए विचारों को प्रदर्शित करने के लिए बढ़ाया जा सकता है।

अधिक जानकारी के लिए इस प्रस्तुति देखें:

http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf

3

हो सकता है कि आप इस GPGPU IDE, जो सामान्य GPU प्रयोगों के लिए अनावश्यक जटिलता छुपाता पसंद आएगा। वर्तमान में कर्नेल ओपनसीएल और/या जीएलएसएल शेडर्स के लिए प्रोग्राम किया जा सकता है।

+0

आपका लिंक टूटा हुआ है। – user

+0

लिंक अभी तय किया गया है –

5

OpenCL अन्य चीजों, जीपीयू के लिए उपयुक्त प्रोग्रामिंग कोड में सक्षम क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी बनाने का प्रयास है। यह किसी को यह जानने के बिना कोड लिखने की अनुमति देता है कि यह किस GPU पर चल रहा है, जिससे विशेष रूप से कई प्रकार के जीपीयू को लक्षित किए बिना कुछ GPU की शक्ति का उपयोग करना आसान हो जाता है। मुझे संदेह है कि यह देशी जीपीयू कोड के रूप में प्रदर्शन करने वाला नहीं है (या जीपीयू निर्माताओं के रूप में मूल के रूप में देशी) लेकिन ट्रेडऑफ कुछ अनुप्रयोगों के लिए इसके लायक हो सकता है।

यह अभी भी इसके अपेक्षाकृत प्रारंभिक चरणों (1.1 इस उत्तर के रूप में) में है, लेकिन उद्योग में कुछ कर्षण प्राप्त हुआ है - उदाहरण के लिए यह ओएस एक्स 10.5 और उससे ऊपर के आधार पर समर्थित है।

3

सीयूडीए या ओपनसीएल में प्रवेश किए बिना जीपीयू प्रोग्रामिंग में प्रवेश करने का एक और आसान तरीका यह है कि इसे OpenACC के माध्यम से करना है।

ओपीएसीसी जीपीयू को काम भेजने के लिए कंपाइलर निर्देशों (जैसे #pragma acc kernels) के साथ ओपनएमपी की तरह काम करता है। उदाहरण के लिए, यदि आप एक बड़े पाश है (केवल बड़ों वास्तव में लाभ):

int i; 
float a = 2.0; 
float b[10000]; 
#pragma acc kernels 
for (i = 0; i < 10000; ++i) b[i] = 1.0f; 
#pragma acc kernels 
for (i = 0; i < 10000; ++i) { 
    b[i] = b[i] * a; 
} 

संपादित करें: दुर्भाग्य से, केवल PGI संकलक वास्तव में OpenACC अभी, NVIDIA GPU कार्ड के लिए समर्थन करता है।

3

यदि आप MATLAB का उपयोग करते हैं, तो तकनीकी कंप्यूटिंग (मैट्रिक्स कंप्यूटेशंस और भारी गणित/संख्या क्रंचिंग) के लिए GPU का उपयोग करना बहुत आसान हो जाता है। मुझे गेमिंग के बाहर जीपीयू कार्ड के उपयोग के लिए यह उपयोगी लगता है।

http://www.mathworks.com/discovery/matlab-gpu.html

1

मैं भी इस विषय और समानांतर प्रोग्रामिंग में दिलचस्पी रखता हूँ: नीचे दिए गए लिंक की जाँच करें। और मुझे निम्नलिखित link मिल गया, कृपया Udacity.com पर एक नज़र डालें!

संबंधित मुद्दे