nvidia kepler 3.0上的两个并发内核

时间:2013-06-21 17:46:59

标签: concurrency cuda

在我的程序中,我有两个内核,对于每个内核,我只启动两个256个线程的块。

kernel1<<<2,256>>>()
kernel2<<<2,256>>>()

在4个SMX图形卡上,程序的当前执行情况类似(当使用可视化分析器进行分析时,两个内核都会依次执行)

 SMX1 SMX2
 ---------
| K1 | K1 |  
| K1 | K1 |
-----------
|    |    |
|    |    |
 ---------
 SMX3 SMX4

 SMX1 SMX2
 ---------
| K2 | K2 |  
| K2 | K2 |
-----------
|    |    |
|    |    |
 ---------
 SMX3 SMX4

我想知道是否有可能在同一个程序中同时启动两个内核,并且看起来像这样并将执行时间除以2:

 SMX1 SMX2
 ---------
| K1 | K1 |  
| K1 | K1 |
-----------
| K2 | K2 |
| K2 | K2 |
 ---------
 SMX3 SMX4

在kepler 3.5中: kepler架构中的新“Hyper-Q”功能允许同时从多个MPI进程中共享多个内核。 (或其他过程)

1 个答案:

答案 0 :(得分:2)

应该可以同时执行2个内核。对于初学者,您需要在单独的流中启动两个内核。是否将执行时间除以2,我不能说。您可能需要查看concurrent kernels CUDA sample或涉及流的任何示例。