concurrencycudakeplercuda-streams

Concurrent, unique kernels on the same multiprocessor?


Is it possible, using streams, to have multiple unique kernels on the same streaming multiprocessor in Kepler 3.5 GPUs? I.e. run 30 kernels of size <<<1,1024>>> at the same time on a Kepler GPU with 15 SMs?


Solution

  • On a compute capability 3.5 device, it might be possible.

    Those devices support up to 32 concurrent kernels per GPU and 2048 threads peer multi-processor. With 64k registers per multi-processor, two blocks of 1024 threads could run concurrently if their register footprint was less than 16 per thread, and less than 24kb shared memory per block.

    You can find all of this is the hardware description found in the appendices of the CUDA programming guide.