diff options
author | Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> | 2018-10-19 16:46:15 +0100 |
---|---|---|
committer | Matthew Bentham <matthew.bentham@arm.com> | 2018-10-22 16:57:54 +0100 |
commit | a8e06ed540a934f966679e1ef1cf7acf295211b3 (patch) | |
tree | 247035d1bce6ddb8543081a88294a85e34968035 /src/backends/cl/workloads/ClWorkloadUtils.hpp | |
parent | f0b4845c1c6f24f59d4c88473b852cf69a3c7ae9 (diff) | |
download | armnn-a8e06ed540a934f966679e1ef1cf7acf295211b3.tar.gz |
IVGCVSW-1955: Unify backend exceptions (wrap cl::Error)
* Added wrapper function around arm_compute::IFunction::run() that catches
cl::Error and wraps it into an armnn::RuntimeException
* Added MakeWorkload template inside ClWorkloadFactory that catches
cl::Error and wraps it into an armnn::RuntimeException
* Replaced cl::Error with armnn::RuntimeException in catch statements inside
LoadedNetwork
Change-Id: I2340f41ae02b8db1d7ef5157824a50e7410854e3
Diffstat (limited to 'src/backends/cl/workloads/ClWorkloadUtils.hpp')
-rw-r--r-- | src/backends/cl/workloads/ClWorkloadUtils.hpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/backends/cl/workloads/ClWorkloadUtils.hpp b/src/backends/cl/workloads/ClWorkloadUtils.hpp index c765c63dce..ca0de8dd0a 100644 --- a/src/backends/cl/workloads/ClWorkloadUtils.hpp +++ b/src/backends/cl/workloads/ClWorkloadUtils.hpp @@ -10,6 +10,10 @@ #include <backends/cl/OpenClTimer.hpp> #include <backends/CpuTensorHandle.hpp> +#include <arm_compute/runtime/CL/CLFunctions.h> + +#include <sstream> + #define ARMNN_SCOPED_PROFILING_EVENT_CL(name) \ ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(armnn::Compute::GpuAcc, \ name, \ @@ -60,4 +64,24 @@ inline void InitializeArmComputeClTensorData(arm_compute::CLTensor& clTensor, } }; +inline RuntimeException WrapClError(const cl::Error& clError, const CheckLocation& location) +{ + std::stringstream message; + message << "CL error: " << clError.what() << ". Error code: " << clError.err(); + + return RuntimeException(message.str(), location); +} + +inline void RunClFunction(arm_compute::IFunction& function, const CheckLocation& location) +{ + try + { + function.run(); + } + catch (cl::Error& error) + { + throw WrapClError(error, location); + } +} + } //namespace armnn |