مسار التحكّم

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