איתור והקצאה של מכשירים

ב-Android 10, ‏ Neural Networks API (NNAPI) כולל פונקציות שמאפשרות לספריות ולאפליקציות של מסגרות למידת מכונה לקבל מידע על המכשירים הזמינים ולציין באילו מכשירים להריץ מודל. המידע על המכשירים הזמינים מאפשר לאפליקציות לקבל את הגרסה המדויקת של מנהלי ההתקנים שנמצאים במכשיר, כדי למנוע בעיות תאימות ידועות. אם נותנים לאפליקציות את האפשרות לציין אילו מכשירים יפעילו חלקים שונים של מודל, אפשר לבצע אופטימיזציה של האפליקציות למוצר שבו הן נפרסות.

הטמעות של NN HAL 1.2 מחייבות תמיכה בגילוי מכשירים ובהקצאת מכשירים.

הטמעה

כדי לתמוך בתכונות של גילוי מכשירים והקצאה ב-NNAPI, צריך להטמיע את הפונקציות getType ו- getVersionString ב-IDevice.hal כדי לאפשר למסגרת לקבל את סוג המכשיר ואת גרסת מנהל ההתקן.

לכל מכשיר, מציינים את הסוג כאחת מהקטגוריות הבאות, כפי שמפורט ב-DeviceType ב-types.hal.

  • OTHER: מכשיר שלא משתייך לאף אחת מהקטגוריות האחרות, כולל ממשק הטרוגני, שהוא ממשק IDevice יחיד שמנהל כמה מכשירים, שיכול להיות שהם מסוגים שונים. מנהל התקן עם ממשק הטרוגני צריך גם לחשוף ממשקי IDevice נפרדים שתואמים למכשירים נפרדים, כדי לאפשר לאפליקציה לבחור מבין המכשירים האלה.
  • CPU: מעבד עם ליבה אחת או כמה ליבות.
  • GPU: מעבד גרפי שיכול להריץ מודלים של NNAPI ולהאיץ ממשקי API של גרפיקה כמו OpenGL ES ו-Vulkan.
  • ACCELERATOR: יחידת עיבוד עצבי (NPU) ייעודית.

מטמיעים את getVersionString ב-IDevice.hal כדי לקבל את מחרוזת הגרסה של הטמעת המכשיר. השיטה הזו צריכה להחזיר מחרוזת שאנשים יכולים לקרוא. הפורמט של המחרוזת הוא ספציפי לספק. מחרוזת הגרסה חייבת להיות שונה בכל גרסה חדשה של מנהל התקן.

השם של ממשק IDevice חייב להיות בפורמט {VENDOR}-{DEVICE_NAME}.