From abc95d04dfb2462ffb42bc1facde4f45ecc65319 Mon Sep 17 00:00:00 2001 From: Kevin May Date: Fri, 15 May 2020 15:34:03 +0100 Subject: IVGCVSW-4837 Add driver service name command line option * revert commit 8a510e8e9ed22ec0bbd295b69a6700ad0ba7cfd8 * Add driver option to give service a name, default to "armnn" Change-Id: I9755206494f637bee4c8299bf6370fc4731638c8 Signed-off-by: Kevin May --- Android.mk | 24 +++++++++++----------- DriverOptions.cpp | 4 ++++ DriverOptions.hpp | 2 ++ ...ardware.neuralnetworks@1.0-service-arm-armnn.rc | 4 ---- ...id.hardware.neuralnetworks@1.0-service-armnn.rc | 4 ++++ ...ardware.neuralnetworks@1.1-service-arm-armnn.rc | 4 ---- ...id.hardware.neuralnetworks@1.1-service-armnn.rc | 4 ++++ ...ardware.neuralnetworks@1.2-service-arm-armnn.rc | 4 ---- ...id.hardware.neuralnetworks@1.2-service-armnn.rc | 4 ++++ ...ardware.neuralnetworks@1.3-service-arm-armnn.rc | 4 ---- ...id.hardware.neuralnetworks@1.3-service-armnn.rc | 4 ++++ docs/IntegratorGuide.md | 14 ++++++------- service.cpp | 3 ++- 13 files changed, 43 insertions(+), 36 deletions(-) delete mode 100644 android.hardware.neuralnetworks@1.0-service-arm-armnn.rc create mode 100644 android.hardware.neuralnetworks@1.0-service-armnn.rc delete mode 100644 android.hardware.neuralnetworks@1.1-service-arm-armnn.rc create mode 100644 android.hardware.neuralnetworks@1.1-service-armnn.rc delete mode 100644 android.hardware.neuralnetworks@1.2-service-arm-armnn.rc create mode 100644 android.hardware.neuralnetworks@1.2-service-armnn.rc delete mode 100644 android.hardware.neuralnetworks@1.3-service-arm-armnn.rc create mode 100644 android.hardware.neuralnetworks@1.3-service-armnn.rc diff --git a/Android.mk b/Android.mk index 034495ba..bf8bc65b 100644 --- a/Android.mk +++ b/Android.mk @@ -546,12 +546,12 @@ include $(BUILD_STATIC_LIBRARY) endif # PLATFORM_VERSION == R ##################################################### -# android.hardware.neuralnetworks@1.0-service-arm-armnn # +# android.hardware.neuralnetworks@1.0-service-armnn # ##################################################### include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.neuralnetworks@1.0-service-arm-armnn -LOCAL_INIT_RC := android.hardware.neuralnetworks@1.0-service-arm-armnn.rc +LOCAL_MODULE := android.hardware.neuralnetworks@1.0-service-armnn +LOCAL_INIT_RC := android.hardware.neuralnetworks@1.0-service-armnn.rc ifeq ($(Q_OR_LATER),1) # "eng" is deprecated in Android Q LOCAL_MODULE_TAGS := optional @@ -650,12 +650,12 @@ ifeq ($(P_OR_LATER),1) # The following target is available starting from Android P ##################################################### -# android.hardware.neuralnetworks@1.1-service-arm-armnn # +# android.hardware.neuralnetworks@1.1-service-armnn # ##################################################### include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.neuralnetworks@1.1-service-arm-armnn -LOCAL_INIT_RC := android.hardware.neuralnetworks@1.1-service-arm-armnn.rc +LOCAL_MODULE := android.hardware.neuralnetworks@1.1-service-armnn +LOCAL_INIT_RC := android.hardware.neuralnetworks@1.1-service-armnn.rc ifeq ($(Q_OR_LATER),1) # "eng" is deprecated in Android Q LOCAL_MODULE_TAGS := optional @@ -751,12 +751,12 @@ ifeq ($(Q_OR_LATER),1) # The following target is available starting from Android Q ##################################################### -# android.hardware.neuralnetworks@1.2-service-arm-armnn # +# android.hardware.neuralnetworks@1.2-service-armnn # ##################################################### include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.neuralnetworks@1.2-service-arm-armnn -LOCAL_INIT_RC := android.hardware.neuralnetworks@1.2-service-arm-armnn.rc +LOCAL_MODULE := android.hardware.neuralnetworks@1.2-service-armnn +LOCAL_INIT_RC := android.hardware.neuralnetworks@1.2-service-armnn.rc LOCAL_MODULE_TAGS := optional LOCAL_ARM_MODE := arm LOCAL_MODULE_RELATIVE_PATH := hw @@ -839,12 +839,12 @@ ifeq ($(R_OR_LATER),1) # The following target is available starting from Android R ##################################################### -# android.hardware.neuralnetworks@1.3-service-arm-armnn # +# android.hardware.neuralnetworks@1.3-service-armnn # ##################################################### include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.neuralnetworks@1.3-service-arm-armnn -LOCAL_INIT_RC := android.hardware.neuralnetworks@1.3-service-arm-armnn.rc +LOCAL_MODULE := android.hardware.neuralnetworks@1.3-service-armnn +LOCAL_INIT_RC := android.hardware.neuralnetworks@1.3-service-armnn.rc LOCAL_MODULE_TAGS := optional LOCAL_ARM_MODE := arm LOCAL_MODULE_RELATIVE_PATH := hw diff --git a/DriverOptions.cpp b/DriverOptions.cpp index 94fd5942..1f534b6e 100644 --- a/DriverOptions.cpp +++ b/DriverOptions.cpp @@ -76,6 +76,10 @@ DriverOptions::DriverOptions(int argc, char** argv) po::value(&m_RequestInputsAndOutputsDumpDir)->default_value(""), "If non-empty, the directory where request inputs and outputs should be dumped") + ("service-name,n", + po::value(&m_ServiceName)->default_value("armnn"), + "If non-empty, the driver service name to be registered") + ("unsupported-operations,u", po::value(&unsupportedOperationsAsString)->default_value(""), "If non-empty, a comma-separated list of operation indices which the driver will forcibly " diff --git a/DriverOptions.hpp b/DriverOptions.hpp index 141ca8a2..b05647c5 100644 --- a/DriverOptions.hpp +++ b/DriverOptions.hpp @@ -25,6 +25,7 @@ public: const std::vector& GetBackends() const { return m_Backends; } bool IsVerboseLoggingEnabled() const { return m_VerboseLogging; } const std::string& GetRequestInputsAndOutputsDumpDir() const { return m_RequestInputsAndOutputsDumpDir; } + const std::string& GetServiceName() const { return m_ServiceName; } const std::set& GetForcedUnsupportedOperations() const { return m_ForcedUnsupportedOperations; } const std::string& GetClTunedParametersFile() const { return m_ClTunedParametersFile; } armnn::IGpuAccTunedParameters::Mode GetClTunedParametersMode() const { return m_ClTunedParametersMode; } @@ -37,6 +38,7 @@ private: std::vector m_Backends; bool m_VerboseLogging; std::string m_RequestInputsAndOutputsDumpDir; + std::string m_ServiceName; std::set m_ForcedUnsupportedOperations; std::string m_ClTunedParametersFile; armnn::IGpuAccTunedParameters::Mode m_ClTunedParametersMode; diff --git a/android.hardware.neuralnetworks@1.0-service-arm-armnn.rc b/android.hardware.neuralnetworks@1.0-service-arm-armnn.rc deleted file mode 100644 index b8a2c9cc..00000000 --- a/android.hardware.neuralnetworks@1.0-service-arm-armnn.rc +++ /dev/null @@ -1,4 +0,0 @@ -service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-arm-armnn - class hal - user system - group system diff --git a/android.hardware.neuralnetworks@1.0-service-armnn.rc b/android.hardware.neuralnetworks@1.0-service-armnn.rc new file mode 100644 index 00000000..d7200861 --- /dev/null +++ b/android.hardware.neuralnetworks@1.0-service-armnn.rc @@ -0,0 +1,4 @@ +service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-armnn + class hal + user system + group system diff --git a/android.hardware.neuralnetworks@1.1-service-arm-armnn.rc b/android.hardware.neuralnetworks@1.1-service-arm-armnn.rc deleted file mode 100644 index fad19056..00000000 --- a/android.hardware.neuralnetworks@1.1-service-arm-armnn.rc +++ /dev/null @@ -1,4 +0,0 @@ -service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks@1.1-service-arm-armnn - class hal - user system - group system diff --git a/android.hardware.neuralnetworks@1.1-service-armnn.rc b/android.hardware.neuralnetworks@1.1-service-armnn.rc new file mode 100644 index 00000000..98efaf9c --- /dev/null +++ b/android.hardware.neuralnetworks@1.1-service-armnn.rc @@ -0,0 +1,4 @@ +service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks@1.1-service-armnn + class hal + user system + group system diff --git a/android.hardware.neuralnetworks@1.2-service-arm-armnn.rc b/android.hardware.neuralnetworks@1.2-service-arm-armnn.rc deleted file mode 100644 index 81f6bc9c..00000000 --- a/android.hardware.neuralnetworks@1.2-service-arm-armnn.rc +++ /dev/null @@ -1,4 +0,0 @@ -service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks@1.2-service-arm-armnn - class hal - user system - group system diff --git a/android.hardware.neuralnetworks@1.2-service-armnn.rc b/android.hardware.neuralnetworks@1.2-service-armnn.rc new file mode 100644 index 00000000..58894465 --- /dev/null +++ b/android.hardware.neuralnetworks@1.2-service-armnn.rc @@ -0,0 +1,4 @@ +service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks@1.2-service-armnn + class hal + user system + group system diff --git a/android.hardware.neuralnetworks@1.3-service-arm-armnn.rc b/android.hardware.neuralnetworks@1.3-service-arm-armnn.rc deleted file mode 100644 index 25855d40..00000000 --- a/android.hardware.neuralnetworks@1.3-service-arm-armnn.rc +++ /dev/null @@ -1,4 +0,0 @@ -service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks@1.3-service-arm-armnn - class hal - user system - group system diff --git a/android.hardware.neuralnetworks@1.3-service-armnn.rc b/android.hardware.neuralnetworks@1.3-service-armnn.rc new file mode 100644 index 00000000..3f84d9c8 --- /dev/null +++ b/android.hardware.neuralnetworks@1.3-service-armnn.rc @@ -0,0 +1,4 @@ +service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks@1.3-service-armnn + class hal + user system + group system diff --git a/docs/IntegratorGuide.md b/docs/IntegratorGuide.md index d454f219..8200d811 100644 --- a/docs/IntegratorGuide.md +++ b/docs/IntegratorGuide.md @@ -21,19 +21,19 @@ directory. This file is normally called `device.mk`: For Android P or Q, using NN API version (1.0), the following should be added to `device.mk`:
-PRODUCT_PACKAGES += android.hardware.neuralnetworks@1.0-service-arm-armnn
+PRODUCT_PACKAGES += android.hardware.neuralnetworks@1.0-service-armnn
 
For Android P or Q, a new version of the NN API is available (1.1), thus the following should be added to `device.mk` instead:
-PRODUCT_PACKAGES += android.hardware.neuralnetworks@1.1-service-arm-armnn
+PRODUCT_PACKAGES += android.hardware.neuralnetworks@1.1-service-armnn
 
`Android.mk` contains the module definition of both versions of the ArmNN driver. For Android Q, a new version of the NN API is available (1.2), thus the following should be added to `device.mk` instead:
-PRODUCT_PACKAGES += android.hardware.neuralnetworks@1.2-service-arm-armnn
+PRODUCT_PACKAGES += android.hardware.neuralnetworks@1.2-service-armnn
 
`Android.mk` contains the module definition of all three versions (1.0, 1.1 and 1.2) of the ArmNN driver. Similarly, the Neon, CL or reference backend can be enabled/disabled by setting ARMNN_COMPUTE_CL_ENABLE, @@ -66,7 +66,7 @@ Android P For example, if the ArmNN driver has been built with the NN API 1.0, check for the following file:
-/out/target/product//system/vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-arm-armnn
+/out/target/product//system/vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-armnn
 
Android Q has a different path: @@ -79,7 +79,7 @@ Android Q has a different path: 1. Run the ArmNN driver service executable in the background. The following examples assume that the 1.0 version of the driver is being used:
-adb shell /system/vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-arm-armnn &
+adb shell /system/vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-armnn &
 
2. Run some code that exercises the Android Neural Networks API, for example Android's `NeuralNetworksTest` unit tests (note this is an optional component that must be built). @@ -101,12 +101,12 @@ The recommended way of using it with ArmNN is to generate the tuning data during 1. Run the ArmNN driver service executable in tuning mode. The path to the tuning data must be writable by the service. The following examples assume that the 1.0 version of the driver is being used:
-adb shell /system/vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-arm-armnn --cl-tuned-parameters-file <PATH_TO_TUNING_DATA> --cl-tuned-parameters-mode UpdateTunedParameters --cl-tuning-level exhaustive &
+adb shell /system/vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-armnn --cl-tuned-parameters-file <PATH_TO_TUNING_DATA> --cl-tuned-parameters-mode UpdateTunedParameters --cl-tuning-level exhaustive &
 
2. Run a representative set of Android NNAPI testing loads. In this mode of operation, each NNAPI workload will be slow the first time it is executed, as the tuning parameters are being selected. Subsequent executions will use the tuning data which has been generated. 3. Stop the service. 4. Deploy the tuned parameters file to a location readable by the ArmNN driver service (for example, to a location within /vendor/etc). 5. During normal operation, pass the location of the tuning data to the driver service (this would normally be done by passing arguments via Android init in the service .rc definition):
-adb shell /system/vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-arm-armnn --cl-tuned-parameters-file <PATH_TO_TUNING_DATA> &
+adb shell /system/vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-armnn --cl-tuned-parameters-file <PATH_TO_TUNING_DATA> &
 
diff --git a/service.cpp b/service.cpp index 740198aa..823f0c75 100644 --- a/service.cpp +++ b/service.cpp @@ -18,6 +18,7 @@ using namespace std; int main(int argc, char** argv) { android::sp driver; + DriverOptions driverOptions(argc, argv); try { driver = new ArmnnDriver(DriverOptions(argc, argv)); @@ -32,7 +33,7 @@ int main(int argc, char** argv) android::status_t status = android::UNKNOWN_ERROR; try { - status = driver->registerAsService("arm-armnn"); + status = driver->registerAsService(driverOptions.GetServiceName()); } catch (const std::exception& e) { -- cgit v1.2.1