Is openCL suitable for task oriented parallelization really?

I’m curisous whether OpenCL is a good way to write task-oriented parallel program. The spec says that OpenCL is designed for GPU, Cell and other kinds of heterogeneous multi-core platform. But I think that it is just a extended version of CUDA.

How do you think about it? Cat OpenCL replace the existant programming model like ALF of Cell, SPI platform, TBB ??

The API for task parallelism do exist - Check EnqueueTask API

Then, can a task create some other task ?

For example, can a kernel running on the device push something in the command queue ? Can a running kernel start the execution of some others kernels ? As far as I understand the specs, it’s not possible, but maybe I overlooked something.


In OpenCL 1.0 a task can not enqueue another task. The host can build a task graph (using event dependencies) and submit task-parallel work to OpenCL, though.