অ্যান্ড্রয়েড ১০-এ, নিউরাল নেটওয়ার্কস এপিআই (NNAPI) এমন কিছু ফাংশন চালু করেছে যা মেশিন লার্নিং ফ্রেমওয়ার্ক লাইব্রেরি এবং অ্যাপগুলোকে উপলব্ধ ডিভাইসগুলো সম্পর্কে তথ্য পেতে এবং কোন ডিভাইসগুলোতে একটি মডেল চালানো হবে তা নির্দিষ্ট করে দিতে সাহায্য করে। উপলব্ধ ডিভাইসগুলো সম্পর্কে তথ্য সরবরাহ করার ফলে অ্যাপগুলো ডিভাইসে থাকা ড্রাইভারের সঠিক সংস্করণটি পেতে পারে, যা পরিচিত অসঙ্গতিগুলো এড়াতে সাহায্য করে। একটি মডেলের বিভিন্ন অংশ কোন ডিভাইসে চালানো হবে তা নির্দিষ্ট করে দেওয়ার ক্ষমতা অ্যাপগুলোকে দেওয়ার মাধ্যমে, যে প্রোডাক্টে সেগুলো স্থাপন করা হয়েছে তার জন্য সেগুলোকে অপ্টিমাইজ করা সম্ভব হয়।
NN HAL 1.2 বাস্তবায়নের জন্য ডিভাইস আবিষ্কার এবং নির্ধারণের সমর্থন প্রয়োজন।
বাস্তবায়ন
NNAPI-তে ডিভাইস ডিসকভারি এবং অ্যাসাইনমেন্ট ফিচারগুলো সাপোর্ট করার জন্য, IDevice.hal এ getType এবং getVersionString ইমপ্লিমেন্ট করুন, যাতে ফ্রেমওয়ার্কটি ডিভাইসের ধরন এবং ড্রাইভারের সংস্করণ জানতে পারে।
প্রতিটি ডিভাইসের জন্য, types.hal এর DeviceType এ উল্লেখিত নিম্নলিখিত বিভাগগুলির মধ্যে একটি হিসাবে প্রকারটি নির্দিষ্ট করুন।
-
OTHER: এমন একটি ডিভাইস যা অন্য কোনো বিভাগের অন্তর্ভুক্ত নয়, যার মধ্যে একটি হেটেরোজেনাস ইন্টারফেসও রয়েছে, যা হলো একটি এককIDeviceইন্টারফেস যা একাধিক ডিভাইস পরিচালনা করে, যা সম্ভবত বিভিন্ন ধরণের হতে পারে। একটি হেটেরোজেনাস ইন্টারফেসযুক্ত ড্রাইভারের উচিত প্রতিটি ডিভাইসের জন্য পৃথকIDeviceইন্টারফেসও উপলব্ধ করা, যাতে একটি অ্যাপ্লিকেশন সেই ডিভাইসগুলো থেকে বেছে নিতে পারে। -
CPU: একটি একক কোর বা মাল্টিকোর সিপিইউ। -
GPU: এমন একটি GPU যা NNAPI মডেল চালাতে পারে এবং OpenGL ES ও Vulkan-এর মতো গ্রাফিক্স API-গুলোকে ত্বরান্বিত করতে পারে। -
ACCELERATOR: একটি বিশেষায়িত নিউরাল প্রসেসিং ইউনিট (NPU)।
ডিভাইস ইমপ্লিমেন্টেশনের ভার্সন স্ট্রিং পাওয়ার জন্য IDevice.hal এ getVersionString ইমপ্লিমেন্ট করুন। এই মেথডটিকে অবশ্যই একটি পাঠযোগ্য স্ট্রিং রিটার্ন করতে হবে। স্ট্রিংটির ফরম্যাট ভেন্ডর-নির্দিষ্ট। ড্রাইভারের প্রতিটি নতুন ভার্সনের জন্য ভার্সন স্ট্রিংটি অবশ্যই ভিন্ন হতে হবে।
IDevice ইন্টারফেসের নামটি অবশ্যই {VENDOR}-{DEVICE_NAME} ফরম্যাট অনুসরণ করবে।