Do kernels/streams execute concurrently?

I’m wondering about this: if I have two processes which connect to the same card and issue kernel calls are the kernels queued i.e. run sequentially? I think they are.

Similarly, if process 1 issues a mem cpy to the card and a kernel from process 2 is running does the mem copy get queued or run concurrently?

Regarding streams, the manual says that: ‘Applications manage concurrency through streams. A stream is a sequence of operations that execute in order. Different streams, on the other hand, may execute their operations out of order with respect to one another or concurrently.’

This seems to imply that the operations in two streams can execute concurrently. Is this true? How can two kernels execute concurrently?


Only one kernel per card AFAIK, but memcopies and CPU processing can run side-by-side with the kernels - a synchronous operation will have idle periods on the GPU and waste CPU cycles in busy loops, but with streams, you can have full utilisation of the GPU if you can feed it fast enough, and the CPU doesn’t hang around twiddling its thumbs three billion times per second :magic: