2012-02-09 17 views
11

एक साधारण उदाहरण पर विचार करें: वेक्टर अतिरिक्त।ओपनसीएल सीपीयू डिवाइस बनाम जीपीयू डिवाइस

यदि मैं CL_DEVICE_TYPE_GPU के लिए कोई प्रोग्राम तैयार करता हूं, और मैं CL_DEVICE_TYPE_CPU के लिए एक ही प्रोग्राम बनाता हूं, तो उनके बीच क्या अंतर है (सिवाय इसके कि "सीपीयू प्रोग्राम" CPU पर चल रहा है, और "GPU प्रोग्राम" GPU पर चल रहा है)?

आपकी मदद के लिए धन्यवाद।

उत्तर

35

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

1) मेमोरी कॉपीिंग। जीपीयू उन डेटा पर भरोसा करते हैं जिन पर आप काम कर रहे हैं, और बाद में मेजबान को वापस पढ़ा जाता है। यह पीसीआई-ई पर किया जाता है, जो संस्करण 2.0/2.1 के लिए लगभग 5 जीबी/एस उत्पन्न करता है। सीपीयू बफर 'जगह में' का उपयोग कर सकते हैं - डीडीआर 3 में - CL_MEM_ALLOC_HOST_PTR या CL_MEM_USE_HOST_PTR ध्वज का उपयोग करके। यहां देखें: clCreateBuffer। यह कई कर्नेल के लिए बड़ी बाधाओं में से एक है।

2) घड़ी की गति। वर्तमान में सीपीयू की घड़ी की गति में जीपीएस पर एक बड़ा सीसा है। अधिकांश सीपीयू के लिए कम अंत में 2 गीगा, इन दिनों अधिकांश जीपीस के लिए शीर्ष अंत के रूप में 1 गीगा बनाम। यह एक कारक है जो वास्तव में छोटे वर्कलोड के लिए एक जीपीयू पर सीपीयू 'जीत' में मदद करता है।

3) समवर्ती 'धागे'। हाई-एंड जीपीयस में आमतौर पर उनके सीपीयू समकक्षों की तुलना में अधिक गणना इकाइयां होती हैं। उदाहरण के लिए, 6970 जीपीयू (केमैन) में 24 ओपनक्ल कंप्यूट इकाइयां हैं, इनमें से प्रत्येक को 16 सिम इकाइयों में बांटा गया है। अधिकांश शीर्ष डेस्कटॉप सीपीयू में 8 कोर हैं, और सर्वर सीपीयू वर्तमान में 16 कोर पर रुक गया है। (यूनिट गिनती की गणना करने के लिए cpu कोर मानचित्र 1: 1) ओपनक्ल में एक गणना इकाई डिवाइस का एक हिस्सा है जो शेष डिवाइस से अलग काम कर सकती है।

4) थ्रेड प्रकार। gpus में कई ग्राफिक-उन्मुख निर्देशों के साथ एक सिम वास्तुकला है। सीपीयू में उनके बहुत से क्षेत्र शाखा भविष्यवाणी और सामान्य गणना के लिए समर्पित हैं। एक सीपीयू में प्रत्येक कोर में एक सिम इकाई और/या फ्लोटिंग पॉइंट यूनिट हो सकती है, लेकिन ऊपर वर्णित केमैन चिप में 1536 इकाइयां हैं जिनके साथ प्रत्येक के लिए उपलब्ध जीपीयू निर्देश सेट है। एएमडी उन्हें स्ट्रीम प्रोसेसर कहते हैं, और ऊपर वर्णित प्रत्येक सिम इकाइयों में से 4 (24x16x4 = 1536) हैं। कोई सीपीयू में कई पाप (एक्स) या डॉट-उत्पाद-सक्षम इकाइयां नहीं होंगी जब तक कि निर्माता कुछ कैश मेमोरी या शाखा भविष्यवाणी हार्डवेयर को काटना नहीं चाहता। जीपीएस का सिम लेआउट शायद बड़े वेक्टर अतिरिक्त स्थितियों के लिए सबसे बड़ी 'जीत' है। यह भी अन्य विशेष कार्यों को एक बड़ा बोनस है।

5) मेमोरी बैंडविड्थ। डीडीआर 3 के साथ सीपीयू: ~ 17 जीबी/एस। हाई-एंड जीपीस> 100 जीबी/एस, 200 जीबी/एस की गति हाल ही में आम हो रही है। यदि आपका एल्गोरिदम पीसीआई-ई सीमित नहीं है (देखें # 1), तो जीपीयू कच्चे मेमोरी एक्सेस में सीपीयू को आगे बढ़ाएगा। एक जीपीयू में शेड्यूलिंग इकाइयां केवल उन कार्यों को चलाकर स्मृति विलंबता को छुपा सकती हैं जो स्मृति पहुंच पर प्रतीक्षा नहीं कर रही हैं। एएमडी इसे एक तरंगफ्रंट कहता है, एनवीडिया इसे एक वार्प कहते हैं। सीपीयू के पास एक बड़ी और जटिल कैशिंग प्रणाली है, जहां प्रोग्राम डेटा का पुन: उपयोग कर रहा है, उस मामले में अपनी स्मृति पहुंच के समय को छिपाने में मदद के लिए। आपके वेक्टर को समस्या जोड़ने के लिए, आप पीसीआई-ई बस द्वारा अधिक सीमित रहेंगे क्योंकि वेक्टर आमतौर पर केवल एक या दो बार उपयोग किए जाते हैं।

6) पावर दक्षता। एक जीपीयू (ठीक से उपयोग किया जाता है) आमतौर पर एक सीपीयू से अधिक विद्युत रूप से कुशल होगा। चूंकि सीपीयू घड़ी की गति में हावी है, इसलिए बिजली की खपत को कम करने के एकमात्र तरीकों में से एक चिप को नीचे की ओर देखना है। यह स्पष्ट रूप से लंबे गणना समय की ओर जाता है। ग्रीन 500 सूची में कई शीर्ष प्रणालियों में भारी जीपीयू तेज है। यहां देखें: green500.org

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