我现在出的问题很奇怪,当运行到这个kernal函数的时候,VS2008会在下面调试输出"VC6.0++ 内存异常",但程序还能够运行,继续运行到cudamemcpy的时候,就会出现Cuda error in file ‘d:/VS/ismf_paper/ismf_paper//main.cu’ in line 290 : the launch timed out and was terminated.的错误,程序退出。
在网上查了很久,好像是说global内存存在频繁数据移动的饿时候就会出现问题,下面是我代码的部分:
int row=blockIdx.x;
int column=threadIdx.x;
int index=rowwidth+column;
int filter=dev_filter+index*200;
int m,n,var;
if ((row>4)&&(row<height-5)&&(column>4)&&(column<width-5))
{
for (m=0;filter[m]!=-1;++m)
for(n=m+1;filter[n]!=-1;++n)
{
if (filter[m]<filter[n])
{
var=filter[m];
filter[m]=filter[n];
filter[n]=var;
}
}
result[index]=filter[node.k-1];
}
__syncthreads();