کشف و تخصیص دستگاه

در Android 10، میانای برنامه‌سازی کاربردی شبکه‌های عصبی (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} پیروی کند.