Any time I’ve had problems like this is was bugs in my code. Each application gets private instances and correct code will not interfere with each other.
The bugs are most likely to be related to incorrectly initialised device memory from memory. And/or race conditions.
If OTOH you wanted to ensure serialised access for other reasons such as performance or resource requirements you’d probably have to write your own IPC solution and add it to all your code.
We finally found out what happened. It was a driver bug. The second simultaneous execution had silenty failed, giving us incorrect numerical results but no any CL error.
After installing the latest NV driver, the second execution returns us CL_MEM_OBJECT_ALLOCATION_FAILURE just after the clEnqueueNDRangeKernel. which is correct because we are using big data sets (and before updating the driver we started to think that this was a memory related problem)