2012-06-12 12 views
16

मुझे पता है कि सवाल केवल आंशिक रूप से प्रोग्रामिंग से संबंधित है क्योंकि उत्तर मैं मूल रूप से इन दो प्रश्नों से प्राप्त करना चाहता हूं:सीपीयू के रूप में जीपीयू का उपयोग क्यों नहीं करते?

सीपीयू कोर संख्या इतनी कम क्यों है (बनाम GPU)? और हम CPUs के बजाय GPUs का उपयोग क्यों नहीं कर रहे हैं, केवल GPUs या केवल CPUs? (मुझे पता है कि जीपीयू विशिष्ट हैं जबकि सीपीयू बहु-कार्य आदि के लिए अधिक हैं)। मुझे यह भी पता है कि परिशुद्धता और कैश क्षमता के साथ मेमोरी (होस्ट बनाम जीपीयू) सीमाएं हैं। लेकिन, हार्डवेयर तुलना की अवधि में, हाई-एंड से उच्च-अंत CPU/GPU तुलना GPUs अधिक प्रदर्शन करने वाले हैं।

तो मेरे सवाल है: हम ओएस, अनुप्रयोगों के लिए CPU की बजाय GPUs का उपयोग कर सकते हैं, आदि

कारण मैं इस सवाल पूछ रहा हूँ क्योंकि मैं कारण है कि मौजूदा कंप्यूटर अभी भी प्रयोग कर रहे हैं जानना चाहूंगा दो मुख्य मेमोरी और कैशिंग सिस्टम (सीपीयू/जीपीयू) के साथ 2 मुख्य प्रसंस्करण इकाइयां (सीपीयू/जीपीयू) भले ही यह प्रोग्रामर कुछ ऐसा न हो।

+2

संक्षिप्त उत्तर: सामान्य सीपीयू बनाम विशेष सीपीयू। – asawyer

+1

मैं सहमत हूं, लेकिन फिर क्यों "सामान्य उद्देश्य जीपीयू" नहीं बनाते? प्रोग्रामर को सीपीयू (सी ++, मैटलैब, पायथन इत्यादि) और जीपीयू (ओपनजीएल, ओपनसीएल, डायरेक्टएक्स, इत्यादि) भाषाओं और एपीयू दोनों को विशेष बनाम सामान्य उद्देश्य के कारण सीखना है, जबकि एक सामान्य उद्देश्य प्रसंस्करण प्रणाली दोनों ही करेगी। – Maiss

+1

मैंने थोड़ी देर पहले एक संबंधित प्रश्न पूछा जिसमें कुछ अच्छे प्रतिक्रियाएं हैं ... http://stackoverflow.com/questions/1126989/what-future-does-the-gpu-have-in-computing –

उत्तर

10

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

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

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

+1

चाहे सीपीयू में अधिक कोर लाभकारी है, गणना पर निर्भर करता है और समांतरता – Attila

+0

धन्यवाद AUAnonymous के लिए कितना सक्षम है। क्या आप विस्तार से बता सकते हैं कि बहु-कोर (>> 10 कोर) सीपीयू प्रदर्शन को कैसे खराब कर देगा? मैं ओपनसीएल प्रोग्रामिंग से जो कुछ सीखा, उसके कारण मैं उत्सुक हूं। एकमात्र सीमा मेमोरी एक्सेस (गति और # तलाशने) है, लेकिन कैशिंग/मेमोरी के 4 स्तर होने से उस समस्या को हल किया जाएगा, नहीं? – Maiss

+1

अपने प्रश्न का प्रयास करने और उत्तर देने के लिए, यह केवल कार्य के आधार पर प्रदर्शन को कम कर सकता है, लेकिन आम तौर पर, समान लागत मानते हुए, अधिक कोर वाले सीपीयू में कम से कम घड़ी की गति कम होगी। इसका मतलब यह है कि यदि किसी कार्य को समांतर प्रसंस्करण से बहुत लाभ नहीं होता है, तो कम कोर वाले सीपीयू कार्य को तेज गति से करने के लिए तेज़ी से काम करने में सक्षम होंगे। ध्यान देने योग्य एक और बात यह है कि एक कार्यक्रम को कई कोरों का लाभ उठाने के लिए लिखा नहीं गया है, तो अतिरिक्त कोर लगभग "बर्बाद" होंगे क्योंकि उनका कुशलता से उपयोग नहीं किया जा रहा है। – lyallcooper

12

वर्तमान जीपीयू में आधुनिक सीपीयू की कई सुविधाएं नहीं हैं जिन्हें आम तौर पर ओएस जैसी चीज़ों के लिए महत्वपूर्ण (महत्वपूर्ण, वास्तव में) माना जाता है।

बस उदाहरण के लिए, ओएस आमतौर पर प्रक्रियाओं को प्रबंधित करने के लिए वर्चुअल मेमोरी और पेजिंग का उपयोग करता है। पेजिंग ओएस को प्रत्येक प्रक्रिया को अपनी खुद की पता स्थान देने की अनुमति देता है, (लगभग) पूरी तरह से हर दूसरे प्रक्रिया से अलग है। कम से कम सार्वजनिक रूप से उपलब्ध जानकारी के आधार पर, अधिकांश जीपीयू पेजिंग का समर्थन नहीं करते हैं (या कम से कम ओएस की जरूरत नहीं है)।

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

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

+0

धन्यवाद जैरी, दोनों उत्तर: AUAnonymous और आपका अपडेट किया गया वह मैं था जिसे मैं ढूंढ रहा था। मैं इसकी सराहना करता हूं। – Maiss

0

आमतौर पर ऑपरेटिंग सिस्टम बहुत सरल होते हैं, यदि आप उनकी संरचना को देखते हैं। लेकिन समानांतर करने से गति में सुधार नहीं होगा, केवल कच्ची घड़ी की गति ही होगी।

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

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

अधिक जानकारी पर इस व्यापक सुपरसियर उत्तर here देखें।

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