التحكّم في التدفق

بدءًا من Android 11، تتضمّن NNAPI عمليتَي التحكّم في سير العمل، وهما 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. لمزيد من المعلومات، يُرجى الاطّلاع على التحقق من صحة البيانات.