Skip to content

Commit 4c0edef

Browse files
committed
add clEnqueueNDRangeKernel tests
1 parent 1444fe5 commit 4c0edef

1 file changed

Lines changed: 111 additions & 0 deletions

File tree

  • samples/benchmarks/00_apibenchmark

samples/benchmarks/00_apibenchmark/main.cpp

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,16 +133,21 @@ BENCHMARK_REGISTER_F(Device, clGetDeviceInfo);
133133

134134
struct Kernel : public benchmark::Fixture
135135
{
136+
cl::CommandQueue queue;
136137
cl::Program program;
137138
cl::Kernel kernel;
138139

139140
virtual void SetUp(benchmark::State& state) override {
141+
queue = env.ioq;
142+
140143
static const char kernelString[] = R"CLC( kernel void Empty(int a) {} )CLC";
141144

142145
program = cl::Program{env.context, kernelString};
143146

144147
program.build();
145148
kernel = cl::Kernel{program, "Empty"};
149+
150+
kernel.setArg(0, 0);
146151
}
147152
virtual void TearDown(benchmark::State& state) override {
148153
program = NULL;
@@ -163,6 +168,112 @@ BENCHMARK_DEFINE_F(Kernel, clSetKernelArg)(benchmark::State& state)
163168
}
164169
BENCHMARK_REGISTER_F(Kernel, clSetKernelArg);
165170

171+
BENCHMARK_DEFINE_F(Kernel, clEnqueueNDRangeKernel_NullQueueError)(benchmark::State& state)
172+
{
173+
const size_t work_dim = 1;
174+
const size_t global_work_size[work_dim] = { 1 };
175+
const size_t local_work_size[work_dim] = { 1 };
176+
const size_t global_work_offset[work_dim] = { 0 };
177+
while(state.KeepRunning()) {
178+
clEnqueueNDRangeKernel(
179+
NULL,
180+
kernel(),
181+
work_dim,
182+
NULL,
183+
global_work_size,
184+
NULL,
185+
0,
186+
NULL,
187+
NULL );
188+
}
189+
}
190+
BENCHMARK_REGISTER_F(Kernel, clEnqueueNDRangeKernel_NullQueueError);
191+
192+
BENCHMARK_DEFINE_F(Kernel, clEnqueueNDRangeKernel_NullKernelError)(benchmark::State& state)
193+
{
194+
const size_t work_dim = 1;
195+
const size_t global_work_size[work_dim] = { 1 };
196+
const size_t local_work_size[work_dim] = { 1 };
197+
const size_t global_work_offset[work_dim] = { 0 };
198+
while(state.KeepRunning()) {
199+
clEnqueueNDRangeKernel(
200+
queue(),
201+
NULL,
202+
work_dim,
203+
NULL,
204+
global_work_size,
205+
NULL,
206+
0,
207+
NULL,
208+
NULL );
209+
}
210+
}
211+
BENCHMARK_REGISTER_F(Kernel, clEnqueueNDRangeKernel_NullKernelError);
212+
213+
BENCHMARK_DEFINE_F(Kernel, clEnqueueNDRangeKernel_1x1_NoEvent)(benchmark::State& state)
214+
{
215+
const int flushFrequency = (int)state.range(0);
216+
217+
const size_t work_dim = 1;
218+
const size_t global_work_size[work_dim] = { 1 };
219+
const size_t local_work_size[work_dim] = { 1 };
220+
const size_t global_work_offset[work_dim] = { 0 };
221+
222+
size_t count = 0;
223+
224+
while(state.KeepRunning()) {
225+
clEnqueueNDRangeKernel(
226+
queue(),
227+
kernel(),
228+
work_dim,
229+
NULL,
230+
global_work_size,
231+
local_work_size,
232+
0,
233+
NULL,
234+
NULL );
235+
if (++count % flushFrequency) {
236+
clFlush(queue());
237+
}
238+
}
239+
240+
clFinish(queue());
241+
}
242+
BENCHMARK_REGISTER_F(Kernel, clEnqueueNDRangeKernel_1x1_NoEvent)->Arg(1)->Arg(32)->Arg(512)->Arg(2048);
243+
244+
BENCHMARK_DEFINE_F(Kernel, clEnqueueNDRangeKernel_1x1_Event)(benchmark::State& state)
245+
{
246+
const int flushFrequency = (int)state.range(0);
247+
248+
const size_t work_dim = 1;
249+
const size_t global_work_size[work_dim] = { 1 };
250+
const size_t local_work_size[work_dim] = { 1 };
251+
const size_t global_work_offset[work_dim] = { 0 };
252+
253+
size_t count = 0;
254+
255+
while(state.KeepRunning()) {
256+
cl_event event = NULL;
257+
clEnqueueNDRangeKernel(
258+
queue(),
259+
kernel(),
260+
work_dim,
261+
NULL,
262+
global_work_size,
263+
local_work_size,
264+
0,
265+
NULL,
266+
&event );
267+
clReleaseEvent(event);
268+
if (++count % flushFrequency) {
269+
clFlush(queue());
270+
}
271+
}
272+
273+
clFinish(queue());
274+
}
275+
BENCHMARK_REGISTER_F(Kernel, clEnqueueNDRangeKernel_1x1_Event)->Arg(1)->Arg(32)->Arg(512)->Arg(2048);
276+
166277
struct SVMKernel : public benchmark::Fixture
167278
{
168279
cl::Program program;

0 commit comments

Comments
 (0)