在我的程序中,我有两个内核,对于每个内核,我只启动两个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进程中共享多个内核。 (或其他过程)
答案 0 :(得分:2)
应该可以同时执行2个内核。对于初学者,您需要在单独的流中启动两个内核。是否将执行时间除以2,我不能说。您可能需要查看concurrent kernels CUDA sample或涉及流的任何示例。