2011-07-13 36 views
3

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

回答

-1

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

顺便说一下,您是如何知道全局内存中的值全是零的?如果你的最终结果完全是零,那就意味着你的代码有问题。如果CUDA不知道该值究竟是什么,则返回零。例如,大多数CUDA不返回NAN,而是返回零。

1

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

7

假设d_array是一个指向设备存储器,

(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}