OpenCL编程:命令队列

一、创建命令队列

在OpenCL中,命令队列用cl_command_queue结构来表示,通过调用函数clCreateCommandQueue来创建。

函数原型如下:

clCreateCommandQueue(cl_context context, cl_device_id device, cl_command_queue_properties properties, cl_int *err);

其中cl_command_queue_properties在以下两个枚举值之中取值。

1. CL_QUEUE_PROFILING_ENABLE--使能性能分析事件。

2. CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE--使能命令队列的乱序执行。

cl_command_queue queue;
queue = clCreateCommandQueue(context, devices[0], 0, &err);
if (err < 0)
{
	cout << "Failed to create command queue." << err << endl;
	return err;
}

二、内核执行命令入列

OpenCL中以clEnqueue开头的函数都是通过命令队列向设备发送命令,其中以clEnqueueTask最为简单。

函数原型如下:

clEnqueueTask(cl_command_queue queue, cl_kernel kernel, cl_uint num_events,

const cl_event *wait_list, cl_event *event);

err = clEnqueueTask(queue, found_kernel, 0, NULL, NULL);
if (err < 0)
{
	cout << "Failed to enqueue task." << err << endl;
	return err;
}

猜你喜欢

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