অ্যান্ড্রয়েড 11 থেকে শুরু করে, এনএনএপিআই-তে দুটি নিয়ন্ত্রণ প্রবাহ অপারেশন রয়েছে, IF এবং WHILE , যা অন্য মডেলগুলিকে আর্গুমেন্ট হিসাবে নেয় এবং শর্তসাপেক্ষে ( IF ) বা বারবার ( WHILE ) চালায়। এটি এমন মডেল তৈরি করার অনুমতি দেয় যা ইনপুট মানের উপর ভিত্তি করে বিভিন্ন ক্রিয়াকলাপ চালায় বা আনরোল না করে একাধিকবার অপারেশন চালায়। এটি ডায়নামিক RNN এবং seq2seq এর মতো ব্যবহারের ক্ষেত্রে গুরুত্বপূর্ণ।
NN HAL 1.3-এ, মডেলটিতে একাধিক সাবগ্রাফ অন্তর্ভুক্ত করা হয়েছে, যার মধ্যে প্রধান সাবগ্রাফ অন্তর্ভুক্ত রয়েছে যা একটি এক্সিকিউশনের ইনপুট এবং আউটপুট নির্দিষ্ট করার জন্য ব্যবহৃত হয়। একটি সাবগ্রাফ SUBGRAPH ধরনের অপারেন্ড ব্যবহার করে অন্যান্য সাবগ্রাফ উল্লেখ করতে পারে। ফ্রেমওয়ার্ক একটি নিয়ন্ত্রণ প্রবাহ অপারেশনকে একটি এক্সিলারেটরে পাঠাতে পারে শুধুমাত্র যদি এক্সিলারেটর সেই নিয়ন্ত্রণ প্রবাহ অপারেশন দ্বারা উল্লেখ করা সমস্ত সাবগ্রাফের সমস্ত ক্রিয়াকলাপ সমর্থন করে।
HAL ইন্টারফেস
NN HAL 1.3-এ, নিয়ন্ত্রণ প্রবাহ সম্পর্কিত সংজ্ঞাগুলি types.hal এ রয়েছে।
-
IFএবংWHILEঅপারেশন প্রকার -
SUBGRAPHঅপারেন্ড টাইপ এবং সংশ্লিষ্টSUBGRAPHঅপারেন্ড জীবনকাল -
Modelস্ট্রাকচার যাতে প্রধান সাবগ্রাফ এবং রেফারেন্সড সাবগ্রাফের একটি তালিকা থাকে -
Capabilitiesকাঠামো যাতেifPerformanceএবংwhilePerformanceথাকে
IDevice.hal IDevice রয়েছে, যার পদ্ধতি getSupportedOperations_1_3() অবশ্যই IF এবং WHILE অন্যান্য ক্রিয়াকলাপগুলির থেকে আলাদাভাবে আচরণ করবে৷
IPreparedModel.hal এ IPreparedModel রয়েছে, যার পদ্ধতি execute_1_3() , executeSynchronously_1_3() , এবং executeFenced() একটি ঐচ্ছিক loopTimeoutDuration আর্গুমেন্ট নেয়।
ড্রাইভার বাস্তবায়ন
একটি নমুনা অপারেশন বাস্তবায়নের জন্য, CpuExecutor::executeIfOperation এবং CpuExecutor::executeWhileOperation দেখুন। নমুনা অপারেশন বৈধতা যুক্তির জন্য, validateIfOperation() এবং validateWhileOperation() দেখুন।
মনে রাখবেন যে আকৃতি 1 এর TENSOR_INT32 অপারেন্ডগুলিতে গাণিতিক এবং তুলনামূলক ক্রিয়াকলাপগুলিকে সমর্থন করা গুরুত্বপূর্ণ, কারণ এগুলি লুপ কাউন্টার হিসাবে ব্যবহার করা যেতে পারে। একইভাবে, আকৃতি 1 এর TENSOR_BOOL8 অপারেন্ড উত্পাদনকারী অপারেশনগুলি IF এবং WHILE শর্তগুলির সাথে ব্যবহার করা উচিত৷
যখন লুপ এক্সিকিউশন টাইমআউট
অসীম লুপগুলি প্রতিরোধ করতে, যদি একটি WHILE লুপটি IPreparedModel::execute_1_3() , IPreparedModel::executeSynchronously_1_3() , বা IPreparedModel::executeFenced() de:) এর একটি কলে পাস করা loopTimeoutDuration মানের চেয়ে বেশি সময় নেয় তবে নির্বাহকে বাতিল করতে হবে।
বৈধতা
কন্ট্রোল ফ্লো পরীক্ষা হল CTS এবং VTS টেস্ট স্যুটের অংশ। আরও তথ্যের জন্য, যাচাইকরণ দেখুন।