OpenCL编程:创建内核cl_kernel

在OpenCL中函数需要打包为内核数据结构。内核可以被发送到命令队列中,然后在发送到设备上。

内核用cl_kernel数据结构表示。有两个函数可以创建内核:clCreateKernelsInProgram和clCreateKernel。

函数原型如下:

clCreateKernelsInProgram(cl_program program, cl_uint num_kernels, cl_kernel *kernels, cl_uint *num_kernels_ret);

clCreateKernel(cl_program program, const char *kernel_name, cl_int *error);

clCreateKernelsInProgram为程序中的每个函数创建内核,所有的cl_kernels结构放在kernels数组中。

clCreateKernel用于创建单个内核,需要知道创建内核所在的函数名。如果需要创建多个内核,则需要反复调用clCreateKernel。

cl_kernel *kernels, found_kernel;
char kernel_name[20];
cl_uint num_kernels;

err = clCreateKernelsInProgram(program, 0, NULL, &num_kernels);
if (err < 0)
{
	cout << "Failed to find any kernels." << err << endl;
	return err;
}

kernels = (cl_kernel *)malloc(num_kernels * sizeof(cl_kernel));
err =clCreateKernelsInProgram(program, num_kernels, kernels, NULL);
if (err < 0)
{
	cout << "Failed to create kernels." << err << endl;
	return err;
}

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/81190108