Failed using texture mem in spmv

i have no nv device and i use emu=1 while compiling.

when I ran the binary, the result was always all zeros.

my code is below:

spmv.cu
float d_data, d_indices, d_x, d_y;
cudaMalloc((void
) &d_data, mem_size_data);
cudaMalloc((void
) &d_indices, mem_size_indices);
cudaMalloc((void**) &d_x, mem_size_x);
cudaMalloc((void**) &d_y, mem_size_y);

cudaMemcpy(d_data, h_data, mem_size_data, cudaMemcpyHostToDevice);
cudaMemcpy(d_indices, h_indices, mem_size_indices, cudaMemcpyHostToDevice);
cudaMemcpy(d_x, h_x, mem_size_x, cudaMemcpyHostToDevice);

/// texture mem
cudaChannelFormatDesc channelDesc =  cudaCreateChannelDesc(32, 0, 0, 0, cudaChannelFormatKindFloat);
cudaArray* cuArray;
cudaMallocArray(&cuArray, &channelDesc, 160, 1);

cudaMemcpyToArray(cuArray, 0, 0, h_x, mem_size_x, cudaMemcpyHostToDevice);

texRef.addressMode[0] = cudaAddressModeWrap;
texRef.addressMode[1] = cudaAddressModeWrap;
texRef.filterMode = cudaFilterModeLinear;
texRef.normalized = true;

cudaBindTextureToArray(texRef, cuArray, channelDesc);
//
    dim3 dimBlock(16,1);
dim3 dimGrid(data_row/dimBlock.x,1);
cutStartTimer(timer2);	

ell_g_kernel<<< dimGrid, dimBlock >>>(d_data, d_indices, d_x, d_y, data_row, data_col);

ell_g_kernel.cu

texture<float, 2, cudaReadModeElementType> texRef;

global void ell_g_kernel(float *d_data, float *d_indices, float *d_x, float *d_y, int mat_row, int mat_col)
{
int tx = blockDim.x * blockIdx.x + threadIdx.x;
int j;
for(j = 0; j < mat_col; j++)
if(d_data[tx + j * mat_row] > 0)
d_y[tx] += d_data[tx + j * mat_row] * tex2D(texRef, j, 0);
}