我想知道有没有一种方法可以查看给定内核中的所有变量值,例如,对于threadIdx.x =1,它当前正在工作的数据是什么,这些数据的值是什么?
一切都运行正常,所以我的问题是,如何像在普通VS中一样,使用“快速观察”或“添加观察”来查看变量,它们在NSight中的等价物是什么?谢谢,我已经挣扎了几个小时了。
我有CUDA信息窗口和CUDA扭曲窗口,当通过NSight调试时,只显示blockIdx,threadIDx坐标。
__global__ void addKernel(int *c, const int *a, const int *b)
{
int i = threadIdx.x;
if(i<N)
c[i]=a[i]*b[i];
// DUmmy code
if(i<2)
int k=i;
}我的内核名为addKernel<<<1,N>>>(dev_c,dev_a,dev_b),我的#DEFINE N 10。
我在if和else中设置了断点。扭曲窗口中的输出设置为显示:
*(a+i) *(b+i) *(c+i) i
0 0 -1 0
2 1 -1 1
4 4 -1 2
6 9 -1 3
8 16 -1 4所以,我的c永远不会被设置。怎么会这样呢?谢谢
附注:那些给我减号的人看到我的问题时总是放弃,我得了-1。再次感谢
发布于 2013-02-11 06:03:14
在向内核添加了一些虚拟行之后,我可以看到c列的值更新了。所以,这就是解决方案。我知道这听起来微不足道,但我以前试过添加虚线,除非额外的虚线是其他变量,而不是用于计算c的线程。所以,简而言之,计算新的线程(或内核中任何新的线程),并在CUDA Warp窗口中想要看到的变量后添加这些额外的行。
https://stackoverflow.com/questions/14798821
复制相似问题