2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
기기 검색 및 할당
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
Android 10의 NNAPI(Neural Networks API)에는 머신러닝 프레임워크 라이브러리 및 앱이 사용 가능한 기기에 대한 정보를 얻고 어떤 기기에 모델을 실행할지 지정할 수 있게 해주는 기능이 도입되었습니다. 사용 가능한 기기에 관한 정보를 제공하면 앱에서 알려진 비호환성을 피하기 위해 기기에 있는 드라이버의 정확한 버전을 확인할 수 있습니다. 모델의 다양한 섹션을 실행할 기기를 지정할 수 있는 기능을 앱에 제공하면 앱이 배포된 제품에 맞게 최적화됩니다.
NN HAL 1.2 구현에는 기기 검색 및 할당 지원이 필요합니다.
구현
NNAPI에서 기기 검색 및 할당 기능을 지원하려면 getType
및 getVersionString
을 IDevice.hal
에서 구현하여 프레임워크가 기기 유형 및 드라이버 버전 정보를 가져올 수 있도록 합니다.
각 기기에서 types.hal
의 DeviceType
에 지정된 대로 다음 카테고리 중 하나로 유형을 지정합니다.
OTHER
: 유형이 다를 수 있는 여러 기기를 관리하는 단일 IDevice
인터페이스인 이종 인터페이스를 포함해 다른 어떤 카테고리에도 속하지 않는 기기입니다. 이종 인터페이스를 포함하는 드라이버는 개별 기기와 일치하여 애플리케이션이 이러한 기기를 선택할 수 있게 해주는 별도의 IDevice
인터페이스도 노출시켜야 합니다.
CPU
: 단일 코어 또는 멀티 코어 CPU입니다.
GPU
: NNAPI 모델을 실행할 수 있고 OpenGL ES 및 Vulkan과 같은 그래픽 API의 속도를 높여주는 GPU입니다.
ACCELERATOR
: 전용 NPU(신경망 처리 장치)입니다.
기기 구현의 버전 문자열을 가져오기 위한 getVersionString
을 IDevice.hal
에서 구현합니다.
이 메서드는 사람이 읽을 수 있는 문자열을 반환해야 합니다. 문자열 형식은 공급업체마다 다릅니다. 버전 문자열은 드라이버의 새로운 버전마다 달라야 합니다.
IDevice
인터페이스의 이름은 {VENDOR}-{DEVICE_NAME}
형식을 따라야 합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Device discovery and assignment\n\n| **Deprecated:** Starting in Android 15, the\n| [NNAPI (NDK API)](https://developer.android.com/ndk/guides/neuralnetworks) is deprecated. The Neural Networks HAL interface\n| continues to be supported.\n|\n| For more information, see the\n| [NNAPI Migration Guide](https://developer.android.com/ndk/guides/neuralnetworks/migration-guide).\n\nIn Android 10, the\n[Neural Networks API (NNAPI)](/docs/core/interaction/neural-networks)\nintroduces functions that allow\nmachine learning framework\nlibraries and apps to get information about the devices available and\nspecify which devices to execute a model on. Providing information about the\navailable devices allows apps to get the exact version of the drivers\nfound on the device to avoid known incompatibilities. By giving apps the\nability to specify which devices are to execute different sections of a model,\napps can be optimized for the product on which they are deployed.\n\nSupport for device discovery and assignment is required for NN HAL 1.2\nimplementations.\n\nImplementation\n--------------\n\nTo support the device discovery and assignment features in NNAPI, implement\n[`getType`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#76)\nand\n[`getVersionString`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#56)\nin `IDevice.hal` to allow the framework to get the device type and driver\nversion.\n\nFor each device, specify the type as one of the following categories as\nspecified in\n[`DeviceType`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/types.hal#4737)\nin\n[`types.hal`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/types.hal).\n\n- **`OTHER`:** A device that doesn't fall into any of the other categories, including a heterogeneous interface, which is a single `IDevice` interface that manages multiple devices, possibly of different types. A driver with a heterogeneous interface should also expose separate `IDevice` interfaces that correspond to individual devices to allow an application to choose from those devices.\n- **`CPU`:** A single core or multicore CPU.\n- **`GPU`:** A GPU that can run NNAPI models and accelerate graphics APIs such as OpenGL ES and Vulkan.\n- **`ACCELERATOR`:** A dedicated neural processing unit (NPU).\n\nImplement\n[`getVersionString`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#56)\nin `IDevice.hal` for getting the version string of the device implementation.\nThis method must return a string that is human readable. The format of the\nstring is vendor specific. The version string must be different for each new\nversion of a driver.\n\nThe name of the `IDevice` interface must follow the `{VENDOR}-{DEVICE_NAME}`\nformat."]]