diff options
author | Jan Eilers <jan.eilers@arm.com> | 2021-02-16 12:40:43 +0000 |
---|---|---|
committer | Jan Eilers <jan.eilers@arm.com> | 2021-02-17 09:48:07 +0000 |
commit | c5b84b5eaaf25beb7e385ad15f5f1539acd7e22d (patch) | |
tree | 535597e89edb3241b99a247625d5e9323830a3f0 | |
parent | 689c96cc96e0f1181d971d8376b36e8d7088f9ed (diff) | |
download | armnn-c5b84b5eaaf25beb7e385ad15f5f1539acd7e22d.tar.gz |
IVGCVSW-5581 ExecuteNetwork: Fix pass backends as comma separated list
* Allow passing multiple preferred backends as comma separated list
e.g. "-c CpuAcc,CpuRef" or by repeating the option "-c CpuAcc -c CpuRef"
Signed-off-by: Jan Eilers <jan.eilers@arm.com>
Change-Id: I8e304d26c2890b99d5ec4c1af6c372458fa70051
-rw-r--r-- | tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp b/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp index 0eaf8da890..ba28dd0173 100644 --- a/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp +++ b/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp @@ -75,13 +75,20 @@ void RemoveDuplicateDevices(std::vector<armnn::BackendId>& computeDevices) computeDevices.end()); } -/// Takes a vector of backend strings and returns a vector of backendIDs. Removes duplicate entries. -std::vector<armnn::BackendId> GetBackendIDs(const std::vector<std::string>& backendStrings) +/// Takes a vector of backend strings and returns a vector of backendIDs. +/// Removes duplicate entries. +/// Can handle backend strings that contain multiple backends separated by comma e.g "CpuRef,CpuAcc" +std::vector<armnn::BackendId> GetBackendIDs(const std::vector<std::string>& backendStringsVec) { std::vector<armnn::BackendId> backendIDs; - for (const auto& b : backendStrings) + for (const auto& backendStrings : backendStringsVec) { - backendIDs.push_back(armnn::BackendId(b)); + // Each backendStrings might contain multiple backends separated by comma e.g "CpuRef,CpuAcc" + std::vector<std::string> backendStringVec = ParseStringList(backendStrings, ","); + for (const auto& b : backendStringVec) + { + backendIDs.push_back(armnn::BackendId(b)); + } } RemoveDuplicateDevices(backendIDs); @@ -157,10 +164,12 @@ ProgramOptions::ProgramOptions() : m_CxxOptions{"ExecuteNetwork", // separate function CheckRequiredOptions() for that. m_CxxOptions.add_options("a) Required") ("c,compute", - "Which device to run layers on by default. Possible choices: " + "Which device to run layers on by default. If a single device doesn't support all layers in the model " + "you can specify a second or third to fall back on. Possible choices: " + armnn::BackendRegistryInstance().GetBackendIdsAsString() - + " NOTE: Compute devices need to be passed as a comma separated list without whitespaces " - "e.g. CpuRef,CpuAcc", + + " NOTE: Multiple compute devices need to be passed as a comma separated list without whitespaces " + "e.g. GpuAcc,CpuAcc,CpuRef or by repeating the program option e.g. '-c Cpuacc -c CpuRef'. " + "Duplicates are ignored.", cxxopts::value<std::vector<std::string>>()) ("f,model-format", |