OpenCL* for CPU
Ask questions and share information on Intel® SDK for OpenCL™ Applications and OpenCL™ implementations for Intel® CPU
This forum covers OpenCL* for CPU only. OpenCL* for GPU questions can be asked in the GPU Compute Software forum. Intel® FPGA SDK for OpenCL™ questions can be ask in the FPGA Intel® High Level Design forum.
1663 Discussions

Running OpenCL kernel (s) on CPU and GPU



We have installed intel media server studio essential 2015 R5 took kit. We have CentOS 7.1 running on Intel i7-4790K processor with HD4600 graphics.

I want to confirm/ask following points related to running OpenCL programs with the new OpenCL Driver:

1) Although the website ( , 3rd option) says that the OpenCL driver on Linux OS supports only GPU, I am able to run the programs on both CPU and GPU by using CL_DEVICE_TYPE_{GPU/CPU} options. I am wondering if there is any limitation that I should be aware of while running a program on CPU. Please confirm.

2) Is it possible to execute multiple kernels at the same time on GPU? More specifically, I would like to know about the scheduling behavior in following cases:

(a) When multiple kernels (with no dependencies among them) are launched from an application through multiple command-queues: Do these kernels run concurrently, say when a particular kernel does not use all available cores of GPU? I know that there are four time stamps in a kernel execution: enqueue, submit, start, end. Can multiple kernels have an overlap between start and end? I think Device fission is one way of dividing the number of cores in to different groups, but I am wondering if the GPU hardware has an internal mechanism to run multiple kernels without Device fission?

(b) When multiple kernels are launched from DIFFERENT applications: Here, different kernels belong to different programs. How does the OpenCL driver schedule kernels in this case? Can multiple kernels "run" concurrently?



0 Kudos
2 Replies

Hi Kapil,

1. Both CPU and GPU devices are supported. They support different sets of extensions, which you can query with clGetDeviceInfo and parameter CL_DEVICE_EXTENSIONS.

2. We do not support concurrent kernel execution at this time in production drivers, though hardware is capable of doing it. In both scenarios a) and b) one kernel runs to completion and then another kernel starts whether they are from multiple queues or multiple applications. Device fission is not supported currently on the GPU. Even though there are multiple host-side queues, they all drain to only one command queue to the device.


Thanks Robert!

Your comments are helpful.