NVCC in CUDA 5.5 reports error in 32 bit: 'cicc' died with status 0xC0000135

Environment: Windows 7 x64, VS 2008 SP1, CUDA 5.5

  • it works NOT for 32 bit builds
  • it works with 64 bit builds
  • it works with CUDA 5.0 in both 32 and 64 bit
  • it works with -gencode=arch=compute_10,code=“sm_10,compute_10”
  • it works with -gencode=arch=compute_13,code=“sm_13,compute_13”
  • it works NOT with -gencode=arch=compute_20,code=“sm_20,compute_20”
  • it works NOT with -gencode=arch=compute_30,code=“sm_30,compute_30”
  • a switch to VS 2010 does not make a difference
  • all my cu files fail with the same error

In conclusion: compiling for 32 bit with the NVCC of cuda 5.5 does not work for architectures >= 2
Any ideas? Does anyone else have this problem?

Do the examples compile with the same settings? I just did a 32-bit compile w/ CUDA 5.5 under Win 8x64, but under VS 2012, and it worked fine compiling for SM 3.0. I’m assuming there’s something unique to your code that perhaps is causing the problem?

I don’t recall ever seeing this particular error status before. Is there any other error information displayed (such as missing header file, library, directory, etc)? Are you able to compile regular C programs into 32-bit executables? The fact that compilation fails for all .cu files makes me think the root cause could be a setup issue, rather than an issue (bug) inside the compiler. From what I know, different PATHs are used by MSVC for 64-bit and 32-bit components, have you checked that they are all switches properly?

The compiler cicc is used for compute capability 2.0 and higher, while the older 1.x platforms use the opencc compiler, which would explain the observation that things work fine with sm_1x.

I found my problem and it was indeed a setup issue:
nvvm64_20_0.dll was missing next to cicc.exe

I was not aware that with CUDA 5.5 (nearly) all build tools were 64 bit executables in the 64 bit package and 32 bit executables in the 32 bit package. In previous version, all executable were still 32 bit.

The only remaining question is: Why is there a nvvm32_20_0.dll AND a nvvm64_20_0.dll beside cicc.exe in the 64 bit package? Afaik these dll are not necessary for deployment, thus there is no reason to deliver a nvvm32_20_0.dll with a 64 bit executable of cicc.exe.

Thanks for your help!