GPU Compute Software
Ask questions about Intel® Graphics Compute software technologies, such as OpenCL* GPU driver and oneAPI Level Zero
165 Discussions

device queue Intel Iris Xe Graphics

Andreas4
Beginner
2,285 Views

Hello,

I writing opencl program where i use "enqueue_kernel" command. this command need as parameter device queue.

 

 

if i call :

cl_command_queue_properties properties = {CL_QUEUE_PROPERTIES, CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT, CL_QUEUE_SIZE, 20000,0};

cl_queue_properties queue_properties[] = {
CL_QUEUE_PROPERTIES, properties, 0 };
wsp_p->queue = clCreateCommandQueueWithProperties (wsp_p->opencl->ctx, wsp_p->opencl->device,queue_properties, &err);

queue are created , and some kernels(without enqueue_kernel() call) are executed.

but if i call

clSetKernelArg (ocl_prog->kernel, 3, sizeof(cl_command_queue),
&ocl_data->queue);

it return -70 (invalid device queue).

It seems, that always host side command queue are created

I read the number of max device queues via :

err = clGetDeviceInfo (ocldev.device, CL_DEVICE_MAX_ON_DEVICE_QUEUES,
sizeof(cl_uint), &c,
&ret_param_size);

 

but the result is 0.

I am wondering , because the opencl spec says :

CL_​DEVICE_​MAX_​ON_​DEVICE_​QUEUES :

The maximum number of device queues that can be created for this device in a single context.

The minimum value is 1.

attached is the log of clinfo.

 

any idea ?

best regards

Andreas

Labels (1)
0 Kudos
6 Replies
Ben_A_Intel
Employee
2,270 Views

Hello, device-side enqueue and on-device queues were required by OpenCL 2.x, but this is one of the features that became optional in OpenCL 3.0.  See:

We support most of the optional OpenCL 3.0 features on our GPUs but this is one of the few we've dropped due to engineering and maintenance complexity and lack of adoption.

If you can describe the particular use-case you are trying to solve with this feature we can try to suggest an alternative - thanks!

0 Kudos
NoorjahanSk_Intel
Moderator
2,241 Views

Hi,


We haven't heard back from you. Could you please provide an update on your issue?


Thanks & Regards,

Noorjahan.


0 Kudos
Andreas4
Beginner
2,227 Views

hello,

thanks for the infos posted before.

i like to use "enqueue_kernel" command which requires queue_t parameter.

https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_C.html#enqueuing-kernels

 

I try the examples , but it seems , that this function requires device queue.

get_default_queue() always return 0;

I wrote kernel with parameter queue_t as argument,

but when i call clSetKernelArg with the queue Argument(host queue) is not accepted.

 

best regards

ANdreas

0 Kudos
Ben_A_Intel
Employee
2,214 Views

@Andreas4 wrote:

I try the examples , but it seems , that this function requires device queue.

Hi, this is correct, and we do not support creating device queues on any of our GPUs with our latest drivers.  If you query CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES  you should see that we return zero, indicating that we do not support any of the device-side enqueue capabilities.

Can you please describe what you are trying to solve with device-side enqueue and perhaps we can suggest an alternative?

You may also want to try our CPU OpenCL device, which still supports device-side enqueue.

0 Kudos
NoorjahanSk_Intel
Moderator
2,203 Views

Hi,


We haven't heard back from you. Could you please provide an update on your issue?


Thanks & Regards,

Noorjahan.


0 Kudos
NoorjahanSk_Intel
Moderator
2,181 Views

Hi,


We have not heard back from you, so we will close this inquiry now. If you need further assistance, please post a new question.


Thanks & Regards,

Noorjahan.


0 Kudos
Reply