内核创建过多的内核启动

时间:2013-05-18 00:06:39

标签: boost cuda boost-thread

最近,我开始扩展一个非常依赖于boost的项目,将CUDA用于其最内层循环。我认为在这里发布一些我曾经看过的奇怪行为是值得的。简单地包含某些boost标题将导致我的第一个cuda调用生成大量内核。

如果编译并调试以下代码: simplestCase.cu

#include <boost/thread.hpp>

int main(int argc, char **argv){
int *myInt;
cudaMalloc(&myInt, sizeof(int));
return 0;
}

我在执行cudaMalloc时得到以下调试消息行(如果我运行我已定义的内核,则会出现相同的行为。似乎任何触发上下文创建的内容都会触发此。):

[Launch of CUDA Kernel 0 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]
[Launch of CUDA Kernel 1 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]
[Launch of CUDA Kernel 2 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]
[Launch of CUDA Kernel 3 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]
[Launch of CUDA Kernel 4 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]
[Launch of CUDA Kernel 5 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]
[Launch of CUDA Kernel 6 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]
[Launch of CUDA Kernel 7 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]
[Launch of CUDA Kernel 8 (memset32_post<<<(1,1,1),(64,1,1)>>>) on Device 0]

到目前为止,我已经确定了导致问​​题的两个标头: 升压/ thread.hpp 升压/ mpi.hpp

以下是一些可能有助于复制问题的信息:

  • IDE:nSight Eclipse版
  • OS:ubuntu 12.04 x64
  • GPU:GeForce GTX 580(我相信我的操作系统正在使用我的GeForce GT 520)
  • boost lib:1.52
  • cat / proc / driver / nvidia / version:
    • NVRM版本:NVIDIA UNIX x86_64内核模块310.32 1月14日星期一14:41:13太平洋标准时间2013
    • GCC版本:gcc版本4.6.3(Ubuntu / Linaro 4.6.3-1ubuntu5)

项目设置:

  • 属性 - &gt;构建 - &gt; CUDA-&gt; DeviceLinkerMode =单独编译
  • 属性 - &gt;构建 - &gt; CUDA-&gt; GenerateGPUCode = 2.0
  • 属性 - &gt;构建 - &gt;设置 - &gt;工具设置 - &gt; NVCCLinker-&gt; Libraries = boost_system
  • 属性 - &gt;名称= simplest_case_example

我认为这就是一切。

修改

感谢您关注我没有提出问题的事实。我知道我忘记了一些关键的事情。 我的问题是:

我觉得非常具体,包括他们生成的外围内核调用,特别是因为我没有使用那些包含,我不知道它们如何影响我与CUDA的交互。 cuda是否应该为我甚至不使用的代码启动这么多额外的内核?我看到我正在处理的项目中已经启动了100多个内核,当我项目中唯一与CUDA相关的代码是程序入口点的单个cudaMalloc时。

EDIT2:

也发生在特斯拉K20(kepler架构卡上,而我认为GTX 580是费米)。

EDIT3:

将cuda驱动程序更新至版本319.23。我上面提到的行为没有变化,但这确实解决了我在大型程序中遇到的调试器问题。

1 个答案:

答案 0 :(得分:0)

嗯,仍然没有因此产生的实际问题,所以我想这只是在后台发生的事情。