23.08
CLRuntimeContext.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2019-2021 Arm Limited.
3
*
4
* SPDX-License-Identifier: MIT
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in all
14
* copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
* SOFTWARE.
23
*/
24
#include "
arm_compute/runtime/CL/CLRuntimeContext.h
"
25
#include "
arm_compute/core/Validate.h
"
26
#include "
arm_compute/runtime/CL/CLHelpers.h
"
27
#include "
arm_compute/runtime/CL/CLScheduler.h
"
28
29
namespace
arm_compute
30
{
31
CLRuntimeContext::CLRuntimeContext
()
32
: _gpu_owned_scheduler(std::make_unique<
CLScheduler
>()), _gpu_scheduler(_gpu_owned_scheduler.get()), _symbols(), _backend_type()
33
{
34
_symbols.
load_default
();
35
auto
ctx_dev_err =
create_opencl_context_and_device
(_backend_type);
36
ARM_COMPUTE_ERROR_ON_MSG
(std::get<2>(ctx_dev_err) != CL_SUCCESS,
"Failed to create OpenCL context"
);
37
auto
ctx = std::get<0>(ctx_dev_err);
38
auto
dev = std::get<1>(ctx_dev_err);
39
cl::CommandQueue queue = cl::CommandQueue(ctx, dev);
40
_gpu_owned_scheduler->init(ctx, queue, dev, &_tuner);
41
const
std::string cl_kernels_folder(
"./cl_kernels"
);
42
CLKernelLibrary::get
().
init
(cl_kernels_folder, ctx, dev);
43
}
44
45
CLKernelLibrary
&
CLRuntimeContext::kernel_library
()
46
{
47
return
CLKernelLibrary::get
();
48
}
49
50
void
CLRuntimeContext::set_gpu_scheduler
(
CLScheduler
*scheduler)
51
{
52
ARM_COMPUTE_ERROR_ON_NULLPTR
(
scheduler
);
53
_gpu_scheduler =
scheduler
;
54
}
55
56
CLScheduler
*
CLRuntimeContext::gpu_scheduler
()
57
{
58
return
_gpu_scheduler;
59
}
60
61
}
// namespace arm_compute
arm_compute::CLRuntimeContext::set_gpu_scheduler
void set_gpu_scheduler(CLScheduler *scheduler)
CPU Scheduler setter.
Definition:
CLRuntimeContext.cpp:50
arm_compute::CLScheduler
Provides global access to a CL context and command queue.
Definition:
CLScheduler.h:43
arm_compute::create_opencl_context_and_device
std::tuple< cl::Context, cl::Device, cl_int > create_opencl_context_and_device(CLBackendType cl_backend_type)
This function creates an OpenCL context and a device.
Definition:
CLHelpers.cpp:126
arm_compute::CLKernelLibrary::init
void init(std::string kernel_path, cl::Context context, cl::Device device)
Initialises the kernel library.
Definition:
CLKernelLibrary.cpp:56
CLRuntimeContext.h
arm_compute::CLRuntimeContext::gpu_scheduler
CLScheduler * gpu_scheduler()
Definition:
CLRuntimeContext.cpp:56
arm_compute::CLKernelLibrary::get
static CLKernelLibrary & get()
Access the KernelLibrary singleton.
Definition:
CLKernelLibrary.cpp:39
arm_compute::CLKernelLibrary
CLKernelLibrary class.
Definition:
CLKernelLibrary.h:38
ARM_COMPUTE_ERROR_ON_NULLPTR
#define ARM_COMPUTE_ERROR_ON_NULLPTR(...)
Definition:
Validate.h:161
arm_compute::CLRuntimeContext::CLRuntimeContext
CLRuntimeContext()
Default Constructor.
Definition:
CLRuntimeContext.cpp:31
ARM_COMPUTE_ERROR_ON_MSG
#define ARM_COMPUTE_ERROR_ON_MSG(cond, msg)
Definition:
Error.h:457
CLScheduler.h
Interface to enqueue OpenCL kernels and get/set the OpenCL CommandQueue and ICLTuner.
arm_compute::CLSymbols::load_default
bool load_default()
Load symbols from any of the default OpenCL library names.
Definition:
OpenCL.cpp:53
CLHelpers.h
arm_compute::CLRuntimeContext::kernel_library
CLKernelLibrary & kernel_library()
Definition:
CLRuntimeContext.cpp:45
arm_compute
Copyright (c) 2017-2023 Arm Limited.
Definition:
introduction.dox:24
arm_compute::RuntimeContext::scheduler
IScheduler * scheduler() override
Scheduler accessor.
Definition:
RuntimeContext.cpp:42
Validate.h
src
runtime
CL
CLRuntimeContext.cpp
Generated on Wed Aug 23 2023 13:07:13 for Compute Library by
1.8.17