کنترل جریان

از Android 11، «میانای برنامه‌سازی کاربردی شبکه عصبی» شامل دو عملکرد جریان کنترل، IF و WHILE، است که مدل‌های دیگر را به‌عنوان آرگومان می‌پذیرند و آن‌ها را به‌صورت شرطی (IF) یا مکرر (WHILE) اجرا می‌کنند. این امر امکان ساختن مدل‌هایی را فراهم می‌کند که عملکردهای مختلف را براساس مقادیر ورودی اجرا می‌کنند یا عملکردها را بدون باز کردن چندین بار اجرا می‌کنند. این برای موارد استفاده‌ای مانند RNN پویا و seq2seq مهم است.

در NN HAL 1.3، مدل شامل چندین زیرگراف می‌شود، ازجمله زیرگراف اصلی که برای مشخص کردن دروندادها و بروندادهای اجرا استفاده می‌شود. یک زیرگراف می‌تواند بااستفاده از عملوندهای نوع SUBGRAPH به زیرگراف‌های دیگر ارجاع دهد. چارچوب فقط درصورتی می‌تواند عملیات جریان کنترل را به شتاب‌دهنده ارسال کند که شتاب‌دهنده از همه عملیات‌های موجود در همه زیرگراف‌هایی که آن عملیات جریان کنترل به آن‌ها ارجاع می‌دهد پشتیبانی کند.

میاناهای HAL

در NN HAL 1.3، تعاریف مربوط به جریان کنترل در types.hal قرار دارد.

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() مراجعه کنید.

توجه داشته باشید که پشتیبانی از عملیات‌های مقایسه و محاسباتی روی TENSOR_INT32 عملوند با شکل 1 مهم است، زیرا می‌توان از آن‌ها به‌عنوان شمارنده حلقه استفاده کرد. به‌همین ترتیب، عملیاتی که TENSOR_BOOL8 عملوند با شکل 1 تولید می‌کند باید با شرایط IF و WHILE استفاده شود.

زمان اتمام اجرای حلقه «WHILE»

برای جلوگیری از حلقه‌های بی‌نهایت، اگر حلقه WHILE بیشتر از مقدار loopTimeoutDuration که به فراخوانی IPreparedModel::execute_1_3()، IPreparedModel::executeSynchronously_1_3()، یا IPreparedModel::executeFenced() (یا مقدار پیش‌فرض درصورت حذف) ارسال شده است طول بکشد، اجرا باید متوقف شود.

اعتبارسنجی

آزمایش‌های جریان کنترل بخشی از مجموعه‌های آزمایشی CTS و VTS هستند. برای اطلاعات بیشتر، اعتبارسنجی را ببینید.