2

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?

tomix86
  • 1,336
  • 2
  • 18
  • 29
Jordan
  • 305
  • 3
  • 13
  • 2
    Which Kepler GPU? Compute capability 3.0 and 3.5 have different limits on kernel resources and concurrency. – talonmies Jun 26 '14 at 07:54
  • Your question is not very clear to me. The "i.e." part seems not to be consequential to the question asked before. It is not clear if you are interested into standard kernel concurrency or if you are interested to run different kernels on a specific multiprocessor. In the latter case, take into account that block scheduling is masked to the CUDA programmer. – Vitality Jun 26 '14 at 10:05
  • @Talonmies Sorry, Compute 3.5. K40-latest GPU. – Jordan Jun 26 '14 at 14:11
  • @JackOLantern different kernels on the same multiprocessor simultaneously. – Jordan Jun 26 '14 at 14:12
  • But on a _specific_ multiprocessor of your choice, or on _any_ of the available ones? – Vitality Jun 26 '14 at 16:48
  • Don't care about order I just want to run 30 kernels simultaneously. – Jordan Jun 26 '14 at 19:05

1 Answers1

6

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.

talonmies
  • 70,661
  • 34
  • 192
  • 269
  • 2
    Slide 19 [here](http://on-demand.gputechconf.com/gtc/2013/presentations/S3466-Programming-Guidelines-GPU-Architecture.pdf) may also be of interest. – Robert Crovella Jul 21 '14 at 02:56