problem fixed: i used a too small constant memory.
We should alloc as big as 16k ints (actually 15k is safe) in constMem!
Hi, I use int single-component(red) 1D texture, and when size>1M, computing with it gets wrong number. is 1M int (4Mbyte) the biggest number? thanks.
(my card is g80 GTX)
//main.cu
texture< AttrType, 1, cudaReadModeElementType> tex;
tex.addressMode[0] = cudaAddressModeClamp;
tex.filterMode = cudaFilterModePoint;
tex.normalized = 0;
cudaChannelFormatDesc desc = cudaCreateChannelDesc(32, 0, 0, 0, cudaChannelFormatKindUnsigned);
int *d_tex = 0;
//asign d_tex..=..
CUDA_SAFE_CALL(cudaBindTexture("tex", d_tex, &desc, sizeof(int) * N, 0));
//kernel.cu
extern texture< AttrType, 1, cudaReadModeElementType> tex;
..
kernel{
.. result = texfetch(tex[i], offset);
}