我正在尝试使用cuda-gdb来检查全局设备内存。即使在cudaMemcpy之后,这些值似乎也都是零。但是,在内核中,共享内存中的值是好的。有什么想法吗?cuda-gdb会检查全局设备内存吗?看起来主机内存和设备共享内存都很好。谢谢。
发布于 2016-06-18 02:26:29
假设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}发布于 2012-06-01 01:15:37
目前,只有在CUDA内核启动后,cuda-gdb才能读取您复制到全局内存中的数据。这可能会在未来的版本中得到改善。
发布于 2011-07-14 05:18:26
检查全局内存中的数据的一种简单方法是将数据从全局内存写回主机,并查看这些值。但我不确定是否有可能用cuda-gdb检查这一点。
顺便问一下,您是如何知道全局内存中的值都为零的。如果您的最终结果完全为零,则意味着您的代码中存在错误。如果CUDA不知道确切的值是什么,它将返回零。例如,大部分CUDA不返回NAN,而是返回零。
https://stackoverflow.com/questions/6683721
复制相似问题