Kontrol akışı

Android 11'den itibaren NNAPI, diğer modelleri bağımsız değişken olarak alıp koşullu olarak (IF) veya tekrar tekrar yürüten (WHILE) iki kontrol akışı işlemi içerir: IF ve WHILE. Bu sayede, giriş değerlerine göre farklı işlemler yürüten veya işlemleri kaldırmadan birden çok kez yürüten modeller oluşturulabilir. Bu, dinamik RNN ve seq2seq gibi kullanım alanları için önemlidir.

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

HAL arayüzleri

NN HAL 1.3'te, kontrol akışıyla ilgili tanımlar types.hal içindedir.

IDevice.hal, IDevice yöntemini içerir. Bu grubun getSupportedOperations_1_3() yöntemi, IF ve WHILE yöntemini diğer işlemlerden farklı şekilde işlemelidir.

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

Sürücü uygulaması

Örnek işlem uygulaması için CpuExecutor::executeIfOperation ve CpuExecutor::executeWhileOperation sayfalarına göz atın. Örnek işlem doğrulama mantığı için validateIfOperation() ve validateWhileOperation() bölümlerine göz atın.

1 şeklinin TENSOR_INT32 işlenenlerinde aritmetik ve karşılaştırma işlemlerinin desteklenmesinin önemli olduğunu unutmayın. Bunlar döngü sayaçları olarak kullanılabilir. Benzer şekilde, 1 şeklinin TENSOR_BOOL8 işlem görenlerini üreten işlemler IF ve WHILE koşullarıyla kullanılmalıdır.

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

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

Doğrulama

Kontrol akışı testleri, CTS ve VTS test paketlerinin bir parçasıdır. Daha fazla bilgi için Doğrulama bölümüne bakın.