Concurrency nvidia开普勒3.0上的两个并发内核

Concurrency nvidia开普勒3.0上的两个并发内核,concurrency,cuda,Concurrency,Cuda,在我的程序中,我有两个内核,每个内核只启动两个256个线程的块 kernel1<<<2,256>>>() kernel2<<<2,256>>>() 我想知道是否有可能在同一个程序中同时启动两个内核,并有这样的东西,将执行时间除以2: SMX1 SMX2 --------- | K1 | K1 | | K1 | K1 | ----------- | K2 | K2 | | K2 | K2 | ---------

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

kernel1<<<2,256>>>()
kernel2<<<2,256>>>()
我想知道是否有可能在同一个程序中同时启动两个内核,并有这样的东西,将执行时间除以2:

 SMX1 SMX2
 ---------
| K1 | K1 |  
| K1 | K1 |
-----------
| K2 | K2 |
| K2 | K2 |
 ---------
 SMX3 SMX4
在开普勒3.5中:
开普勒体系结构中新的“Hyper-Q”特性允许同时从多个MPI进程中获取多个内核。(或其他进程)

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

因此Nvidia卡具有类似于核心/线程亲和力的功能?我不会说这个问题或我的答案与亲和力有关。问题表明有4个SMX可用。由于每个建议的内核都有2个线程块,所以应该可以在每个SMX上执行一个线程块,就像OP建议的那样。您可以使用OpenCL中的设备分区功能找到答案。
 SMX1 SMX2
 ---------
| K1 | K1 |  
| K1 | K1 |
-----------
| K2 | K2 |
| K2 | K2 |
 ---------
 SMX3 SMX4