Can Native Kernels Enqueue Non-Native Kernels?

I know non-native kernels cannot enqueue non-native kernels, but what about native kernels enqueueing non-native kernels? Say you have a quad-core CPU and four GPUs, then partition the CPU info four single-core devices, each of which would then control a distinct GPU.

When will out-of-order command queues be supported in almost all platforms?

I know non-native kernels cannot enqueue non-native kernels, but what about native kernels enqueueing non-native kernels?

Native kernels can enqueue non-native kernels just fine. However, you have to be careful to avoid deadlocks. For example, calling clFinish() on the same queue that is executing the native kernel would naturally cause a deadlock.

Say you have a quad-core CPU and four GPUs, then partition the CPU info four single-core devices, each of which would then control a distinct GPU.

Yes, you can do that. I’m not sure I get the motivation for doing it, though.

When will out-of-order command queues be supported in almost all platforms?

Personally I would not count on that happening.

I am understanding right that you can ENQUEUE a kernel from withing another kernel? How exactly would you do that? I thought this was part of the host-side API only.

Notice that we are talking about native kernels.