aboutsummaryrefslogtreecommitdiff
path: root/src/backends/cl/workloads/ClWorkloadUtils.hpp
diff options
context:
space:
mode:
authorAron Virginas-Tar <Aron.Virginas-Tar@arm.com>2018-10-19 16:46:15 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-10-22 16:57:54 +0100
commita8e06ed540a934f966679e1ef1cf7acf295211b3 (patch)
tree247035d1bce6ddb8543081a88294a85e34968035 /src/backends/cl/workloads/ClWorkloadUtils.hpp
parentf0b4845c1c6f24f59d4c88473b852cf69a3c7ae9 (diff)
downloadarmnn-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.hpp24
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