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

ב-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}.