system
1
我在正常的执行能运行的情况下,用nsight调试。可是却出现下面的提示:
[attach]3447[/attach]
内核部分的代码:
__global__ static void kernel(int *d_ws,int *d_degree,float *devData,int dis,int max,double p){
const int tid = threadIdx.x;
if(tid < dis){
if( devData[tid] < p)
d_ws[tid*max]=d_ws[tid*max]*2;
else
d_ws[tid*max]=3;
}
}
是我的nsight配置问题吗?
system
2
楼主您好,
不是您机器上的NSight产品有问题,而是您的代码有问题。
您图片右下角已经提示了Memory Check Detected **** access violations。
这代表您的代码存在越界的非法访问。
具体地点,您可能在如下下标计算上导致了越界:
d_ws[tid * max]
当您的tid * max 大于等于于d_ws中的元素总数的时候,您将会导致错误。
请修正此问题。
感谢您的来访。
system
3
LZ您好:
您在读取global memory的时候访存越界了,请您检查您的代码。
您单独贴出的kernel部分的代码不足以为您指出具体哪里出现越界,请您连同您的host端申请device端缓冲区的代码等一并分析。
祝您好运~