0

在我的程序中,我有两个内核,对于每个内核,我只启动两个 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 进程中午餐多个内核。(或其他过程)

4

1 回答 1

2

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

于 2013-06-21T22:18:15.513 回答