بدءًا من Android 11، يتضمّن NNAPI عمليتَي تدفق تحكّم، وهما IF
وWHILE
، اللتان تأخذان نماذج أخرى كوسيطات، وتنفيذهما بشكل مشروط (IF
) أو متكرّر (WHILE
). يتيح ذلك IF
إنشاء نماذج تنفّذ عمليات مختلفة استنادًا إلى قيم الإدخالWHILE
أو تنفّذ العمليات عدّة مرات بدون إلغاء التفاف. هذا مهم لحالات الاستخدام مثل
RNN الديناميكي وseq2seq.
في NN HAL 1.3، يدمج النموذج العديد من المخططات الفرعية، بما في ذلك المخطط الفرعي
الرئيسي الذي يُستخدَم لتحديد مدخلات ومخرجات التنفيذ. يمكن أن تشير الشبكة الفرعية العميقة إلى شبكات فرعية أخرى باستخدام عوامل التشغيل من النوع SUBGRAPH
. لا يمكن لإطار العمل إرسال عملية تدفق تحكّم إلى مسرع إلا إذا كان المسرع يتيح جميع العمليات في جميع المخططات الفرعية التي تشير إليها عملية تدفق التحكّم.
واجهات HAL
في NN HAL 1.3، تكون التعريفات ذات الصلة بالتحكّم في التدفق في
types.hal
.
- أنواع عمليات
IF
وWHILE
SUBGRAPH
نوع الم Operand وSUBGRAPH
مدة صلاحية الم Operand المقابلة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()
.
يُرجى العلم أنّه من المهم إتاحة العمليات الحسابية وعمليات المقارنة على
TENSOR_INT32
عناصر التشغيل ذات الشكل 1
، لأنّه يمكن استخدامها كعدادات للحلقات.
وبالمثل، يجب استخدام العمليات التي تُنشئ عوامل تشغيل TENSOR_BOOL8
ذات شكل 1
مع شروط IF
وWHILE
.
مهلة تنفيذ حلقة التكرار WHILE
لمنع التكرارات اللانهائية، يجب إلغاء التنفيذ إذا استغرقت عملية التكرار WHILE
وقتًا أطول من قيمة loopTimeoutDuration
التي تم تمريرها إلى طلب IPreparedModel::execute_1_3()
أو IPreparedModel::executeSynchronously_1_3()
أو IPreparedModel::executeFenced()
(أو القيمة التلقائية في حال حذفها).
التحقُّق
تُعدّ اختبارات مسار التحكّم جزءًا من مجموعات اختبار CTS وVTS. لمزيد من المعلومات، يُرجى الاطّلاع على صفحة التحقق من الصحة.