Sprawdzone metody implementacji sterownika NNAPI

Na tej stronie znajdziesz sprawdzone metody implementacji sterowników interfejsu NNAPI (Neural Networks API), które umożliwiają szerokie stosowanie tego interfejsu przez programistów aplikacji.

Krótki czas uruchamiania

Jeśli kierowca zmieni ciężar modelu przy pierwszym użyciu, upewnij się, sterownik obsługuje buforowanie kompilacji, co skraca czas potrzebny na kompilację po uruchomieniu aplikacji. Jest to ważne, ponieważ aplikacje mogą nie używać akceleracji sprzętowej, jeśli czas uruchamiania jest zbyt długi. Na przykład niektóre aplikacje mają ponad 100 MB wag, a przekształcanie ich za każdym razem, gdy aplikacja się uruchamia, jest nieefektywne.

Zmniejsz minimalny czas oczekiwania

Aby mieć pewność, że modele korzystają z akceleracji sprzętowej, ważne jest zmniejszenie minimalne opóźnienia w sterownikach. Wiele aplikacji korzysta z małych modeli, które są wykonywane wielokrotnie. Jeśli minimalne opóźnienie podczas wykonywania zbioru zadań jest zbyt długie (np. kilka milisekund), modele mogą wykonywać zbiór zadań na procesorze, co zajmuje tylko 1–2 milisekundy, zamiast korzystać z przyspieszenia sprzętowego. Uważaj na kosztowną synchronizację wątków.

Użyj grupy NN HAL SchedTune

Począwszy od Androida 11 lub nowszego, AOSP zawiera dedykowaną grupę SchedTune dla interprocesorowych procesów NN HAL, która umożliwia korzystanie z dużych rdzeni w ramach procesów interprocesorowych, podobnie jak w przypadku implementacji w ramach tego samego procesu w ramach zdefiniowanego z góry top-appcgroup. Użycie tego SchedTune Group zmniejsza obciążenie kierowcy, zwłaszcza w przypadku małych modeli.

Aby używać grupy SchedTune, dodaj ten wiersz do pliku init.rc procesu NN HAL:

writepid /dev/stune/nnapi-hal/tasks