What's the last version of the CUDA Toolkit to support 32-bit applications?

It is my understanding that Nvidia dropped support for 32-bit applications some time ago. However, there is a lot of conflicting information on when this happened. For example:

So which is the case?

As I recall 32-bit support was removed in stages, so the answer is likely “all of the above”. I cannot lay out the details of this staged removal; did you try working backwards through release notes?

Why is the exact timeline important? What exactly are you trying to find out?

Thanks for the response.

An open-source project I’m working on has makefiles for both 32 and 64 bits, but the 32-bit makefile obviously doesn’t work due to 32-bit support being dropped. I want to update the documentation to tell users which CUDA Toolkit version to install should they somehow decide to build the 32-bit app.

It’s probably not a bad idea to also drop 32-bit support in our project because I don’t know anyone who still has a 32-bit OS. But I digress.

On godbolt what I observe is that if I compile a trivial code with -m32 compiler switch to nvcc, that on CUDA 11.8 I get a warning message like this:

nvcc warning : Compiling in the 32-bit mode is deprecated and may not be supported in future releases

when I compile the same code on CUDA 12.0 I get a message:

nvcc warning : Compiling in the 32-bit mode is unsupported, relevant compiler option will be removed in an upcoming release

and on CUDA 12.2:

nvcc fatal : Unknown option ‘-m32’

which seems to be roughly consistent with your nvidia custhelp link.

Even if the nvcc compiler-driver supports -m32 switch, there will be other necessities to compile a 32-bit code, including host compiler support, host standard library support, and CUDA library support. Many of these depend on what you actually install and are outside of NVIDIA control, from a CUDA toolkit perspective.

The support for 32-bit development was removed gradually. If I were working on a 32-bit code, I would probably try to install an environment (OS, host compiler, CUDA toolkit version) that would be consistent with probably something like CUDA 8.x or earlier, and fully 32-bit. See here.

Note that in the past (and still, based on what I see in that custhelp link), NVIDIA also delineated a distinction between “development” support and runtime support. Development support would require the things I mentioned above. Runtime support would require host OS support, an appropriately compiled application, and provision of appropriate 32-bit libraries, for host as well as CUDA.

We can also observe another distinction of support for 32-bit applications and support for 32-bit OS. I believe the support fore 32-bit OS was dropped even earlier. 32-bit OS support was dropped after CUDA toolkit 6.5 from what I can see here.

I wouldn’t be able to give a recipe for how to compile (or run) a 32-bit application in any modern setting (it may be possible; I don’t know.) If I were trying to do that, as I mentioned, I would probably try to “resurrect” an “ancient” setup.

Thanks for the detailed response. It’s exactly what I was looking for.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.