2015-03-19 15 views
13

मुझे GPU प्रोग्रामिंग का कोई ज्ञान नहीं है और मुझे इसका एक अवलोकन चाहिए। मुझे स्मार्टफोन के जीपीयू (एंड्रॉइड डिवाइस पर) पर काम कर रहे छवि प्रसंस्करण की एक परियोजना विकसित करनी होगी, लेकिन मुझे नहीं पता कि कहां से शुरू करना है।एंड्रॉइड डिवाइस पर जीपीयू प्रोग्रामिंग

1) प्रोग्रामिंग स्मार्टफ़ोन के जीपीयू और प्रोग्रामिंग अन्य जीपीयू (उदाहरण के लिए एनवीडिया गीफॉर्स 9) बराबर हैं?

2) मैंने जीपीयू के लिए गणना या ग्राफिक प्रोग्रामिंग के बारे में सुना: क्या अंतर है? क्या वे बराबर हैं?

3) मैंने पहले ही एंड्रॉइड ऐप्स विकसित करने के लिए ग्रहण कॉन्फ़िगर किया है: मुझे अन्य टूल्स की आवश्यकता है?

4) स्मार्टफ़ोन का जीपीयू प्रोग्रामिंग (एंड्रॉइड के लिए) डिवाइस स्वतंत्र है? सैमसंग एस 4, एलजी जी 3, और अन्य एंड्रॉइड डिवाइस के लिए यह वही है?

5) मुझे किस पुस्तकालय की आवश्यकता है? मैंने एनवीडिया के ओपनसीवी और टेग्रा पैक के बारे में सुना।

क्या आप इससे मेरी सहायता कर सकते हैं? इसके अलावा, क्या आप किसी भी लक्षित लिंक के साथ मेरी मदद कर सकते हैं?

उत्तर

1

एंड्रॉयड (एम्बेडेड सिस्टम्स के लिए ओपन ग्राफिक्स पुस्तकालय) OpenGL ES का उपयोग करता

OpenGL ES के विभिन्न संस्करण हैं। मैं 2.0 का उपयोग करने की सलाह देता हूं, लेकिन आप 1.0 या उच्चतर संस्करणों का भी उपयोग कर सकते हैं।

अधिकतर फ़ोन 2.0 का समर्थन करते हैं, आपके पास 1.0 से अधिक विकल्प और तेज़ हैं इसलिए सभी फोन 1.0 का समर्थन करते हैं और यहां तक ​​कि एंड्रॉइड सिमुलेटर इसका समर्थन करते हैं। यदि आप अपने ओपनजीएल ईएस 2.0 कोड का परीक्षण करना चाहते हैं तो आपको एक वास्तविक डिवाइस की आवश्यकता है।

ओपनजीएल सीखना मुश्किल है और इसमें कुछ समय लग सकता है। अवलोकन प्राप्त करने के लिए यहां एक अच्छा ट्यूटोरियल है: http://blog.db-in.com/all-about-opengl-es-2-x-part-1/

ऐप्पल स्मार्टफ़ोन ओपनजीएल ES का भी उपयोग करते हैं, इसलिए यदि आप इसे एंड्रॉइड के लिए सीखते हैं तो आप इसे आईफोन के लिए भी उपयोग कर सकते हैं।

और हाँ, सभी एंड्रॉइड डिवाइस ओपनजीएल का उपयोग करते हैं।

2

एंड्रॉइड में जीपीयू तक पहुंच प्राप्त करने का एक आसान तरीका OpenGL ES का उपयोग कर है। एंड्रॉइड एसडीके सभी ओपनजीएल ईएस को जावा https://www.khronos.org/opengles/sdk/docs/man/

ओपनजीएल ईएस आपको जीएलएसएल (ओपन जीएल छायांकन भाषा) में शेडर्स लिखने और रनटाइम पर जीपीयू पर संकलित करने की अनुमति देता है। https://www.opengl.org/documentation/glsl/

यह जीएलएसएल कोड सीधे जीपीयू पर चलता है।

OpenGL ES अधिक जानकारी के लिए एंड्रॉयड में यह Android डॉक्स http://developer.android.com/guide/topics/graphics/opengl.html

इस में पाया जा सकता है एक बहुत ही मूल दृष्टिकोण है। पुस्तकालयों का उपयोग पर पूरी तरह से निर्भर है कि वास्तव में क्या आप GPU

12

1) स्मार्टफोन के GPU प्रोग्रामिंग और उदाहरण के लिए अन्य GPU (Nvidia GeForce 9 प्रोग्रामिंग) के बराबर कर रहे हैं के साथ हासिल करना चाहते हैं?

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

उदाहरण के लिए, यदि आप Tegra K1/X1 उपकरणों पर CUDA कार्यक्रम करते हैं, कि लगभग एक ही हो सकता है के रूप में आप GeForce 9.

पर करना होगा लेकिन, यदि आप OpenCL का उपयोग करें, आपको सावधान रहने की जरूरत है । कुछ मोबाइल डिवाइस केवल ओपनसीएल एंबेडेड प्रोफाइल का समर्थन करते हैं, जिसका मतलब है कि डेस्कटॉप जीपीयू की तुलना में सुविधाएं सीमित हैं। यहां तक ​​कि यदि कुछ मोबाइल डिवाइस OpenCL पूर्ण प्रोफ़ाइल का समर्थन करते हैं, तो आपके पास अभी भी कम संसाधन हैं, इसलिए, कार्यक्रम को अभी भी मोबाइल प्लेटफॉर्म पर अनुकूलित करने के लिए संशोधित करने की आवश्यकता है।

2) मैं GPU के लिए गणना या ग्राफिक प्रोग्रामिंग के बारे में झुंड: अंतर क्या है? क्या वे बराबर हैं?

ग्राफिक्स प्रोग्रामिंग ग्राफिक्स प्रतिपादन पर अधिक केंद्रित है। लक्ष्य स्क्रीन पर कुछ आकर्षित करना है। फोन के लिए आपको आवश्यक प्रमुख एपीआई एंड्रॉइड के लिए ओपनजीएल ईएस, या आईओएस के लिए धातु, या विंडोज़ के लिए डीएक्स होगा।

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

3) मैंने पहले ही एंड्रॉइड ऐप्स विकसित करने के लिए ग्रहण कॉन्फ़िगर किया है: अन्य मुझे कौन से टूल्स चाहिए?

आपको निश्चित रूप से एंड्रॉइड एनडीके की आवश्यकता है। आपके पास मोबाइल डिवाइस के लिए ओपनसीएल पुस्तकालय, या एसडीके की आवश्यकता है।

4) स्मार्टफ़ोन का जीपीयू प्रोग्रामिंग (एंड्रॉइड के लिए) डिवाइस स्वतंत्र है? यह सैमसंग एस 4, एलजी जी 3, और अन्य एंड्रॉइड डिवाइस के लिए समान है?

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

ध्यान देने योग्य एक और बात यह है कि विशाल हार्डवेयर अंतर के कारण जीपीयू प्रोग्रामिंग आमतौर पर प्रदर्शन-पोर्टेबल नहीं होती है। तो एक फोन पर एक बहुत ही अनुकूलित अनुकूलित स्रोत कोड दूसरे फोन पर सबसे अच्छा नहीं हो सकता है।

5) मुझे किस लाइब्रेरी की आवश्यकता है? मैंने एनवीडिया के ओपनसीवी और टेग्रा पैक के बारे में बताया।

ओपनसीवी कंप्यूटर दृष्टि पुस्तकालय है। चाहे आपको इसकी आवश्यकता हो या नहीं, इस पर निर्भर करता है कि आप किस प्रकार के एल्गोरिदम पर काम करते हैं। यदि आपके एप्लिकेशन कुछ छवि प्रसंस्करण और कंप्यूटर दृष्टि एल्गोरिदम पर भरोसा करते हैं, तो आप ओपेनसीवी उपयोगी पा सकते हैं। लेकिन निश्चित रूप से आप हमेशा अपने सरल पुस्तकालयों से शुरू कर सकते हैं।

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

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