W Androidzie 10 interfejs Neural Networks API (NNAPI) wprowadza funkcje, które umożliwiają bibliotekom i aplikacjom platformy uczenia maszynowego uzyskiwanie informacji o dostępnych urządzeniach i określanie, na których z nich ma być wykonywany model. Podawanie informacji o dostępnych urządzeniach umożliwia aplikacjom uzyskanie dokładnej wersji sterowników znajdujących się na urządzeniu, aby uniknąć znanych niezgodności. Dzięki możliwości określania przez aplikacje, które urządzenia mają wykonywać różne sekcje modelu, można je zoptymalizować pod kątem produktu, na którym są wdrażane.
Obsługa wykrywania i przypisywania urządzeń jest wymagana w przypadku implementacji NN HAL 1.2.
Implementacja
Aby obsługiwać funkcje wykrywania i przypisywania urządzeń w NNAPI, zaimplementuj
getType
i
getVersionString
w IDevice.hal
, aby umożliwić platformie uzyskanie typu urządzenia i wersji sterownika.
W przypadku każdego urządzenia określ typ jako jedną z tych kategorii, zgodnie z opisem w DeviceType
i types.hal
.
OTHER
: urządzenie, które nie należy do żadnej z pozostałych kategorii, w tym interfejs heterogeniczny, czyli pojedynczy interfejsIDevice
, który zarządza wieloma urządzeniami, być może różnego typu. Sterownik z heterogenicznym interfejsem powinien też udostępniać osobne interfejsyIDevice
odpowiadające poszczególnym urządzeniom, aby aplikacja mogła wybierać spośród nich.CPU
: procesor jedno- lub wielordzeniowy.GPU
: procesor graficzny, który może uruchamiać modele NNAPI i przyspieszać działanie interfejsów API grafiki, takich jak OpenGL ES i Vulkan.ACCELERATOR
: dedykowana jednostka przetwarzania neuronowego (NPU);
Zaimplementuj
getVersionString
w IDevice.hal
, aby uzyskać ciąg znaków wersji implementacji urządzenia.
Ta metoda musi zwracać ciąg znaków zrozumiały dla człowieka. Format ciągu znaków jest specyficzny dla dostawcy. Ciąg znaków wersji musi być inny w przypadku każdej nowej wersji sterownika.
Nazwa interfejsu IDevice
musi być zgodna z formatem {VENDOR}-{DEVICE_NAME}
.