Wykrywanie i przypisywanie urządzeń

W Androidzie 10 Neural Networks API (NNAPI) wprowadza funkcje, które umożliwiają bibliotekom i aplikacjom platform uczenia maszynowego pobieranie informacji o dostępnych urządzeniach i określanie, na których urządzeniach ma być wykonywany model. Podanie informacji o dostępnych urządzeniach umożliwia aplikacjom pobieranie dokładnej wersji sterowników urządzenia, co pozwala uniknąć znanych niezgodności. Dzięki możliwości określenia, na których urządzeniach mają być wykonywane różne sekcje modelu, aplikacje można optymalizować pod kątem usługi, w której zostały wdrożone.

Implementacje NN HAL 1.2 wymagają obsługi wykrywania i przypisywania urządzeń.

Implementacja

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

W przypadku każdego urządzenia określ typ jako jedną z kategorii określonych w sekcji DeviceType w sekcji types.hal.

  • OTHER: urządzenie, które nie należy do żadnej z pozostałych kategorii, w tym interfejs heterogeniczny, czyli pojedynczy interfejs IDevice, który służy do zarządzania wieloma urządzeniami, prawdopodobnie różnych typów. Kierowca z heterogenicznym interfejsem powinien też udostępnić osobne interfejsy IDevice, które odpowiadają poszczególnym urządzeniom, aby umożliwić aplikacji wybór jednego z tych urządzeń.
  • CPU: procesor jednordzeniowy lub wielordzeniowy.
  • GPU: procesor graficzny, który może obsługiwać modele NNAPI i przyspieszać działanie interfejsów API związanych z grafiką, takich 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 zwracać ciąg znaków, który jest czytelny dla człowieka. Format ciągu znaków zależy od dostawcy. Każda nowa wersja sterownika musi mieć inny ciąg znaków wersji.

Nazwa interfejsu IDevice musi mieć format {VENDOR}-{DEVICE_NAME}.