Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
NDK, ARMv7 ve ARMv8 için isteğe bağlı bir talimat seti uzantısı olan ve genellikle Neon olarak bilinen ARM Advanced SIMD'yi destekler. Neon, x86 dünyasındaki MMX/SSE/3DNow! ile karşılaştırılabilir, skaler/vektör talimatları ve kayıtları (FPU ile paylaşılır) sağlar.
Tüm ARMv8 tabanlı ("arm64") Android cihazlar Neon'u destekler. API düzeyi 21 veya sonraki sürümlerle birlikte gönderilen tüm cihazlar da dahil olmak üzere, ARMv7 tabanlı ("32 bit") Android cihazların neredeyse tamamı Neon'u destekler. NDK, her iki Arm ABI'si için de Neon'u varsayılan olarak etkinleştirir.
Çok eski cihazları hedefliyorsanız Google Play Console'da uyumsuz cihazları filtreleyebilirsiniz. Bu durumun kaç cihazı etkileyeceğini görmek için uygulamanızın konsolunu da kullanabilirsiniz.
Alternatif olarak, maksimum uyumluluk için 32 bit kod, Neon kodunun hedef cihazda çalıştırılabileceğini doğrulamak üzere çalışma zamanı algılaması gerçekleştirebilir. Bir uygulama, CPU özellikleri bölümünde belirtilen seçeneklerden herhangi birini kullanarak bu kontrolü gerçekleştirebilir.
C/C++ kodunuza açık Neon intrinsikleri yazmamalısınız. Clang'in taşınabilir vektör türleri, Neon talimatlarını otomatik olarak kullanır. Clang'in Neon intrinsikleri aslında taşınabilir türler etrafındaki taşınabilir olmayan bir sarmalayıcıdır. Bu nedenle, Neon intrinsikleri yazmak kodunuzu taşınabilir türleri kullanmaktan daha hızlı hale getirmez, yalnızca daha az taşınabilir hale getirir.
Derle
Neon'u genel olarak devre dışı bırakma
ndk-build
ndk-build, Neon'un genel olarak devre dışı bırakılmasını desteklemez. Neon'u tamamen devre dışı bırakmak için bir ndk-build uygulamasında modül başına uygulanan adımları uygulamanızdaki her modüle uygulayın.
CMake
CMake'i çağırırken -DANDROID_ARM_NEON=ON iletin. Android Studio/Gradle ile derleme yapıyorsanız build.gradle dosyanızda aşağıdaki seçeneği ayarlayın:
NDK, üçüncü taraf NEON_2_SSE.h kullanılarak mevcut ARM SIMD (Neon) intrinsic işlevlerinizin x86 SSE koduna platformlar arası derlenmesini destekler.
Bu konu hakkında daha fazla bilgi için From ARM NEON to Intel SSE-the automatic porting solution, tips and tricks (ARM NEON'dan Intel SSE'ye: Otomatik taşıma çözümü, ipuçları ve püf noktaları) başlıklı makaleyi inceleyin.
Örnek kod
Vektörleştirme örneği, matris çarpımını uygulamak için çeşitli vektörleştirme araçlarının nasıl kullanılacağını gösterir ve bu araçların performansını karşılaştırır.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-08-25 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-08-25 UTC."],[],[],null,["# Neon support\n\nThe NDK supports ARM Advanced SIMD, commonly known as Neon, an optional\ninstruction set extension for ARMv7 and ARMv8. Neon provides scalar/vector\ninstructions and registers (shared with the FPU) comparable to MMX/SSE/3DNow!\nin the x86 world.\n\nAll ARMv8-based (\"arm64\") Android devices support Neon. Almost all ARMv7-based\n(\"32-bit\") Android devices support Neon, including all devices that shipped with\nAPI level 21 or later. The NDK enables Neon by default for both Arm ABIs.\n\nIf you target very old devices, you can filter out incompatible devices on the\nGoogle Play Console. You can also use the console for your app to see how many\ndevices this would affect.\n\nAlternatively, for maximum compatibility, 32-bit code can perform runtime\ndetection to confirm that Neon code can be run on the target device. An app can\nperform this check using any of the options mentioned in\n[CPU features](/ndk/guides/cpu-features).\n\nYou should not write explicit Neon intrinsics in your C/C++ code. Clang's\n[portable vector types](https://clang.llvm.org/docs/LanguageExtensions.html#vectors-and-extended-vectors) will automatically use Neon instructions. Clang's Neon\nintrinsics are actually just a non-portable wrapper around the portable types,\nso writing Neon intrinsics will not make your code any faster than using the\nportable types, just less portable.\n\nBuild\n-----\n\n| **Note:** For NDK r21 and newer Neon is enabled by default for all API levels. If you need to disable Neon to support non-Neon devices (which are rare), invert the settings described below. Alternatively, the Play Store console can be used to [exclude CPUs](https://support.google.com/googleplay/android-developer/answer/7353455) that do not support Neon to prevent your application from being installed on those devices.\n\nDisable Neon globally\n---------------------\n\n### ndk-build\n\nndk-build does not support disabling Neon globally. To disable Neon an entire\nndk-build application, apply the per-module steps to every module in your\napplication.\n\n### CMake\n\nPass `-DANDROID_ARM_NEON=ON` when invoking CMake. If building with Android\nStudio/Gradle, set the following option in your build.gradle: \n\n android {\n defaultConfig {\n externalNativeBuild {\n cmake {\n arguments \"-DANDROID_ARM_NEON=OFF\"\n }\n }\n }\n }\n\nDisable Neon per module\n-----------------------\n\n### ndk-build\n\nTo build all the source files in an ndk-build module without Neon, add the\nfollowing to the module definition in your Android.mk: \n\n LOCAL_ARM_NEON := false\n\n### CMake\n\nTo build all the source files in a CMake target without Neon, add the\nfollowing to your CMakeLists.txt: \n\n if(ANDROID_ABI STREQUAL armeabi-v7a)\n set_target_properties(${TARGET} PROPERTIES COMPILE_FLAGS -mfpu=vfpv3-d16)\n endif()\n\nWhere `${TARGET}` is replaced with the name of your library.\n\nCross-platform support for x86\n------------------------------\n\n\nNDK supports cross-platform compilation of your existing ARM SIMD (Neon)\ninstrinsic functions into x86 SSE code, through the use of the third-party\n[NEON_2_SSE.h](https://github.com/intel/ARM_NEON_2_x86_SSE).\nFor more information on this topic, see\n[From ARM NEON to Intel SSE-the automatic porting solution, tips and tricks](http://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-automatic-porting-solution-tips-and-tricks).\n\nSample code\n-----------\n\nThe [vectorization sample](https://github.com/android/ndk-samples/tree/main/vectorization) demonstrates how to use a variety of vectorization\ntools to implement a matrix multiply, and compares their performance."]]