cuda fortran texture memory precision

I’ve got an odd issue using cuda fortran with pgi/15.3.0 and cuda 6.5 where values stored in texture memory have low precision.

I’ve created a small reproducer linked below that creates a double precision device array filled with the value 15.4275d0, associates a texture pointer to this device array, and then launches a kernel to copy the values from the texture pointer to the device array. After the kernel has launched the array is filled with values like “15.42749786376953”. Is this the expected behavior of the texture cache?


Looks like a bug in our LLVM backend. I’ve entered a bug into our tracking system. To workaround it for now, use -Mcuda=nollvm in your compilation.

TPR 21795 - CUDA Fortran LLVM backend not handling real(8) textures correctly

has been corrected in the current 15.9 release.