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

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