W Androidzie 10 interfejs Neural Networks API (NNAPI) udostępnia funkcje, które umożliwiają bibliotekom i aplikacjom korzystającym z ramowego oprogramowania uczenia maszynowego uzyskiwanie informacji o dostępnych urządzeniach oraz 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 znalezionych na urządzeniu, aby uniknąć znanych niezgodności. Dzięki możliwości określenia, które urządzenia mają wykonywać różne sekcje modelu, aplikacje mogą być optymalizowane pod kątem produktu, w którym są wdrażane.
W przypadku implementacji NN HAL 1.2 wymagana jest obsługa wykrywania i przypisywania urządzeń.
Implementacja
Aby obsługiwać funkcje wykrywania i przypisywania urządzeń w NNAPI, wprowadź getType
i getVersionString
w IDevice.hal
, aby umożliwić frameworkowi uzyskanie typu urządzenia i wersji sterownika.
W przypadku każdego urządzenia określ typ jako jedną z tych kategorii:DeviceType
types.hal
.
OTHER
: urządzenie, które nie pasuje do żadnej z pozostałych kategorii, w tym do heterogenicznego interfejsu, który jest pojedynczym interfejsemIDevice
zarządzającym wieloma urządzeniami, prawdopodobnie różnych typów. Sterownik z heterogenicznym interfejsem powinien też udostępniać osobne interfejsyIDevice
odpowiadające poszczególnym urządzeniom, aby aplikacja mogła je wybierać.CPU
: procesor jedno- lub wielordzeniowy.GPU
: procesor graficzny, który może uruchamiać modele NNAPI i przyspieszać interfejsy API do grafiki, takie jak OpenGL ES i Vulkan.ACCELERATOR
: dedykowana jednostka przetwarzania neuronowego (NPU).
Zaimplementuj funkcję getVersionString
w IDevice.hal
, aby pobrać ciąg znaków wersji implementacji urządzenia.
Ta metoda musi zwracać ciąg tekstowy zrozumiały dla człowieka. Format ciągu jest specyficzny dla danego dostawcy. Ciąg znaków wersji musi być inny w przypadku każdej nowej wersji sterownika.
Nazwa interfejsu IDevice
musi mieć format {VENDOR}-{DEVICE_NAME}
.