एनडीके, ARM Advanced SIMD के साथ काम करता है, जिसे आम तौर पर नियॉन कहा जाता है. ARMv7 और ARMv8 के लिए निर्देश सेट एक्सटेंशन. नियॉन स्केलर/वेक्टर देता है FPU के साथ शेयर किए गए निर्देश और रजिस्टर, MMX/SSE/3DNow से मिलते-जुलते हैं! के अनुभव को और भी बेहतर बना देते हैं.
ARMv8 पर आधारित ("arm64") सभी Android डिवाइस, नियॉन के साथ काम करते हैं. ARMv7 पर आधारित तकरीबन सभी ("32-बिट") Android डिवाइस, Neon पर काम करते हैं. इनमें वे सभी डिवाइस शामिल हैं जो एपीआई लेवल 21 या उसके बाद का वर्शन. एनडीके, दोनों के लिए नियॉन को डिफ़ॉल्ट रूप से चालू करता है.
अगर आप बहुत पुराने डिवाइस टारगेट करते हैं, तो आप Google Play Console पर जाएं. अपने ऐप्लिकेशन के लिए कंसोल का इस्तेमाल करके, यह देखा जा सकता है कि कितने जिन डिवाइसों पर इसका असर पड़ेगा.
दूसरा तरीका यह है कि 32-बिट वाला कोड, रनटाइम के दौरान काम कर सकता है. ताकि यह पुष्टि की जा सके कि टारगेट डिवाइस पर नियॉन कोड चलाया जा सकता है. ऐप्लिकेशन ये काम कर सकता है यहां दिए गए किसी भी विकल्प का इस्तेमाल करके यह जांच करें सीपीयू की सुविधाएं.
Google Analytics 4 पर माइग्रेट करने के लिए, नियॉन इंट्रिनिक्स C और C++ कोड में भी लिखा जा सकता है. कॉन्टेंट बनाने Armv8-A के लिए नियॉन प्रोग्रामर की गाइड इससे सामान्य तौर पर, नियॉन इंट्रिंसिक्स और नियॉन प्रोग्रामिंग के बारे में ज़्यादा जानकारी मिलती है.
बनाएं
दुनिया भर में Neon को बंद करें
ndk-build, दुनिया भर में Neon को बंद करने की सुविधा नहीं देता. नियॉन को बंद करने के लिए ndk-build ऐप्लिकेशन, अपने हर मॉड्यूल के लिए हर मॉड्यूल के चरणों को लागू करें का इस्तेमाल करें.
CMake का इस्तेमाल करते समय -DANDROID_ARM_NEON=ON
पास करें. अगर Android के साथ काम किया जा रहा है, तो
Studio/Gradle, अपने बिल्ड.gradle में यह विकल्प सेट करें:
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments "-DANDROID_ARM_NEON=OFF"
}
}
}
}
हर मॉड्यूल के लिए, नियॉन बंद करें
नियॉन के बिना किसी ndk-build मॉड्यूल में सभी सोर्स फ़ाइलों को बनाने के लिए, मॉड्यूल की परिभाषा को फ़ॉलो करें:
LOCAL_ARM_NEON := false
नियॉन के बिना CMake टारगेट में सभी सोर्स फ़ाइलें बनाने के लिए, को आपकी CMakeLists.txt के अनुसार बनाना होगा:
if(ANDROID_ABI STREQUAL armeabi-v7a)
set_target_properties(${TARGET} PROPERTIES COMPILE_FLAGS -mfpu=vfpv3-d16)
endif()
जहां ${TARGET}
को आपकी लाइब्रेरी के नाम से बदल दिया जाता है.
x86 के लिए क्रॉस-प्लैटफ़ॉर्म की सुविधा
को दबाकर रखें NDK, आपके मौजूदा ARM SIMD (Neon) के क्रॉस-प्लैटफ़ॉर्म कंपाइलेशन की सुविधा देता है तीसरे पक्ष की मदद से, x86 SSE कोड में instrinsic फ़ंक्शन NEON_2_SSE.h. इस विषय पर ज़्यादा जानकारी के लिए, यह देखें ARM NEON से लेकर Intel SSE तक के सभी सुझाव, अपने-आप पोर्ट होने की सुविधा, और सुझाव.
नमूना कोड
को दबाकर रखें
हैलो-नियॉन सैंपल
cpufeatures
लाइब्रेरी और नियॉन इंट्रिनिक्स को इस्तेमाल करने के तरीके का उदाहरण दिया गया है
ट्रैक करने में मदद मिलती है. यह नमूना, एफ़आईआर फ़िल्टर लूप के लिए एक छोटा मानदंड लागू करता है
C वर्शन के साथ और नियॉन का समर्थन करने वाले डिवाइस के लिए नियॉन-ऑप्टिमाइज़्ड वर्शन के साथ.