nvcc is retarded when it comes to the x86_64 cl.exe. You have to give it the location to the 32-bit cl.exe with the -ccbin argument from which it somehow figures out where the x86_64 cl.exe is.
I’ve been asking for this to be fixed since CUDA 2.0 beta so long ago. tmurray at NVIDIA listens, but apperently nobody who works on that part of the compiler does (or just doesn’t have time to fix it).
nvcc is retarded when it comes to the x86_64 cl.exe. You have to give it the location to the 32-bit cl.exe with the -ccbin argument from which it somehow figures out where the x86_64 cl.exe is.
I’ve been asking for this to be fixed since CUDA 2.0 beta so long ago. tmurray at NVIDIA listens, but apperently nobody who works on that part of the compiler does (or just doesn’t have time to fix it).
Well, I installed CUDA 2.0 x64 - the same error but MSVC 7.1 and 8.0 mentioned instead of 8.0 and 9.0
After that I changed target platform to Win32 (!) and NVCC started to work!
It compiled all .cu files to .obj.
BUT now all other part of project was compiled by 32-bit cl.exe of course.
So I got
fatal error LNK1112: module machine type ‘x64’ conflicts with target machine type ‘X86’
on link stage.
But now I perhaps can store these x64 objs and link re-compiled with x64 cl.exe rest of project to these x64 object files. Maybe it will work even, but it’s WEIRD way to do x64 builds anyway! External Image
Any comments from nvcc devs on this topic?