|
__kernel void interpolation_kernel( __global float * dataIn, //没有经过插值的数据平面 __global float * dataOut, //经过插值的数据平面 __global float * Boundary, //边界信息 __global float * dist, //距离矩阵信息 __global int * rangef ) { int x1=gid_row; int y1=gid_col; ............... for(int s1=x2-p2;s1< x2+p2+1;s1++) { for(int t1=y2-p2;t1<y2+p2+1;t1++) { fdddd=dataIn[(x2+s1)*plotpixelsize+y2+t1]; if(fdddd==-1) { ChooseK[Ki]=fdddd; dd[Ki]=dist[(x2+s1)*interppixelsize+y2+t1];//此点到圆盘中心点(插值点)的距离 } Ki++; } } ....................... dataOut[gid_row]=5555555; 以上代码dataOut 可以输出正确的数据。 但是如果将Ki++移入if内: for(int s1=x2-p2;s1< x2+p2+1;s1++) { for(int t1=y2-p2;t1<y2+p2+1;t1++) { fdddd=dataIn[(x2+s1)*plotpixelsize+y2+t1]; if(fdddd==-1) { ChooseK[Ki]=fdddd; dd[Ki]=dist[(x2+s1)*interppixelsize+y2+t1];//此点到圆盘中心点(插值点)的距离 Ki++; } } } ....................... dataOut[gid_row]=5555555; 这样的话,dataOut就得不到正确的结果,输出全为0。不知到Ki++移入if后为何会产生这种结果,请达人为我解析一下。 |
|
|