MCPcopy Create free account
hub / github.com/ARM-software/ComputeLibrary / enqueue

Method enqueue

src/core/CL/ICLKernel.cpp:33–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31#include <cstddef>
32
33void arm_compute::enqueue(cl::CommandQueue &queue,
34 ICLKernel &kernel,
35 const Window &window,
36 const cl::NDRange &lws_hint,
37 bool use_dummy_work_items)
38{
39 if (kernel.kernel()() == nullptr)
40 {
41 return;
42 }
43
44 for (unsigned int i = 0; i < Coordinates::num_max_dimensions; ++i)
45 {
46 ARM_COMPUTE_ERROR_ON(window[i].step() == 0);
47 // Make sure that dimensions > Z are 1
48 ARM_COMPUTE_ERROR_ON((i >= 3) && ((window[i].end() - window[i].start()) != 1));
49 }
50
51 cl::NDRange gws = ICLKernel::gws_from_window(window, use_dummy_work_items);
52
53 // Check for empty NDRange
54 if (gws.dimensions() == 0)
55 {
56 return;
57 }
58
59 kernel.cache_gws(gws);
60
61 cl::NDRange valid_lws;
62 if (lws_hint[0] * lws_hint[1] * lws_hint[2] > kernel.get_max_workgroup_size())
63 {
64 valid_lws = cl::NullRange;
65 }
66 else
67 {
68 valid_lws = lws_hint;
69 }
70
71 cl::NDRange lws = cl::NullRange;
72
73 if ((valid_lws[0] <= gws[0]) && (valid_lws[1] <= gws[1]) && (valid_lws[2] <= gws[2]))
74 {
75 lws = valid_lws;
76 }
77
78 if (CLKernelLibrary::get().is_wbsm_supported())
79 {
80 set_wbsm(kernel.kernel(), kernel.wbsm_hint());
81 }
82 queue.enqueueNDRangeKernel(kernel.kernel(), cl::NullRange, gws, lws);
83}
84
85namespace arm_compute
86{

Callers 2

runMethod · 0.45
runMethod · 0.45

Calls 11

set_wbsmFunction · 0.85
stepMethod · 0.80
dimensionsMethod · 0.80
cache_gwsMethod · 0.80
wbsm_hintMethod · 0.80
enqueueNDRangeKernelMethod · 0.80
kernelMethod · 0.45
endMethod · 0.45
startMethod · 0.45
is_wbsm_supportedMethod · 0.45

Tested by

no test coverage detected