החל מ-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
נפרדים שתואמים למכשירים נפרדים.
CPU
: מעבד עם ליבה אחת או מעבד מרובה ליבות.
GPU
: מעבד GPU שיכול להריץ מודלים של NNAPI ולהאיץ ממשקי API גרפיים כמו OpenGL ES ו-Vulkan.
ACCELERATOR
: יחידת עיבוד עצבי (NPU) ייעודית.
מטמיעים את getVersionString
ב-IDevice.hal
כדי לקבל את מחרוזת הגרסה של הטמעת המכשיר.
השיטה הזו צריכה להחזיר מחרוזת שאנשים יכולים לקרוא. הפורמט של המחרוזת הוא ספציפי לספק. מחרוזת הגרסה חייבת להיות שונה לכל גרסה חדשה של מנהל התקן.
שם הממשק IDevice
חייב להיות בפורמט {VENDOR}-{DEVICE_NAME}
.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","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 (שעון UTC)."],[],[],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."]]