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

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