独立内核不并发执行

时间:2013-06-26 11:45:09

标签: cuda

我正在CUDA中实现类似Radon的转换,但我似乎无法从我的GeForce TITAN中获得所有性能(编辑:显然我做,见注释)。为了优化这一点,我想到了并发执行内核,因为它们只需要很少的数据传输,但我无法让内核同时执行。

典型的配置文件运行如下所示: enter image description here

启用“并发内核支持”,使用CUDA 5.5(RC)为sm_35编译和生成代码。重叠很少,几乎不值得。

我已经阅读了一些关于并发内核执行的内容,并尝试了不同的方法来实现它:

  • 在不同的流中启动内核
  • 交错内核启动,例如首先使用n个流启动内核A n次,然后使用相同的n个流等启动内核B n次(尽管对于Kepler来说可能不再需要这样做了;即使启动非交错,硬件仍设法部分重叠内核)< / LI>
  • 确保内核不使用相同的全局内存(虽然我不知道这是否重要)
  • 确保内核不使用太多共享内存(旋转内核不使用任何内容)

我不明白为什么旋转内核不会重叠。我是资源有限的,如果是这样,我怎么能找到它?如果我使用更多不同的内核,它会设法更多地并行化,例如在这一个中,

enter image description here

但我认为应该做得更好......

编辑:删除了20%的数字,因为我无法重现它,而且它似乎也是错误的

0 个答案:

没有答案