【问题标题】:Two concurrent kernels on nvidia kepler 3.0nvidia kepler 3.0 上的两个并发内核
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 那么 Nvidia 卡具有类似于核心/线程关联的能力?
  • 我不会说这个问题或我的回答与亲和力有关。该问题表明有 4 个 SMX 可用。由于每个提议的内核都有 2 个线程块,因此应该可以在每个 SMX 上执行一个线程块,就像 OP 建议的那样。
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多