initcheck如何影响CUDA程序的执行?

时间:2017-02-19 22:46:34

标签: cuda

我正在开发一个使用多个设备上下文的程序,每个上下文都在单独的流中处理(通常是同步的)。问题是,只有在cuda-memcheck --tool initcheck下运行时才会产生正确的结果。我的问题是:

initcheck下运行程序如何修改它的执行?

由于复杂程度,我无法共享任何代码或产生MCVE,所以请一般地对待这个问题。已经使用nvidia提供的所有调试工具检查了该程序,并且没有产生任何错误。

1 个答案:

答案 0 :(得分:1)

来自http://docs.nvidia.com/cuda/cuda-memcheck/#what-is-initcheck

  

initcheck工具是运行时未初始化设备全局内存   接入探测器。此工具可以识别设备全局内存的时间   在没有通过设备端写入或通过设备端初始化的情况下访问   cudaMemcpy / cudaMemset。

     

目前,此工具仅支持检测对设备全局的访问   记忆。   [...]   注意:initcheck工具不执行任何内存访问错误检查。

如果你实际上没有检测到任何错误,但是当工具关闭时获得不同的结果,我的第一个怀疑是一些并发错误(read-after-write等...)。像上面这样的工具通常会减慢程序的某些部分,这可能会影响这类问题。

这只是一个猜测......