নিয়ন্ত্রণ প্রবাহ

অ্যান্ড্রয়েড 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.halIDevice রয়েছে, যার পদ্ধতি getSupportedOperations_1_3() অবশ্যই IF এবং WHILE অন্যান্য ক্রিয়াকলাপগুলির থেকে আলাদাভাবে আচরণ করবে৷

IPreparedModel.halIPreparedModel রয়েছে, যার পদ্ধতি 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() একটি কলে পাস করা loopTimeoutDuration মানের থেকে বেশি সময় নেয় তবে নির্বাহকে বাতিল করতে হবে যদি বাদ দেওয়া হয়)।

বৈধতা

কন্ট্রোল ফ্লো পরীক্ষা হল CTS এবং VTS টেস্ট স্যুটের অংশ। আরও তথ্যের জন্য, যাচাইকরণ দেখুন।