使用cuda gdb检查全局设备内存

使用cuda gdb检查全局设备内存,cuda,Cuda,我正在尝试使用cuda gdb检查全局设备内存。看起来这些值都是零,即使在cudaMemcpy之后。然而,在内核中,共享内存中的值是好的。有什么想法吗?cuda gdb甚至会检查全局设备内存吗。看来主机内存和设备共享内存都不错。谢谢 检查全局内存中数据的一种简单方法是将全局内存中的数据写回主机并查看值。但我不确定是否有可能与cuda gdb核实这一点 顺便问一下,你怎么知道全局内存中的值都是零呢。如果最终结果完全为零,则表示代码中存在错误。如果CUDA不知道具体值是什么,则返回零。例如,大多数C

我正在尝试使用cuda gdb检查全局设备内存。看起来这些值都是零,即使在cudaMemcpy之后。然而,在内核中,共享内存中的值是好的。有什么想法吗?cuda gdb甚至会检查全局设备内存吗。看来主机内存和设备共享内存都不错。谢谢

检查全局内存中数据的一种简单方法是将全局内存中的数据写回主机并查看值。但我不确定是否有可能与cuda gdb核实这一点


顺便问一下,你怎么知道全局内存中的值都是零呢。如果最终结果完全为零,则表示代码中存在错误。如果CUDA不知道具体值是什么,则返回零。例如,大多数CUDA不返回NAN,而是返回零。

目前CUDA gdb只能在启动CUDA内核后读取复制到全局内存中的数据。这在未来的版本中可能会有所改进。

假设d_数组是指向设备内存的指针

(cuda-gdb) print d_array
$1 = (double *) 0x13082c3000
要访问其值,请首先将其转换为全局内存指针:

(cuda-gdb) print ((@global double *)d_array)[0]
$2 = 0.5
要访问阵列,请执行以下操作:

(cuda-gdb) print ((@global double *)d_array)[0]@3
$3 = {0.5, 0.4, 0.3}