initcheck如何影响CUDA程序的执行?
我正在开发一个使用多个设备上下文的程序,每个都在单独的流中处理(通常是同步的)。问题是,只有在initcheck如何影响CUDA程序的执行?,cuda,Cuda,我正在开发一个使用多个设备上下文的程序,每个都在单独的流中处理(通常是同步的)。问题是,只有在cuda memcheck--tool initcheck下运行时,它才会产生正确的结果。我的问题是: 在initcheck下运行程序如何修改它的执行 由于复杂程度的原因,我无法共享任何代码或生成MCVE,所以请比较笼统地对待这个问题。该程序已使用nvidia提供的所有调试工具进行检查,未产生任何错误。来自: initcheck工具是运行时未初始化的设备全局内存 访问检测器。此工具可以识别设备全局内存何
cuda memcheck--tool initcheck
下运行时,它才会产生正确的结果。我的问题是:
在initcheck
下运行程序如何修改它的执行
由于复杂程度的原因,我无法共享任何代码或生成MCVE,所以请比较笼统地对待这个问题。该程序已使用nvidia提供的所有调试工具进行检查,未产生任何错误。来自:
initcheck工具是运行时未初始化的设备全局内存
访问检测器。此工具可以识别设备全局内存何时可用
通过设备端写入或通过
cudaMemcpy/cudaMemset
目前,此工具仅支持检测对设备全局的访问
记忆。
[...]
注意:initcheck工具不执行任何内存访问错误检查
如果您实际上没有检测到任何错误,但在工具关闭时获得不同的结果,那么我的第一个怀疑可能是一些并发错误(写后读取,等等)。像上面这样的工具通常会减慢程序的某些部分,这可能会影响这类问题
不过,这只是一个猜测…我想是连载。谢谢你的回答!医生是我的第一选择,但由于缺乏信息,我不得不在这里问这个问题。我还对一些并发性问题下了赌注,但不知道如何识别它们的起源。我希望
initcheck
做的不仅仅是增加开销——调查它周围发生的事情将是一个很好的开始。它做的更多:它检查您是否只使用初始化的内存——但是如果您没有得到错误,那么这就不是问题。问题是不同的。看起来主机端的设备指针算法在传递到内核时无法正常工作。无论如何,谢谢你的帮助!有趣。指针算法在任何一侧的行为都应该相同。我想看看你发现的问题!