Wykrywanie i przypisywanie urządzeń

W systemie Android 10 interfejs API sieci neuronowych (NNAPI) wprowadza funkcje, które umożliwiają bibliotekom i aplikacjom struktury uczenia maszynowego uzyskiwanie informacji o dostępnych urządzeniach i określanie, na których urządzeniach należy wykonać model. Dostarczanie informacji o dostępnych urządzeniach umożliwia aplikacjom uzyskanie dokładnej wersji sterowników znalezionych na urządzeniu, aby uniknąć znanych niezgodności. Dając aplikacjom możliwość określenia, które urządzenia mają wykonywać różne sekcje modelu, aplikacje można zoptymalizować pod kątem produktu, na którym są wdrażane.

W przypadku implementacji NN HAL 1.2 wymagana jest obsługa wykrywania i przypisywania urządzeń.

Realizacja

Aby obsługiwać funkcje wykrywania i przypisywania urządzeń w NNAPI, zaimplementuj getType i getVersionString w IDevice.hal , aby umożliwić strukturze uzyskanie typu urządzenia i wersji sterownika.

Dla każdego urządzenia określ typ jako jedną z następujących kategorii określonych w DeviceType w types.hal .

  • OTHER : urządzenie, które nie należy do żadnej z pozostałych kategorii, w tym heterogeniczny interfejs, który jest pojedynczym interfejsem IDevice , który zarządza wieloma urządzeniami, prawdopodobnie różnych typów. Sterownik z heterogenicznym interfejsem powinien również udostępniać oddzielne interfejsy IDevice , które odpowiadają poszczególnym urządzeniom, aby umożliwić aplikacji wybór spośród tych urządzeń.
  • CPU : Jednordzeniowy lub wielordzeniowy procesor.
  • GPU : GPU, który może uruchamiać modele NNAPI i przyspieszać graficzne interfejsy API, takie jak OpenGL ES i Vulkan.
  • ACCELERATOR : Dedykowana jednostka przetwarzania neuronowego (NPU).

Zaimplementuj getVersionString w IDevice.hal , aby uzyskać ciąg wersji implementacji urządzenia. Ta metoda musi zwrócić ciąg, który jest czytelny dla człowieka. Format ciągu zależy od dostawcy. Ciąg wersji musi być inny dla każdej nowej wersji sterownika.

Nazwa interfejsu IDevice musi być zgodna z formatem {VENDOR}-{DEVICE_NAME} .