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