32 and 64 bit runtime runtime filenames conflicting?


I was wondering why nVidia chose the same name (cudart.dll) for both the 32 bit and 64 bit CUDA runtime. Wouldn’t it be preferrable to have different names there to allow both 32 bit and 64 bit binaries to look for the appropriate versions of the runtime DLL?

Maybe my understanding of the DLL loaded in Windows is flawed, but my assumption is that for example if I have installed the 64 bit CUDA toolkit, any 32 bit app looking for cudart.dll will find the 64 bit version only and fail to start - unless the application developer ships the appropriate cuda runtime as part of the program, e.g. in the application folder.

Using names like cudart32.dll and cudart64.dll might have worked around this issue, right?


I am keenly aware of the problem and wish there was a better solution than redistributing cudart.dll, but there isn’t at the moment. But then again, keep in mind that cudart.dll is only included with the CUDA toolkit, not with the standard display driver (while the CUDA driver API libraries are). As a result, yeah, you’re going to have to redistribute cudart if you want regular users to be able to run your app without installing the toolkit.

(it’s still crappy for moving between development systems, so I feel your pain)