با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
NDK از ARM Advanced SIMD، که معمولاً به عنوان Neon شناخته می شود، یک پسوند مجموعه دستورالعمل اختیاری برای ARMv7 و ARMv8 پشتیبانی می کند. نئون دستورالعملها و رجیسترهای اسکالر/بردار (به اشتراک گذاشته شده با FPU) قابل مقایسه با MMX/SSE/3DNow را ارائه میکند! در دنیای x86
همه دستگاه های اندروید مبتنی بر ARMv8 ("arm64") از نئون پشتیبانی می کنند. تقریباً تمام دستگاههای اندرویدی مبتنی بر ARMv7 («32 بیتی») از نئون پشتیبانی میکنند، از جمله همه دستگاههایی که با سطح API 21 یا بالاتر عرضه شدهاند. NDK نئون را به طور پیشفرض برای هر دو Arm ABI فعال میکند.
اگر دستگاههای بسیار قدیمی را هدف قرار میدهید، میتوانید دستگاههای ناسازگار را در کنسول Google Play فیلتر کنید. همچنین می توانید از کنسول برای برنامه خود استفاده کنید تا ببینید این روی چند دستگاه تأثیر می گذارد.
متناوبا، برای حداکثر سازگاری، کد 32 بیتی می تواند تشخیص زمان اجرا را انجام دهد تا تأیید کند که کد نئون می تواند بر روی دستگاه مورد نظر اجرا شود. یک برنامه می تواند این بررسی را با استفاده از هر یک از گزینه های ذکر شده در ویژگی های CPU انجام دهد.
شما نباید در کد C/C++ خود، ذاتی نئون صریح بنویسید. انواع وکتور قابل حمل Clang به طور خودکار از دستورالعمل های نئون استفاده می کنند. Clang's Neon Intrinsics در واقع فقط یک لفاف غیر قابل حمل در اطراف انواع قابل حمل است، بنابراین نوشتن درونی Neon باعث نمی شود کد شما سریعتر از استفاده از انواع قابل حمل باشد، بلکه کمتر قابل حمل است.
ساخت
نئون را در سطح جهانی غیرفعال کنید
ndk-build
ndk-build از غیرفعال کردن نئون در سطح جهانی پشتیبانی نمیکند. برای غیرفعال کردن Neon کل برنامه ndk-build، مراحل هر ماژول را برای هر ماژول در برنامه خود اعمال کنید.
CMake
هنگام فراخوانی CMake -DANDROID_ARM_NEON=ON را پاس کنید. در صورت ساخت با Android Studio/Gradle، گزینه زیر را در build.gradle خود تنظیم کنید:
نمونه برداری نشان می دهد که چگونه می توان از انواع ابزارهای برداری برای اجرای ضرب ماتریس استفاده کرد و عملکرد آنها را با هم مقایسه کرد.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-08-25 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-08-25 بهوقت ساعت هماهنگ جهانی."],[],[],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."]]