GPU प्रोग्रामिंग के लिए [बंद]


176

हर किसी के पास ग्राफिक्स कार्ड GPU के रूप में अपने डेस्कटॉप पर बड़े पैमाने पर समानांतर सुपर कंप्यूटर है।

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

-Adam


1
क्या आप GPGPU, या ग्राफिक्स कोडिंग के बारे में बात कर रहे हैं?
मेन्कबॉय

5
वह CUDA (nVidia GPUs के लिए एक एपीआई) और अन्य तकनीकों के बारे में बात कर रहा है। गैर-ग्राफिक्स कोडिंग के लिए GPU में उपलब्ध FPU इकाइयों का उपयोग करना।
वेज ऑक्ट

1
संदर्भ के लिए, एक अंतिम पीढ़ी के GeForce 8800 में 128 स्ट्रीम प्रोसेसर ~ 1.3 GHz पर काम कर रहे हैं, लाइन के एक शीर्ष GTX 280 में 240 स्ट्रीम प्रोसेसर हैं, इन GPU का सैद्धांतिक प्रदर्शन क्रमशः 0.5 और 0.9 TeraFLOPS है।
वेजेज

जवाबों:


70

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

नमस्कार दुनिया GPU का उपयोग करके किसी भी प्रकार की गणना करने के लिए होगी।

उम्मीद है की वो मदद करदे।


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

9

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

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

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

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


7

एटीआई स्ट्रीम कम्प्यूटिंग एसडीके पर एक नज़र डालें । यह स्टैनफोर्ड में विकसित BrookGPU पर आधारित है ।

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


7

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

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


6

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


5

CUDA या OpenCL में आए बिना, GPU प्रोग्रामिंग में आने का एक और आसान तरीका है, इसे OpenACC के माध्यम से करना

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

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;
}

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


3

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

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


3

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.