Skip to content

Commit ed21b46

Browse files
committed
cl: simplify management of scratch buffers
1 parent 8b72916 commit ed21b46

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/opencl_platform.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -366,16 +366,16 @@ void OpenCLPlatform::launch_kernel(DeviceId dev, const LaunchParams& launch_para
366366
auto kernel = load_kernel(dev, launch_params.file_name, launch_params.kernel_name);
367367

368368
// set up arguments
369-
std::vector<cl_mem> kernel_structs(launch_params.num_args);
369+
std::vector<cl_mem> kernel_structs;
370370
for (uint32_t i = 0; i < launch_params.num_args; i++) {
371371
if (launch_params.args.types[i] == KernelArgType::Struct) {
372372
// create a buffer for each structure argument
373373
cl_int err = CL_SUCCESS;
374374
cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR;
375375
cl_mem struct_buf = clCreateBuffer(devices_[dev].ctx, flags, launch_params.args.sizes[i], launch_params.args.data[i], &err);
376376
CHECK_OPENCL(err, "clCreateBuffer()");
377-
kernel_structs[i] = struct_buf;
378-
clSetKernelArg(kernel, i, sizeof(cl_mem), &kernel_structs[i]);
377+
kernel_structs.push_back(struct_buf);
378+
clSetKernelArg(kernel, i, sizeof(cl_mem), &struct_buf);
379379
} else {
380380
#ifdef CL_VERSION_2_0
381381
if (launch_params.args.types[i] == KernelArgType::Ptr && devices_[dev].version_major == 2) {
@@ -421,11 +421,9 @@ void OpenCLPlatform::launch_kernel(DeviceId dev, const LaunchParams& launch_para
421421
dynamic_profile(dev, launch_params.file_name);
422422

423423
// release temporary buffers for struct arguments
424-
for (uint32_t i = 0; i < launch_params.num_args; i++) {
425-
if (launch_params.args.types[i] == KernelArgType::Struct) {
426-
cl_int err = clReleaseMemObject(kernel_structs[i]);
427-
CHECK_OPENCL(err, "clReleaseMemObject()");
428-
}
424+
for (auto tmp : kernel_structs) {
425+
cl_int err = clReleaseMemObject(tmp);
426+
CHECK_OPENCL(err, "clReleaseMemObject()");
429427
}
430428
}
431429

0 commit comments

Comments
 (0)