در اندروید ۱۰، رابط برنامهنویسی کاربردی شبکههای عصبی (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} پیروی کند.