از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
کشف و تخصیص دستگاه
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
در اندروید 10، API شبکههای عصبی (NNAPI) توابعی را معرفی میکند که به کتابخانهها و برنامههای چارچوب یادگیری ماشین اجازه میدهد اطلاعاتی در مورد دستگاههای موجود دریافت کنند و مشخص کنند که در کدام دستگاهها یک مدل را اجرا کنند. ارائه اطلاعات در مورد دستگاه های موجود به برنامه ها اجازه می دهد تا نسخه دقیق درایورهای موجود در دستگاه را دریافت کنند تا از ناسازگاری های شناخته شده جلوگیری کنند. با دادن توانایی به برنامهها برای تعیین اینکه کدام دستگاهها بخشهای مختلف یک مدل را اجرا کنند، برنامهها را میتوان برای محصولی که روی آن مستقر شدهاند بهینه کرد.
برای اجرای NN HAL 1.2، پشتیبانی از کشف و تخصیص دستگاه مورد نیاز است.
پیاده سازی
برای پشتیبانی از ویژگیهای کشف و تخصیص دستگاه در NNAPI، getType
و getVersionString
در IDevice.hal
پیادهسازی کنید تا به چارچوب اجازه دهید نوع دستگاه و نسخه درایور را دریافت کند.
برای هر دستگاه، نوع را به عنوان یکی از دسته های زیر که در DeviceType
در types.hal
مشخص شده است، مشخص کنید.
-
OTHER
: دستگاهی که در هیچ یک از دستههای دیگر قرار نمیگیرد، از جمله یک رابط ناهمگن، که یک رابط IDevice
واحد است که چندین دستگاه، احتمالاً از انواع مختلف، را مدیریت میکند. درایور با رابط ناهمگن همچنین باید رابطهای IDevice
جداگانهای را که با دستگاههای جداگانه مطابقت دارد در معرض دید قرار دهد تا به برنامه اجازه دهد از بین آن دستگاهها انتخاب کند. -
CPU
: یک CPU تک هسته ای یا چند هسته ای. -
GPU
: یک GPU که می تواند مدل های NNAPI را اجرا کند و API های گرافیکی مانند OpenGL ES و Vulkan را تسریع بخشد. -
ACCELERATOR
: یک واحد پردازش عصبی اختصاصی (NPU).
برای دریافت رشته نسخه پیاده سازی دستگاه، getVersionString
در IDevice.hal
پیاده سازی کنید. این متد باید رشته ای را برگرداند که برای انسان قابل خواندن باشد. قالب رشته مخصوص فروشنده است. رشته نسخه باید برای هر نسخه جدید درایور متفاوت باشد.
نام رابط IDevice
باید از قالب {VENDOR}-{DEVICE_NAME}
پیروی کند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Device discovery and assignment\n\n| **Deprecated:** Starting in Android 15, the\n| [NNAPI (NDK API)](https://developer.android.com/ndk/guides/neuralnetworks) is deprecated. The Neural Networks HAL interface\n| continues to be supported.\n|\n| For more information, see the\n| [NNAPI Migration Guide](https://developer.android.com/ndk/guides/neuralnetworks/migration-guide).\n\nIn Android 10, the\n[Neural Networks API (NNAPI)](/docs/core/interaction/neural-networks)\nintroduces functions that allow\nmachine learning framework\nlibraries and apps to get information about the devices available and\nspecify which devices to execute a model on. Providing information about the\navailable devices allows apps to get the exact version of the drivers\nfound on the device to avoid known incompatibilities. By giving apps the\nability to specify which devices are to execute different sections of a model,\napps can be optimized for the product on which they are deployed.\n\nSupport for device discovery and assignment is required for NN HAL 1.2\nimplementations.\n\nImplementation\n--------------\n\nTo support the device discovery and assignment features in NNAPI, implement\n[`getType`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#76)\nand\n[`getVersionString`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#56)\nin `IDevice.hal` to allow the framework to get the device type and driver\nversion.\n\nFor each device, specify the type as one of the following categories as\nspecified in\n[`DeviceType`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/types.hal#4737)\nin\n[`types.hal`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/types.hal).\n\n- **`OTHER`:** A device that doesn't fall into any of the other categories, including a heterogeneous interface, which is a single `IDevice` interface that manages multiple devices, possibly of different types. A driver with a heterogeneous interface should also expose separate `IDevice` interfaces that correspond to individual devices to allow an application to choose from those devices.\n- **`CPU`:** A single core or multicore CPU.\n- **`GPU`:** A GPU that can run NNAPI models and accelerate graphics APIs such as OpenGL ES and Vulkan.\n- **`ACCELERATOR`:** A dedicated neural processing unit (NPU).\n\nImplement\n[`getVersionString`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#56)\nin `IDevice.hal` for getting the version string of the device implementation.\nThis method must return a string that is human readable. The format of the\nstring is vendor specific. The version string must be different for each new\nversion of a driver.\n\nThe name of the `IDevice` interface must follow the `{VENDOR}-{DEVICE_NAME}`\nformat."]]