2013-06-11 6 views
5

I पता है कि रेंडरस्क्रिप्ट का डिज़ाइन इस बात को अस्पष्ट करना है कि मैं किस प्रोसेसर पर चल रहा हूं, लेकिन कोड लिखने का कोई तरीका है जैसे GPU-compute- सक्षम डिवाइस (इस समय , नेक्सस 10), यह जीपीयू पर चलाएगा? क्या यह बताने का कोई तरीका है कि GPU पर एक स्क्रिप्ट का कार्य चल रहा है?रेंडरस्क्रिप्ट और GPU

www.leapconf.com/downloads/LihuaZhang-MulticoreWare.pdf सुझाव देता है कि यदि मैं ग्लोबल्स का उपयोग नहीं करता हूं, तो मैं रिकर्सन का उपयोग नहीं करता हूं, और कर्नेल में कहीं भी rsDebug को कॉल नहीं करता, यह चालू होगा जीपीयू; क्या वो सही है?

मुझे एक छोटी सी लिपि देखना पसंद है जिसे लोगों ने किसी तरह से सत्यापित किया है, जीपीयू पर पूरी तरह से गणना-आधारित कार्य (उदाहरण के लिए, कोई ग्राफिक्स काम नहीं) के रूप में चलाया जाएगा।

+0

यह प्रश्न वास्तव में अधिक अपवर्तनीय है, क्योंकि मुझे लगता है कि एंड्रॉइड अंधेरे में बहुत सी चीजें छोड़ रहा है। – rsp1984

उत्तर

2

सामान्य रूप से, नेक्सस 10 के व्यवहार के बारे में ये दावे सही हैं। कुछ आरएस रनटाइम फ़ंक्शंस को कॉल करने के बारे में कुछ और चीजें हैं (उदाहरण के लिए, rsGetAllocation को कॉल न करें) जिससे सीपीयू एक फ़ंक्शन चलाएगा। हालांकि, मुझे लगता है कि ग्लोबल जो आवंटन या बाध्य पॉइंटर्स नहीं हैं 4.2 में ठीक है।

आगे बढ़ते हुए, उनमें से बहुत से प्रतिबंधों को आराम दिया जा रहा है (ग्लोबल्स बड़ा होने वाला है)।

यह देखने के संदर्भ में कि कर्नेल कहां चलता है: आप इसे समझने के लिए 4.2 के साथ बहुत कुछ नहीं कर सकते हैं। हमने अभी तक ऐसा करने के लिए एक अनिवार्य कारण नहीं देखा है, लेकिन यदि यह वास्तव में महत्वपूर्ण साबित हुआ है तो यह कुछ ऐसा है जो हम सिस्ट्रेस जैसी किसी चीज़ के माध्यम से बहुत अधिक कठिनाई के बिना जोड़ सकते हैं। अगर आप यह दिखा सकते हैं कि यह आपको क्यों परेशान कर रहा है, तो मुझे शिकायत करने के लिए स्वतंत्र महसूस करें "मुझे लगता है कि कोड GPU पर तेजी से चल जाएगा।"

मुझे पूरा यकीन है कि ImageProcessing (fw/base/test/renderScriptTests/imageProcessing /) में मंडेलब्रॉट कार्यान्वयन 4.2 में GPU पर चलता है।

+0

टिम, क्या आप एंड्रॉइड 4.3 में मूल स्थिति के बारे में एक अपडेट दे सकते हैं? – rsp1984

+1

वैश्विक आवंटन तक पहुंचने और GetElementAt और SetElementAt का उपयोग करके कर्नेल को CPU पर चलने वाले Nexus 10 पर स्थित अधिकांश स्थितियों में सीपीयू पर चलने का कारण नहीं होगा। USAGE_SHARED के साथ कुछ सीमाएं हैं, लेकिन सीपीयू पर वापस आने की तुलना में यह अधिक संभावित प्रति ओवरहेड है। –

+0

क्या होगा यदि कोई तत्व (या धागा?) पड़ोसी तत्व डेटा तक पहुंचता है? क्या यह जीपीयू पर चलेगा? –