Regarding OpenCL 1.1 spec, the glossary defines what thread-safe means for OpenCL:And from the appendix:Thread-safe: An OpenCL API call is considered to be thread-safe if the internal state as managed by OpenCL remains consistent when called simultaneously by multiple host threads. OpenCL API calls that are thread-safe allow an application to call these functions in multiple host threads without having to implement mutual exclusion across these host threads i.e. they are also re-entrant-safe.From this I conclude that if an implementation conform to the OpenCL 1.1 spec, it should be possible to enqueue multiple kernels from different threads, onto the same command-queue, with a single device to execute those kernels.All OpenCL API calls are thread-safe except clSetKernelArg.
Is this correct? I'm asking because with OpenCL 1.0 this does not seem to be the case, and with the NVIDIA implementation, attempting this causes a crash according to what I read in the message boards.
Can someone confirm?