مسار التحكّم

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