اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
رصد الأجهزة وتحديدها
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
في Android 10، تقدّم Neural Networks API (NNAPI) دوالّ تتيح لتطبيقات ومكتبات إطار عمل تعلُّم الآلة الحصول على معلومات عن الأجهزة المتاحة وتحديد الأجهزة التي سيتم تنفيذ النموذج عليها. من خلال تقديم معلومات عن
الأجهزة المتاحة، يمكن للتطبيقات الحصول على الإصدار الدقيق من برامج التشغيل
المتوفّرة على الجهاز لتجنُّب حالات عدم التوافق المعروفة. من خلال منح التطبيقات
القدرة على تحديد الأجهزة التي ستنفِّذ أقسامًا مختلفة من النموذج،
يمكن تحسين التطبيقات للمنتج الذي يتم نشرها عليه.
يجب أن تتوفّر إمكانية اكتشاف الأجهزة وتحديدها لتنفيذ حِزم NN HAL 1.2.
التنفيذ
لتفعيل ميزتَي اكتشاف الجهاز وتحديد وظيفته في NNAPI، نفِّذ getType
وgetVersionString
في IDevice.hal
للسماح للإطار بالحصول على نوع الجهاز وإصدار برنامج التشغيل.
حدِّد النوع لكل جهاز على أنّه إحدى الفئات التالية كما هو موضح في DeviceType
في types.hal
.
-
OTHER
: جهاز لا يندرج ضمن أي من الفئات
الأخرى، بما في ذلك الواجهة غير المتجانسة، وهي واجهة IDevice
واحدة تدير أجهزة متعددة، قد تكون من أنواع مختلفة. يجب أن يعرِض IDevice
سائق لديه واجهة غير متجانسة أيضًا واجهات IDevice
منفصلة تتوافق مع الأجهزة الفردية لكي يسمح للتطبيق بالاختيار من بين هذه الأجهزة.
-
CPU
: وحدة معالجة مركزية أحادية النواة أو متعددة النوى
GPU
: وحدة معالجة رسومات يمكنها تشغيل نماذج NNAPI وتسريع واجهات برمجة تطبيقات الرسومات، مثل
OpenGL ES وVulkan
-
ACCELERATOR
: وحدة معالجة عصبية مخصّصة (NPU)
نفِّذ getVersionString
في IDevice.hal
للحصول على سلسلة الإصدار لتنفيذ الجهاز.
يجب أن تعرِض هذه الطريقة سلسلة يمكن لشخص عادي قراءتها. يعتمد تنسيق السلسلة على المورّد. يجب أن يكون سلسلة الإصدار مختلفة لكل إصدار جديد
من برنامج تشغيل.
يجب أن يتّبع اسم واجهة IDevice
تنسيق {VENDOR}-{DEVICE_NAME}
.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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."]]