Yes, it’s possible. At least in Windows, the program will look for the corresponding CUDA DLL files for the version you compiled it for, either in the current directory, or the system path.
Bear in mind, earlier CUDA versions also had specific compiler they were supported under. So, for example, if you compiled the CUDA 3.0 code with Visual Studio 2008, there’s 2 different things that changed… the C compiler AND the CUDA toolkit… there might or might not be a way of making older CUDA versions work with newer compilers and vice-versa… so keep that in mind.
Regarding the last bit, if compiling with Visual Studio, and your code uses double precision, you need to pass something like -arch=sm_13 to the nvcc compiler. See for example:
If it’s not a double precision issue, you’ll have to proceed with a known input/output and trace the calls through the program to see what changed like I mentioned earlier.
Lastly, it might or might not be possible to compile the new code under CUDA 5.5 with the older 1.3 Thrust version… assuming something that changed in Thrust is the issue… I would try that last before you attempt to debug as above, just because it would seem unlikely that the API would change without getting warnings or errors at compile time.