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

sma*_*ato 6 cuda

我正在尝试使用cuda-gdb来检查全局设备内存.即使在cudaMemcpy之后,似乎值都为零.但是,在内核中,共享内存中的值很好.任何的想法?cuda-gdb甚至可以检查全局设备内存.似乎主机内存和设备共享内存都很好.谢谢.

Xin*_*Shi 14

假设d_array是指向设备内存的指针,

(cuda-gdb) print d_array
$1 = (double *) 0x13082c3000
Run Code Online (Sandbox Code Playgroud)

要访问其值,首先将其转换为全局内存指针:

(cuda-gdb) print ((@global double *)d_array)[0]
$2 = 0.5
Run Code Online (Sandbox Code Playgroud)

要访问该阵列:

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


ved*_*eda 0

检查全局存储器中的数据的一种简单方法是将数据从全局存储器写回到主机并查看值。但我不确定是否可以使用 cuda-gdb 检查这一点。

对了,你怎么知道全局内存中的值全是零呢?如果您的最终结果完全为零,则意味着您的代码中有问题。如果 CUDA 不知道该值到底是什么,它将返回零。例如,大多数 CUDA 不返回 NAN,而是返回零。