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