Question about CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE

I was looking at this property for creating command queues and I could not figure out why there would be need to execute commands out of order. Is there a benefit in speed with going out of order? Does this property just exist for compatibility with different types of processors? If someone can elaborate I would appreciate it.

Is there a benefit in speed with going out of order?

Yes. If the queue is allowed to execute commands out of order there are a number of things that the OpenCL driver can do that will improve the execution performance. Unfortunately I can’t get into details.

Keep in mind, however, that if you enable this feature you will need to ensure that the wait_list for each command is correct and complete.

My advice would be: use in-order execution while you are prototyping your application. Once you get it working 100% and you start looking into performance improvements, then review the wait_list of each of the OpenCL commands you enqueue and finally enable out-of-order execution.