boinc icon indicating copy to clipboard operation
boinc copied to clipboard

Nvidia RTX 50 series removes 32-bit CUDA and 32-bit OpenCL support

Open Ageless93 opened this issue 9 months ago • 7 comments

Describe the bug

As per https://boinc.berkeley.edu/forum_thread.php?id=15450

According to https://www.notebookcheck.net/Strange-GeForce-RTX-50-series-benchmark-issues-solved-but-new-problem-for-gamers-arises.967614.0.html , Nvidia RTX 50 series GPUs remove support for 32-bit CUDA and 32-bit OpenCL. It is possible that both BOINC server software and BOINC client software need to be made aware of this lack of 32-bit CUDA support and 32-bit OpenCL support so that 32-bit CUDA tasks and 32-bit OpenCL tasks are not sent to clients with GPUs that cannot handle them.

I am making this thread after making a thread about BOINC clients because I realized that BOINC server software and not just BOINC client software probably need to be modified to take into account the breaking changes that removing 32-bit CUDA and 32-bit OpenCL support are.

Steps to reproduce

No response

Expected behavior

No response

Screenshots

No response

System information

No response

Additional context

No response

Ageless93 avatar Feb 27 '25 08:02 Ageless93

The client detects GPUs using CUDA and OpenCL, so if these are missing it won't detect them.

davidpanderson avatar Feb 27 '25 09:02 davidpanderson

@davidpanderson, I believe here is the concern that the user might have CUDA/OpenCL x64 drivers installed, bit receive from the server 32-bit application for CUDA that will fail because there is no support of 32-bit applications by the CUDA driver anymore.

It need to be investigated if we can easily detect the presence of x86 and/or x64 CUDA/OpenCL drivers and report this to the server.

AenBleidd avatar Feb 27 '25 10:02 AenBleidd

@davidpanderson, I believe here is the concern that the user might have CUDA/OpenCL x64 drivers installed, bit receive from the server 32-bit application for CUDA that will fail because there is no support of 32-bit applications by the CUDA driver anymore.

Yes, that's what I understood as well. It's not about the drivers being 32bit or 64bit, just about the project science applications being sent to the GPU being 32bit, which is being deprecated.

Ageless93 avatar Feb 27 '25 11:02 Ageless93

I would recommend that projects build a 64-bit version, split their plan_classes between 64-bit and 32-bit, and only send 32-bit versions to hosts running a 32-bit operating system. Even without a OS bitness dependence, the app_version optimizing mechanism is pretty good at not sending app versions that fail (if the server thinks it could run more than one app version). At least it was when @.*** was operating.

Those capabilities already exist in BOINC. Beyond notifying the projects, I'm not sure what kind of change to the server or client would be necessary.

On Thu, Feb 27, 2025 at 3:02 AM Jord van der Elst @.***> wrote:

@davidpanderson https://github.com/davidpanderson, I believe here is the concern that the user might have CUDA/OpenCL x64 drivers installed, bit receive from the server 32-bit application for CUDA that will fail because there is no support of 32-bit applications by the CUDA driver anymore.

Yes, that's what I understood as well. It's not about the drivers being 32bit or 64bit, just about the project science applications being sent to the GPU being 32bit, which is being deprecated.

— Reply to this email directly, view it on GitHub https://github.com/BOINC/boinc/issues/6125#issuecomment-2687616297, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACS5ZMQJGRO7A4RODJGSAF32R3WE5AVCNFSM6AAAAABX7HA44WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOBXGYYTMMRZG4 . You are receiving this because you are subscribed to this thread.Message ID: @.***> [image: Ageless93]Ageless93 left a comment (BOINC/boinc#6125) https://github.com/BOINC/boinc/issues/6125#issuecomment-2687616297

@davidpanderson https://github.com/davidpanderson, I believe here is the concern that the user might have CUDA/OpenCL x64 drivers installed, bit receive from the server 32-bit application for CUDA that will fail because there is no support of 32-bit applications by the CUDA driver anymore.

Yes, that's what I understood as well. It's not about the drivers being 32bit or 64bit, just about the project science applications being sent to the GPU being 32bit, which is being deprecated.

— Reply to this email directly, view it on GitHub https://github.com/BOINC/boinc/issues/6125#issuecomment-2687616297, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACS5ZMQJGRO7A4RODJGSAF32R3WE5AVCNFSM6AAAAABX7HA44WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOBXGYYTMMRZG4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>

SETIguy avatar Feb 27 '25 18:02 SETIguy

I am the one who created the initial BOINC forum posts about this issue. I had to ask someone else to create this issue in Github because I did not know how to properly classify and prioritize this issue.

Most CUDA-capable Nvidia GPUs with the known exception of Blackwell/RTX 50 series are capable of running 32-bit CUDA and 32-bit OpenCL code in 64-bit OSes, so sending 32-bit CUDA and 32-bit OpenCL tasks to 64-bit hosts with those GPUs should be fine for those GPUs. Nvidia has stated that older GPUs will still be able to run 32-bit CUDA in 64-bit environments as seen in https://nvidia.custhelp.com/app/answers/detail/a_id/5615/~/support-plan-for-32-bit-cuda . That document leaves out older GPUs that Nvidia has dropped support for such as GPUs based on the Tesla, Fermi, and Kepler microarchitectures that support 32-bit CUDA within 64-bit OSes.

However, neither Blackwell nor Hopper support 32-bit CUDA nor 32-bit OpenCL. I found that Hopper cannot run 32-bit CUDA according to https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/ .

I can think of several solutions for this problem.

One solution is to refuse to send 32-bit Nvidia tasks to all 64-bit clients. That would quickly cut a huge chunk of older 64-bit Nvidia users' compute ability from projects that do not have 64-bit Nvidia applications.

Another solution is to create a whitelist of 32-bit compatible Nvidia GPUs or microarchitectures. This would allow 32-bit Nvidia tasks to be sent to 64-bit clients with old enough Nvidia GPUs to run 32-bit GPGPU tasks. This solution would not be good if Nvidia reverses course and restores 32-bit CUDA support to current or future Nvidia GPUs because the whitelist would need to be expanded before 32-bit tasks could be sent to the newer GPUs, but this problem would not cause computation errors for the GPUs with restored 32-bit capabilities.

Another solution is to create a blacklist of 32-bit GPGPU incompatible Nvidia GPUs or microarchitectures. This would also allow 32-bit Nvidia tasks to be sent to 64-bit clients with old enough Nvidia GPUs. However, updating the blacklist would be a problem if Nvidia keeps releasing newer GPUs or microarchitectures that cannot run 32-bit GPGPU tasks and cause computation errors due to task crashes or failures to run when these GPUs enter the market until the blacklist is updated to exclude these GPUs.

EDIT: Remove a statement about a fact that I had not yet found that became contradictory and false when I found the missing fact and put the missing fact into this post while initially composing it.

jnv11 avatar Feb 28 '25 05:02 jnv11

As Eric points out: if projects make both 32- and 64-bit versions, the server will learn which ones work on which machines (and if both work, which one is faster).

davidpanderson avatar Feb 28 '25 05:02 davidpanderson

what projects(s) does this issue impact? which project(s) have only a 32-bit app for Nvidia? this may be a non-issue

IanSteveC avatar Mar 03 '25 13:03 IanSteveC