CUDA:使用异步传输和kernrels的奇怪时间

时间:2015-03-06 17:58:20

标签: c++ cuda

我正在尝试编写我的第一个cuda应用程序。它以固定间隔(每2.1毫秒)获取数据,然后将其发送到GPU以使用CUDA进行处理。我写了一些看似正常工作的内核,但是视觉分析器为我提供了奇怪的时序结果,我似乎无法深入到底。以下是visual profiler的输出(我将时间跟踪的开头切断到左边,以及我的内核执行结束到右边)

Visual Profiler Weirdness #1

每次新数据到达时,“运行时API”行中的每个突发都是API调用,时间就是我所期望的。每个突发都异步传输数据并将内核启动到25个流中的1个。

为什么传输和内核在初始数据传输调用后会启动这么久?为什么他们会像这样爆发?在显示的时间之后,最后一次爆发实际上并没有完成一段时间。奇怪地删除内核并且只是进行数据传输使得所有事情都会连续快速发生,但是在调用传输之后很久。如果它是我的内核的问题,我希望每次传输都会在API调用之后立即发生。

Visual Profiler Weirdness #1

我看到另一篇帖子有类似的问题,但修复程序没有改变任何东西(我已经将我的显示移动到我的集成主板图形上,而我没有编译调试信息)。

卡片可能正在做其他我不知道的事情吗?这是一款GTX660。即使我没有连接显示器,Windows仍然可以用它来显示吗?

我很感激任何建议。

0 个答案:

没有答案