2012-01-25 26 views
24

आजादी के लिए स्वतंत्रता (डेस्कटॉप, क्लाउड, मोबाइल, ...) गति के मामले में GPGPU विकास के लिए ओपनसीएल का उपयोग करना बहुत अच्छा होगा। मुझे पता है कि Google एक विकल्प के रूप में रेंडरस्क्रिप्ट को धक्का देता है, लेकिन ऐसा लगता है कि यह केवल एंड्रॉइड के लिए उपलब्ध है और आईओएस में कभी भी शामिल होने की संभावना नहीं है।एंड्रॉइड पर ओपनसीएल का उपयोग कैसे करें?

इसलिए मैं एंड्रॉइड ऐप्स के भीतर ओपनसीएल कोड निष्पादित करने के लिए एक समाधान की तलाश करता हूं। का उपयोग करते हुए OpenCL बहुत सुरक्षित नहीं है http://developer.android.com/guide/topics/renderscript/compute.html

क्योंकि पुस्तकालय (या क्षमता) लक्ष्य डिवाइस पर उपलब्ध नहीं हो सकता:

+0

मुझे आश्चर्य है कि इंटेल के माइक्रोसॉफ्ट के एएमपी को ओपनसीएल और एलएलएम/क्लैंग में इंटेल के अनुकूलन के बारे में इस कहानी को पढ़ने के बाद यहां कोई अपडेट हो सकता है: http://www.phoronix.com/scan.php?page=news_item&px = एंड्रॉइड एनडीके टूलचेन में एलवीएम/क्लैंग के हाल ही में शामिल होने के साथ एमटीआईटीओटीक: http://clang-developers.42468.n3.nabble.com/Clang-now-included-in-Android-NDK-r8c-td4028206 .html केवल अभी इस में देख रहा है, और अभी तक इसे आजमाया नहीं है, मैं भविष्य के पोस्ट में अपने परिणामों की खबरों का प्रयोग और प्रस्ताव पेश करूंगा। – Jackalope

उत्तर

12

ओपनसीएल का समर्थन करने वाले एकमात्र एंड्रॉइड डिवाइस चिप्स के माली टी 600 परिवार (लेख here) पर आधारित हैं। उनके पास OpenCL SDK है। जाहिर है यह ओपनसीएल 1.1 पूर्ण प्रोफाइल भी है।

Nexus 10 ऐसी डिवाइस है जो ऐसी चिप का उपयोग करती है। सैमसंग एक्सिनोस 5 डुअल एसओसी माली टी 604 का उपयोग करता है, इसलिए इसका उपयोग करने वाली किसी भी चीज का इस्तेमाल माली टी 600 ओपनसीएल एसडीके के साथ किया जा सकता है (मैंने स्वयं में से किसी को भी कोशिश नहीं की है)।

ओपनसीएल ब्लॉग का लेखक have a go with this पर प्रयास कर रहा है, इसलिए यह लेखों की श्रृंखला के बाद लायक हो सकता है।

लेकिन, एंड्रॉइड पर ओपनसीएल समर्थन ब्रांड नया है (16/2/2013 तक), जबकि प्रयोग के लिए बहुत अच्छा है, तब तक सावधान रहना उचित हो सकता है जब तक कि अधिक समर्थन न हो (जो कहता है कि ओपनसीएल का प्रारंभिक समर्थन कैसे होता है 1.1 है)

+2

एड्रेनो 320 और बाद में ओपनसीएल है, उदा। नेक्सस 4 इसका समर्थन करता है –

+2

Google डिवाइस में से कोई भी नहीं, क्योंकि मेरा मानना ​​है कि 4.3 इसका खुलासा करेगा। – chrisvarnz

+0

अगर मैं गलत हूं, तो मुझे सही करें, लेकिन AFAIK, एंड्रॉइड के हाल के संस्करणों पर ओपनसीएल का उपयोग करना बिल्कुल असंभव है और यह बदलने वाला नहीं है। Google इस तरह के कार्यों के लिए एंड्रॉइड पर रेंडेस्क्रिप्ट को दबा रहा है। – Teovald

4

आप RenderScript कंप्यूट बजाय का उपयोग करना चाहिए। ईमानदार होने के लिए, मुझे यह भी नहीं पता कि क्या कोई एंड्रॉइड डिवाइस वास्तव में इसका समर्थन करता है या नहीं। रेंडरस्क्रिप्ट सीपीयू गणना में वापस आ जाएगा यदि डिवाइस पर जीपीयू जो भी प्रोग्राम चलाने के लिए आप सक्षम करना निष्पादित करने में सक्षम नहीं है।

हालांकि, आप अभी OpenCL उपयोग करने के लिए, यहाँ कुछ है कि आप http://www.pgroup.com/lit/articles/insider/v4n2a3.htm

मदद मिल सकती चाहते हैं तो आप चाहते हो सकता है/उचित नियंत्रण करने में (Nvidia Tegra SDK) उपकरण-विशिष्ट एसडीके की जरूरत है।

+3

यह पूछे गए प्रश्न का उत्तर नहीं देता है। यदि सवाल यह था कि मैं GPU तक कैसे पहुंचूं ... –

+2

@TimChild प्रश्न यह था कि GPGPU के लिए ओपनसीएल का उपयोग कैसे करें, जिसका मैंने उत्तर दिया था। – silverclaw

+5

आपने नहीं किया - आपने कहा कि इसका उपयोग न करें जब ओपी ने स्पष्ट रूप से रेंडरस्क्रिप्ट में रुचि की कमी का उल्लेख किया। मेरा मानना ​​है कि @prunge का जवाब अधिक सटीक है। इसके अलावा, पीजीसीएल एक वाणिज्यिक उत्पाद है। – Ani

2

सभी क्वालकॉम Adreno 300 धारावाहिकों समर्थन OpenCL 1.1 एम्बेडेड प्रोफ़ाइल। ओपनसीएल का उपयोग करने के लिए, आपको एनडीके कोड विकसित करने की आवश्यकता है क्योंकि ओपनसीएल जावा परत पर Google द्वारा समर्थित नहीं है। यदि आप एनडीके कोड को विकसित करना चाहते हैं तो ओपनसीएल कोड लिखने के लिए यह बहुत कठोर है। आपको libOpenCL.so उपलब्ध होना चाहिए, जिसे ओपनसीएल सक्षम डिवाइस, जैसे एचटीसी वन, मोटो एक्स, और सैमसंग नोट/गैलेक्सी संस्करणों से प्राप्त किया जा सकता है जो स्नैपड्रैगन का उपयोग करते हैं।

5

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

अनुच्छेद:

Boost the performance of your Android app with OpenCL

लेख के लिए स्रोत:

Source to OpenCl Android project

अस्वीकरण: मैं सोनी मोबाइल

+0

ओपनसीएल सभी एंड्रॉइड डिवाइसों पर उपलब्ध नहीं है और डेवलपर्स को भ्रामक मानते हैं कि यह उनके लिए विकास/वितरण के लिए उपयोग करने के लिए एक उचित API है। अगर आपको और स्पष्टीकरण की आवश्यकता है तो मेरे पास पहुंचने के लिए स्वतंत्र महसूस करें। –

+1

मैंने कभी विपरीत नहीं बताया है (यह सभी उपकरणों पर उपलब्ध है) इसके विपरीत यह आलेख में स्पष्ट रूप से बताया गया है कि (उस स्थिति में) सोनी डिवाइस इसका समर्थन करता है, यहां कई अन्य उत्तरों ने अंतर्दृष्टि प्रदान की है कि अन्य उपकरणों पर कौन सा समर्थन अपेक्षित है । – Magnus

8

पर एक सलाहकार समय मूल प्रश्न के बाद से पारित कर दिया है हालांकि हूँ पूछा गया था, मुझे लगता है कि यह अभी भी कई डेवलपर्स के लिए एक सवाल है।

उत्तर में दो पहलू हैं। सबसे पहले, दुर्भाग्यवश, Google आधिकारिक तौर पर ओपनसीएल का समर्थन नहीं करता है।

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

Android पर OpenCL का उपयोग करने के लिए, वहाँ कई कदम हैं:

  1. जांच अगर वहाँ डिवाइस पर OpenCL पुस्तकालय। यह OpenCL-Z Android का उपयोग करके किया जा सकता है। Android डिवाइस पर ओपनसीएल उपलब्धता की जांच करने के लिए यह एक शानदार टूल है, और यह कच्चे गणना प्रदर्शन मीट्रिक भी प्रदान करता है, जो बहुत उपयोगी हो सकता है।

प्रमुख चिप विक्रेताओं के लिए OpenCL पुस्तकालयों उपकरणों में पाया जा सकता:

क्वालकॉम Adreno:

/system/vendor/lib/libOpenCL.so 
or /system/lib/libOpenCL.so (older devices) 

एआरएम माली: निम्नलिखित OpenCL पुस्तकालय के स्थान हैं

/system/vendor/lib/egl/libGLES_mali.so 
or /system/lib/egl/libGLES_mali.so 

पावरवीआर:

/system/vendor/lib/libPVROCL.so 
  1. सी या सी ++

  2. अपने C/C++ कोड संकलित करने के लिए NDK प्रोजेक्ट बना का उपयोग कर अपने OpenCL कार्यक्रम लिखें, और निष्पादन योग्य के रूप में डिवाइस पर उन्हें परीक्षण करें।

  3. अपने एनडीके कार्यक्रम कार्यों के लिए जेएनआई इंटरफ़ेस बनाएं।

  4. ओपनसीएल से जुड़े मूल कार्यों को कॉल करने के लिए जावा कोड में जेएनआई कार्यों का उपयोग करके एंड्रॉइड प्रोजेक्ट बनाएं।

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

उम्मीद है कि इससे मदद मिलती है।

+0

ओपनसीएल-जेड संदर्भ के लिए धन्यवाद कहने के लिए बस एक नोट ... ओपनगलएस-ओपनसीएल इंटरऑप पर बहुत कम अच्छी जानकारी है! मैं इसकी सराहना करता हूं! –

+0

हम्म, मुझे लगता है कि कारण यह है कि बहुत कम लोगों ने कभी भी ग्ल-सीएल इंटरऑप सुविधाओं का उपयोग किया है। विशेष रूप से हमारे पास हालिया ओपनजीएल में जीएल गणना शदर है, हम एक आवेदन में ग्ल-सीएल इंटरऑप देखेंगे, यह भी कम होगा। –

+0

बीटीडब्ल्यू, अगर मुझे सही याद है, पुराने सैमसंग एक्सिनोस चिप में, माली जीपीयू (टी -628) ओपनसीएल 1.1 का समर्थन करता है, हालांकि, कुछ जीएल-सीएल इंटरऑप एपीआई भी लागू नहीं किए गए थे! मुझे पता है कि चूंकि मेरे पास जीएल-सीएल बफर इंटरऑप का उपयोग करने वाला कुछ कोड है, इसलिए उन एपीआई को निष्पादित करते समय कोड क्रैश हो गया। तब मैंने libGLES_mali.so की जांच की और पाया कि उन एपीआई को भी लागू नहीं किया गया है। –

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

  • कोई संबंधित समस्या नहीं^_^