در اندروید 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}
پیروی کند.