It looks like open_cl does not check for data dependencies between different tasks that have been submitted.
IE: if one has one kernel that writes to memory region A, and one that reads from memory region A, it is the application developers responsibility to keep them from stepping on each-others toes.

I was wondering if there were already any libraries to work with open-cl that would handle the dependencies. I have a library designed to handle the scheduling of dependent tasks on heterogeneous hardware, but It was written before open-cl. I am thinking of porting it to open-cl, but don't want to bother if there is already a solution.