why it takes longer when using texture memory

hi there,

prior to filtering, i m making a Grey-scale image out of RGB,
I verified the code through implementing everything through
global memory and it works, I just wondering why it is taking
extra time for the gpu to process the image when I bound the RGB image
to texture memory ?

gpu is GF8600gt , cpu Core2 Duo 2.4Ghz , 4G RAM

it takes 7ms for an RGB of size 480*680 without binding and 8.6 ms when bound to 1D texture,

the second question is why occasionally it takes longer to run the same code ? i.e. occasionally
it takes like 6ms to run the same code but not very often ?

thank you in advance,


Maybe the data gets cached in L1 cache which is faster than the texture fetching.

thank you for your reply,

so you re suggesting it cannot get improved, I thought I was doing something wrong ?

or may be binding to texture memory only works for large data sets ?

but,I noticed that the SobelFilter example in the SDK is binding the pic to texture memory and then is reading it into
shared memory for an image of size 500*500,

The 8600 GT doesn’t have any L1 cache… But if there is no data reuse and perfect coalescing, which likely is the case for your problem, then there is no benefit from cache.

What might help in your case is to calculate more than one output per thread, which would increase the number of memory transactions in flight to better hide latency. If you show us your code we might also be able to give other suggestions.