CUDA 9.0 nvcc does not support compiling CUDA code inside 32 bit projects on Visual Studio 2015

I have updated to CUDA 9.0 from CUDA 8.0 and I am getting the following compilation error when building 32 bit applications.

nvcc fatal : 32 bit compilation is only supported for Microsoft Visual Studio 2013 and earlier

I didn’t have any issue in earlier releases of CUDA, even when I use Visual Studio 2015.

Am I missing something? I have checked the CUDA 9.0 release notes and I haven’t seen any mention to dropping 32 bit compilation support.

By the way, I am working on a 64 bit Windows 7 system.

1 Like

32-bit support is gradually being deprecated/removed from CUDA. If you study the release notes of the last several versions of CUDA, you can find evidence of this. Moving forward, I think it would be unwise to expect support for 32-bit development anywhere in the CUDA ecosystem, and you should probably think carefully about this for a maintenance strategy for old codes as well as a development strategy for new codes.

From the release notes, I was under the impression that CUDA 9 eliminated essentially all remaining vestiges of 32-bit support. If it hasn’t been removed completely, I would expect this to happen shortly.

As txbob points out, support for 32-bit platforms and applications has been gradually reduced with every CUDA release over the past four years years, starting with version 7, if I recall correctly. These changes haven been noted in the corresponding release notes.

Many thanks for your comments.

I agree that supporting 32 bit CUDA builds seems to be an unwise decision, and I will have to drop 32 bit support in the near future.

Nevertheless, looking at the installation guide of CUDA 9.0 I see the following:

“Native development using the CUDA Toolkit on x86_32 is unsupported. Deployment and execution of CUDA applications on x86_32 is still supported, but is limited to use with GeForce GPUs. To create 32-bit CUDA applications, use the cross-development capabilities of the CUDA Toolkit on x86_64.”

which made me think that it was still possible to build 32 bit CUDA applications using the cross-development capabilities…
Therefore what I did is compile the CUDA code with the nvcc compiler using the --machine 32 option, which I assumed would target 32 bit architectures, but I got the error described in my first comment.

That is all correct. If you look at the release notes, you’ll see that lately, compilation support for --machine 32 on linux has been completely dropped. In the case of windows, the error message you got from nvcc seems fairly explicit. My suggestion would be to try switching to VS2013 if you must do this.

And I acknowledge that I don’t find in the release notes for CUDA 9, 8, or 7.5 any statement that says 32-bit compilation support on VS2015 is going to be dropped. Nevertheless, the error message from nvcc seems fairly explicit. I think the lack of mention in the release notes may be an oversight. Nevertheless, it is what it is at the moment. And, again, the error message seems fairly explicit.

If I had to guess, it was probably an oversight that VS2015 actually worked for the creation of 32-bit CUDA apps at all :-) NVIDIA often uses a strategy of freezing support for older platforms, and then letting that age out.

Unfortunately it seems that a lot of users of the code I am working on are still using 32 bit systems…therefore I will have to roll back the CUDA upgrade if I do not find a solution to build 32 bit CUDA on VS 2015 with CUDA 9.0.

Actually, unless someone specifically needs one of the new features of CUDA 9, I perceive little advantage to upgrade from CUDA 8 to CUDA 9. CUDA 8 seems to have a low bug rate and supports everything up to the latest shipping Pascal-family hardware.

I am wondering where exactly there are still significant pockets of people using 32-bit Windows at this time. The general combined market share of all 32-bit versions of Windows has fallen below 3% or so last I checked. Any insights appreciated.

The branch of engineering I work on is, let’s say, a very late adopter industry. Many corporate environments still use 32 bit systems.

So now I get to make wild speculations as to which industry :-) In any event, you have my sympathies.

64-bit microprocessors first appeared in 1991, 64-bit x86 processors came about in 2003. I would say it’s high time that industry gets with the program … Even my web browser (Firefox) turned 64-bit recently!