内核在创建上下文时过度启动

问题描述 投票:0回答:1

最近我开始扩展一个非常依赖boost的项目,使其最内部的循环使用CUDA。不过我觉得值得在这里发布一些我看到的奇怪行为。简单地包含某些boost头会导致我的第一次cuda调用产生大量的kernels。

如果编译并调试以下代码:simpleestCase.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]

到目前为止,我发现有两个头文件导致了这个问题:boostthread.hppboostmpi.hpp。

这里有一点信息,可能对复制这个问题有用。

  • IDE:nSight Eclipse版
  • 操作系统: ubuntu 12.04 x64
  • GPU:GeForce GTX 580 GeForce GTX 580 (我相信我的操作系统使用的是GeForce GT 520)
  • 助推 lib: 1.52
  • cat procdrivernvidiaversion:
    • NVRM版本。NVIDIA UNIX x86_64 内核模块 310.32 2013年1月14日:41:13 PST
    • GCC版本:gcc 4.6.3版本(UbuntuLinaro 4.6.3-1ubuntu5)

项目设置。

  • Properties->Build->CUDA->DeviceLinkerMode = Separate Compilation。
  • Properties->Build->CUDA->GenerateGPUCode = 2.0。
  • Properties->Build->Settings->ToolSettings->NVCCLinker->Libraries = boost_system。
  • Properties->Name = simplest_case_example。

我想这就是一切

编辑。

谢谢你让我注意到我没有问过问题的事实。我知道我忘记了一些关键的东西.我的问题是这样的。

我觉得很奇怪,在他们的生成外设内核调用中,非常具体的包括,特别是我没有使用这些包括,我不明白它们如何影响我与CUDA的交互。cuda应该为我根本不用的代码启动这么多额外的内核吗?我看到在我现在正在做的项目中,有超过100个内核被启动。 当我的项目中唯一与CUDA相关的代码就是在程序的入口处有一个cudaMalloc。

编辑2.在Tesla K20(开普勒架构卡)上也会发生。

同样发生在Tesla K20上 (开普勒架构卡, 而我认为GTX 580是费米卡).

编辑3:我把cuda驱动更新到319版本。

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

boost cuda boost-thread cuda-context
1个回答
0
投票

好吧,还是没有实际问题产生,所以我想这只是后台发生的事情。

© www.soinside.com 2019 - 2024. All rights reserved.