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