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

در اندروید 10، API شبکه‌های عصبی (NNAPI) توابعی را معرفی می‌کند که به کتابخانه‌ها و برنامه‌های چارچوب یادگیری ماشین اجازه می‌دهد اطلاعاتی در مورد دستگاه‌های موجود دریافت کنند و مشخص کنند که در کدام دستگاه‌ها یک مدل را اجرا کنند. ارائه اطلاعات در مورد دستگاه های موجود به برنامه ها اجازه می دهد تا نسخه دقیق درایورهای موجود در دستگاه را دریافت کنند تا از ناسازگاری های شناخته شده جلوگیری کنند. با دادن توانایی به برنامه‌ها برای تعیین اینکه کدام دستگاه‌ها بخش‌های مختلف یک مدل را اجرا کنند، برنامه‌ها را می‌توان برای محصولی که روی آن مستقر شده‌اند بهینه کرد.

برای اجرای NN HAL 1.2، پشتیبانی از کشف و تخصیص دستگاه مورد نیاز است.

پیاده سازی

برای پشتیبانی از ویژگی‌های کشف و تخصیص دستگاه در NNAPI، getType و getVersionString را در IDevice.hal پیاده‌سازی کنید تا به چارچوب اجازه دهید نوع دستگاه و نسخه درایور را دریافت کند.

برای هر دستگاه، نوع را به عنوان یکی از دسته های زیر که در DeviceType در types.hal مشخص شده است، مشخص کنید.

  • OTHER : دستگاهی که در هیچ یک از دسته‌های دیگر قرار نمی‌گیرد، از جمله یک رابط ناهمگن، که یک رابط IDevice واحد است که چندین دستگاه، احتمالاً از انواع مختلف، را مدیریت می‌کند. درایور با رابط ناهمگن همچنین باید رابط‌های IDevice جداگانه‌ای را که با دستگاه‌های جداگانه مطابقت دارد در معرض دید قرار دهد تا به برنامه اجازه دهد از بین آن دستگاه‌ها انتخاب کند.
  • CPU : یک CPU تک هسته ای یا چند هسته ای.
  • GPU : یک GPU که می تواند مدل های NNAPI را اجرا کند و API های گرافیکی مانند OpenGL ES و Vulkan را تسریع بخشد.
  • ACCELERATOR : یک واحد پردازش عصبی اختصاصی (NPU).

برای دریافت رشته نسخه پیاده سازی دستگاه، getVersionString در IDevice.hal پیاده سازی کنید. این متد باید رشته ای را برگرداند که برای انسان قابل خواندن باشد. قالب رشته مخصوص فروشنده است. رشته نسخه باید برای هر نسخه جدید درایور متفاوت باشد.

نام رابط IDevice باید از قالب {VENDOR}-{DEVICE_NAME} پیروی کند.