ב-Android 10, Neural Networks API (NNAPI) כולל פונקציות שמאפשרות לספריות ולאפליקציות של למידת מכונה לקבל מידע על המכשירים הזמינים ולציין באילו מכשירים להפעיל מודל. המידע על המכשירים הזמינים מאפשר לאפליקציות לקבל את הגרסה המדויקת של מנהלי ההתקנים שנמצאים במכשיר, כדי למנוע חוסר תאימות ידוע. כשנותנים לאפליקציות את היכולת לציין אילו מכשירים מריצים קטעים שונים במודל, אפשר לבצע אופטימיזציה של האפליקציות למוצר שבו הן נפרסות.
להטמעות NN HAL 1.2 נדרשת תמיכה בגילוי והקצאה של מכשירים.
הטמעה
כדי לתמוך בתכונות של גילוי מכשירים והקצאה של מכשירים ב-NNAPI, צריך להטמיע את
getType
ו-getVersionString
ב-IDevice.hal
כדי לאפשר ל-framework לקבל את סוג המכשיר ואת גרסת מנהל ההתקן.
עבור כל מכשיר, מציינים את הסוג כאחת מהקטגוריות הבאות כפי שמצוין ב-DeviceType
ב-types.hal
.
OTHER
: מכשיר שלא נכלל באף אחת מהקטגוריות האחרות, כולל ממשק הטרוגני, שהוא ממשקIDevice
אחד שמנהל מספר מכשירים, לפעמים גם מסוגים שונים. נהג עם ממשק הטרוגני צריך גם לחשוף ממשקיIDevice
נפרדים שמתאימים למכשירים ספציפיים כדי לאפשר לאפליקציה לבחור מבין המכשירים האלה.CPU
: מעבד עם ליבה אחת או כמה ליבות.GPU
: יחידת GPU שיכולה להריץ מודלים של NNAPI ולהאיץ ממשקי API גרפיים כמו OpenGL ES ו-Vulkan.ACCELERATOR
: יחידה ייעודית לעיבוד עצבי (NPU).
מטמיעים את getVersionString
ב-IDevice.hal
כדי לקבל את מחרוזת הגרסה של ההטמעה במכשיר.
השיטה הזו חייבת להחזיר מחרוזת שבני אדם יכולים לקרוא. הפורמט של המחרוזת הוא ספציפי לספק. מחרוזת הגרסה צריכה להיות שונה בכל גרסה חדשה של מנהל התקן.
השם של הממשק IDevice
חייב להיות בפורמט {VENDOR}-{DEVICE_NAME}
.