【发布时间】:2013-06-21 17:46:58
【问题描述】:
在我的程序中,我有两个内核,对于每个内核,我只启动两个 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
在开普勒 3.5 中: 开普勒架构中的新“Hyper-Q”功能允许同时从多个 MPI 进程中午餐多个内核。 (或其他过程)
【问题讨论】:
-
您可能会发现您使用 OpenCL 中的设备分区功能来回答。
标签: concurrency cuda