Kontrol akışı

Android 11'den başlayarak NNAPI, diğer modelleri bağımsız değişken olarak alan ve bunları koşullu ( IF ) veya tekrar tekrar ( WHILE ) yürüten IF ve WHILE olmak üzere iki kontrol akışı işlemi içerir. Bu, giriş değerlerine göre farklı işlemleri yürüten veya işlemleri açmadan birden çok kez yürüten modellerin oluşturulmasına olanak tanır. Bu, dinamik RNN ​​ve seq2seq gibi kullanım durumları için önemlidir.

NN HAL 1.3'te model, bir yürütmenin girdilerini ve çıktılarını belirtmek için kullanılan ana alt grafik de dahil olmak üzere birden fazla alt grafik içerir. Bir alt grafik, SUBGRAPH türündeki işlenenleri kullanarak diğer alt grafiklere referans verebilir. Çerçeve, yalnızca hızlandırıcının söz konusu kontrol akışı işlemi tarafından referans verilen tüm alt grafiklerdeki tüm işlemleri desteklemesi durumunda bir hızlandırıcıya bir kontrol akışı işlemi gönderebilir.

HAL arayüzleri

NN HAL 1.3'te kontrol akışına ilişkin tanımlar types.hal dosyasında yer almaktadır.

IDevice.hal , getSupportedOperations_1_3() yönteminin IF ve WHILE işlemlerini diğer işlemlerden farklı şekilde ele alması gereken IDevice içerir.

IPreparedModel.hal IPreparedModel içerir; bu yöntemlerin execute_1_3() , executeSynchronously_1_3() ve executeFenced() isteğe bağlı bir loopTimeoutDuration bağımsız değişkeni alır.

Sürücü uygulaması

Örnek bir işlem uygulaması için bkz. CpuExecutor::executeIfOperation ve CpuExecutor::executeWhileOperation . Örnek işlem doğrulama mantığı için bkz. validateIfOperation() ve validateWhileOperation() .

Şekil 1 TENSOR_INT32 işlenenleri üzerinde aritmetik ve karşılaştırma işlemlerini desteklemenin önemli olduğunu unutmayın; bunlar döngü sayaçları olarak kullanılabilir. Benzer şekilde, şekil 1 TENSOR_BOOL8 işlenenlerini üreten işlemler, IF ve WHILE koşullarıyla birlikte kullanılmalıdır.

WHILE döngüsü yürütme zaman aşımı

Sonsuz döngüleri önlemek için, bir WHILE döngüsü IPreparedModel::execute_1_3() , IPreparedModel::executeSynchronously_1_3() veya IPreparedModel::executeFenced() çağrısına iletilen loopTimeoutDuration değerinden (veya varsayılan değerden) daha uzun sürerse yürütme durdurulmalıdır. atlanırsa).

Doğrulama

Kontrol akışı testleri, CTS ve VTS test paketlerinin bir parçasıdır. Daha fazla bilgi için bkz . Doğrulama .