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