使用纹理存储器下的坐标问题

我把2D数据存储到纹理存储器,在内核函数中仅简单的通过纹理拾取把数据传回,这样处理后的数据和原来数据完全一样吗,相同坐标下对应的数值是一样的吗,不会有什么偏差吗?从实验数据中发现有些坐标下对应的两个值是不一样的

内核函数如下
texture <float,2,cudaReadModeElementType> tex;
global void
kernel(float *d_data,int Width,int Height){

int i=blockIdx.xblockDim.x+threadIdx.x;
int j=blockIdx.y
blockDim.y+threadIdx.y;
float ix=(float)i;
float jy=(float)j;

if(i <Width&&j <Height){

d_data[i*Width+j]=tex2D(tex,jy,ix);

}

}

jy,ix 反了

如果正确的话,应当是有偏差的,但是不会大,因为GPU和CPU的浮点精度不一样。

应该是这样的,写错了
d_data[i*Height+j]=tex2D(tex,ix,iy);

[ 本帖最后由 rebeccajuan 于 2010-3-5 17:07 编辑 ]