2012-07-17 9 views
8

मैं सीपीयू सुविधाओं पर थोड़ा सा सीख रहा हूं और नीयन पर ठोकर खा रहा हूं।Android प्रोग्राम NEON SIMD का उपयोग कैसे करते हैं?

जो मैंने पढ़ा है, ऐसा लगता है कि एनईओएन को इसका उपयोग करने के लिए विशिष्ट प्रोग्रामिंग की आवश्यकता है, लेकिन यह पूरी तरह से सच है, या सीपीयू करें जिसमें यह सुविधा अभी भी इसे समाप्त करने के तरीकों को ढूंढती है और कुछ अनुप्रयोगों के लिए गति मीडिया प्रक्रियाओं को भी ढूंढती है हालांकि इसके लिए विशिष्ट कोड नहीं है?

+0

निर्देश सेट एक्सटेंशन को * कुछ * (ड्राइवर/कर्नेल/सी लाइब्रेरी, आदि) द्वारा लक्षित करने की आवश्यकता है। –

+0

इस अर्थ में कि एंड्रॉइड कंपाइलर इसे एक निश्चित स्तर पर करेगा (क्योंकि सभी सीपीयू में सुविधा नहीं है।)? मैं इसे एमएमएक्स एक्सटेंशन की तरह देख रहा हूं, इंटेल सीपीयू जो मुझे लगता है कि मूल रूप से प्रोग्रामर द्वारा लक्षित किया जाना था, फिर कंपाइलर्स ने इसे अस्तित्व में माना था, फिर यह पुरातन हो गया .. – Tam

+1

कुछ अनुकूलन हो सकते हैं कि कंपाइलर्स का उपयोग कर सकते हैं - - लेकिन उन लोगों के लिए "60% -150% संख्या" का दावा किया गया है, यह अभी भी हाथ-कोडिंग और उपयोग के आंतरिक ज्ञान लेता है .. (ऐसा नहीं है कि आप असेंबली में एक संपूर्ण कार्यक्रम लिखेंगे, बल्कि सीओडीईसी के भारी उठाने वाले हिस्सों को लिखेंगे या 3 डी परिवर्तन, आदि) –

उत्तर

9

NEON निर्देशों का उपयोग करने के कई तरीके हैं। उनमें से कुछ हैं:

  • लाइब्रेरियस। यह एक अच्छा मौका है कि आपके memcpy NEON का उपयोग कर हस्तशिल्प है। एपीआई में संगीत/वीडियो प्लेबैक libs त्वरण के लिए नीयन और/या जीपीयू का उपयोग कर रहे हैं। एएसओ, तीसरे-पेरी libs हैं जो इसका उपयोग करते हैं। क्वालकॉम से फास्टसीवी एक अच्छा उदाहरण है
  • कंपाइलर जारी किए गए निर्देश। कुछ कंपाइलर, सही कंपाइलर विकल्पों के साथ नीयन निर्देश जारी करेंगे। अधिकांश कंपाइलर फ्लोट ऑपरेशंस के लिए नियॉन का उपयोग करेंगे, लेकिन उन्हें वेक्टरिंग नहीं करेंगे। वे इकाई को एकल डेटा इकाई के रूप में उपयोग करेंगे, क्योंकि यह तेज़ और सुविधाजनक है। जीसीसी और एआरएम कंपाइलर में कुछ वेक्टरिंग क्षमताओं हैं, लेकिन वे वास्तव में दायरे और परिणामों में सीमित हैं।
  • इंट्राइनिक्स के साथ हाथ-कोडित सी http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html यह शायद नीयन दुनिया में शुरू करने का सबसे अच्छा तरीका है।
  • हाथ-कोडित असेंबलर। यदि आप अधिकतम प्रदर्शन प्राप्त करना चाहते हैं तो यह सबसे अच्छा प्रतीत होता है। इसके लिए प्रयास और सीएस ज्ञान का एक अच्छा सौदा भी आवश्यक है।

  • और, अंतिम लेकिन कम से कम नहीं, आप इसका उपयोग करने वाले कुछ ऐप डाउनलोड करके नीयन का उपयोग कर सकते हैं। अपने पसंदीदा संगीत खिलाड़ी शायद अच्छा उपयोग करने के लिए अपने स्मार्टफोन में नियोन इकाई डालता है :)

निष्कर्ष: नियोन प्रयोगों की एक बहुत कुछ है, लेकिन यह केवल प्रयोग किया जाता है, तो कोड विशेष रूप से नियोन निर्देश शामिल हैं। अधिक तकनीकी रूप से, जैसा कि @pst ने कहा था, कोड के एक टुकड़े से लक्षित होना चाहिए।

+0

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

+0

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