aboutsummaryrefslogtreecommitdiff
path: root/src/gpu/cl/ClContext.h
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2021-01-12 15:51:07 +0000
committerGeorgios Pinitas <georgios.pinitas@arm.com>2021-02-25 08:05:31 +0000
commit8a5146fb5cc17d101e3b6c86654f5aca81e60335 (patch)
treef5ab3e60d33ebad7c771828810bcd6d4a914508f /src/gpu/cl/ClContext.h
parente5f2e7472725da11c14f3d6023a9c2d7b14e2ebd (diff)
downloadComputeLibrary-8a5146fb5cc17d101e3b6c86654f5aca81e60335.tar.gz
Introduce Context opaque object of the new interface
An AclContext is introduced as part of the new interface. This object is responsible for any constructural services that the operators and other objects might need. Main options that can be passed to a context object are: - a target: for which all the subsequent object should bind with - capabilities: which are the isa/target features to enable - a mode: for which different strategies can be selected in the backend Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com> Change-Id: I315549e55d4d064cbe94dfa29d070dc281b447de Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5088 Tested-by: Arm Jenkins <bsgcomp@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/gpu/cl/ClContext.h')
-rw-r--r--src/gpu/cl/ClContext.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/gpu/cl/ClContext.h b/src/gpu/cl/ClContext.h
new file mode 100644
index 0000000000..e3f16b1c3f
--- /dev/null
+++ b/src/gpu/cl/ClContext.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2021 Arm Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#ifndef SRC_GPU_CL_CPUCONTEXT_H
+#define SRC_GPU_CL_CPUCONTEXT_H
+
+#include "src/common/IContext.h"
+#include "src/runtime/CL/mlgo/MLGOHeuristics.h"
+
+#include "arm_compute/core/CL/OpenCL.h"
+
+namespace arm_compute
+{
+namespace gpu
+{
+namespace opencl
+{
+/** OpenCL context implementation class */
+class ClContext final : public IContext
+{
+public:
+ /** Default Constructor
+ *
+ * @param[in] options Creational options
+ */
+ explicit ClContext(const AclContextOptions *options);
+ /** Extract MLGO heuristics
+ *
+ * @return Heuristics tree
+ */
+ const mlgo::MLGOHeuristics &mlgo() const;
+
+ /** Underlying cl context accessor
+ *
+ * @return the cl context used
+ */
+ ::cl::Context cl_ctx();
+ /** Update/inject an underlying cl context object
+ *
+ * @warning Context will be able to set if the object doesn't have any pending reference to other objects
+ *
+ * @param[in] ctx Underlying cl context to be used
+ *
+ * @return true if the context was set successfully else falseS
+ */
+ bool set_cl_ctx(::cl::Context ctx);
+
+private:
+ mlgo::MLGOHeuristics _mlgo_heuristics;
+ ::cl::Context _cl_context;
+};
+} // namespace opencl
+} // namespace gpu
+} // namespace arm_compute
+
+#endif /* SRC_GPU_CL_CPUCONTEXT_H */ \ No newline at end of file