aboutsummaryrefslogtreecommitdiff
path: root/DriverOptions.cpp
diff options
context:
space:
mode:
authorNattapat Chaimanowong <nattapat.chaimanowong@arm.com>2019-04-04 13:33:10 +0100
committerNattapat Chaimanowong <nattapat.chaimanowong@arm.com>2019-04-04 13:33:10 +0100
commitd5fd9767d426ca465eb660be062eecce51ad1097 (patch)
treeb2a2b684c9072dda7b52b40e579a5b0c4aae3c21 /DriverOptions.cpp
parent16196e267833178dae62926ff090c50ec6813ad4 (diff)
downloadandroid-nn-driver-d5fd9767d426ca465eb660be062eecce51ad1097.tar.gz
IVGCVSW-2886 Support multiple backends in Android driver
Change-Id: I4abe1f750801911570b6dc65c187b828c5929b5f Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
Diffstat (limited to 'DriverOptions.cpp')
-rw-r--r--DriverOptions.cpp51
1 files changed, 32 insertions, 19 deletions
diff --git a/DriverOptions.cpp b/DriverOptions.cpp
index 10919a7b..cd4b6bfc 100644
--- a/DriverOptions.cpp
+++ b/DriverOptions.cpp
@@ -16,6 +16,7 @@
#include <boost/algorithm/string/predicate.hpp>
#include <boost/program_options.hpp>
+#include <algorithm>
#include <cassert>
#include <functional>
#include <string>
@@ -28,7 +29,7 @@ namespace armnn_driver
{
DriverOptions::DriverOptions(armnn::Compute computeDevice, bool fp16Enabled)
- : m_ComputeDevice(computeDevice)
+ : m_Backends({computeDevice})
, m_VerboseLogging(false)
, m_ClTunedParametersMode(armnn::IGpuAccTunedParameters::Mode::UseTunedParameters)
, m_EnableGpuProfiling(false)
@@ -36,24 +37,32 @@ DriverOptions::DriverOptions(armnn::Compute computeDevice, bool fp16Enabled)
{
}
-DriverOptions::DriverOptions(int argc, char** argv)
- : m_ComputeDevice(armnn::Compute::GpuAcc)
+DriverOptions::DriverOptions(const std::vector<armnn::BackendId>& backends, bool fp16Enabled)
+ : m_Backends(backends)
, m_VerboseLogging(false)
, m_ClTunedParametersMode(armnn::IGpuAccTunedParameters::Mode::UseTunedParameters)
, m_EnableGpuProfiling(false)
+ , m_fp16Enabled(fp16Enabled)
+{
+}
+
+DriverOptions::DriverOptions(int argc, char** argv)
+ : m_VerboseLogging(false)
+ , m_ClTunedParametersMode(armnn::IGpuAccTunedParameters::Mode::UseTunedParameters)
+ , m_EnableGpuProfiling(false)
, m_fp16Enabled(false)
{
namespace po = boost::program_options;
- std::string computeDeviceAsString;
std::string unsupportedOperationsAsString;
std::string clTunedParametersModeAsString;
po::options_description optionsDesc("Options");
optionsDesc.add_options()
("compute,c",
- po::value<std::string>(&computeDeviceAsString)->default_value("GpuAcc"),
- "Which device to run layers on by default. Possible values are: CpuRef, CpuAcc, GpuAcc")
+ po::value<std::vector<std::string>>()->
+ multitoken()->default_value(std::vector<std::string>{"GpuAcc"}, "{GpuAcc}"),
+ "Which backend to run layers on. Possible values are: CpuRef, CpuAcc, GpuAcc")
("verbose-logging,v",
po::bool_switch(&m_VerboseLogging),
@@ -99,22 +108,26 @@ DriverOptions::DriverOptions(int argc, char** argv)
ALOGW("An error occurred attempting to parse program options: %s", e.what());
}
- if (computeDeviceAsString == "CpuRef")
- {
- m_ComputeDevice = armnn::Compute::CpuRef;
- }
- else if (computeDeviceAsString == "GpuAcc")
- {
- m_ComputeDevice = armnn::Compute::GpuAcc;
- }
- else if (computeDeviceAsString == "CpuAcc")
+ const std::vector<std::string> backends = variablesMap["compute"].as<std::vector<std::string>>();
+ const std::vector<string> supportedDevices({"CpuRef", "CpuAcc", "GpuAcc"});
+ m_Backends.reserve(backends.size());
+
+ for (auto&& backend : backends)
{
- m_ComputeDevice = armnn::Compute::CpuAcc;
+ if (std::find(supportedDevices.cbegin(), supportedDevices.cend(), backend) == supportedDevices.cend())
+ {
+ ALOGW("Requested unknown backend %s", backend.c_str());
+ }
+ else
+ {
+ m_Backends.emplace_back(backend);
+ }
}
- else
+
+ if (m_Backends.empty())
{
- ALOGW("Requested unknown compute device %s. Defaulting to compute id %s",
- computeDeviceAsString.c_str(), GetComputeDeviceAsCString(m_ComputeDevice));
+ m_Backends.emplace_back("GpuAcc");
+ ALOGW("No known backend specified. Defaulting to: GpuAcc");
}
if (!unsupportedOperationsAsString.empty())