非确定性输出的CUDA调试程序

CUDA debugging procedure for non-deterministic output

本文关键字:CUDA 调试程序 输出 确定性 非确定      更新时间:2023-10-16

我正在我的Ubuntu 10.10 64位系统上调试我的CUDA 4.0/基于推力的图像重建代码,我一直在试图找出如何调试这个运行时错误,我的输出图像出现一些随机的"噪音"。在我的代码中没有随机数生成器输出,所以我希望每次运行之间的输出是一致的,即使它是错误的。然而,它不是……

我只是想知道是否有人有一个通用的程序来调试CUDA运行时错误,如这些。我没有在cuda内核中使用任何共享内存。我已经尽力避免任何涉及全局内存的竞态条件,但是我可能错过了一些东西。

我已经尝试使用gpu ocelot,但它有问题识别我的一些CUDA和CUSPARSE函数调用。

同样,我的代码一般工作。只是当我改变这个设置时,我得到了这些不确定的结果。我已经检查了与该设置相关的所有代码,但我不知道我做错了什么。如果我能把它提炼出来放到这里,我可能会这么做,但现在放到这里太复杂了

你确定所有的内核都有适当的块大小/剩余处理吗?当数组末尾的数据元素没有被处理时,就会出现不确定的结果。

我们的内核最初用于处理已知是256个元素的整数倍的数据。所以我们使用256的块大小,并做一个简单的除法来得到块的数量。当将数据更改为任意长度时,不会处理剩余的255个或更少的元素。然后输出中的这些点具有随机数据。