Hello team, I’m trying to run mojo on gpu and I get this puzzling error:
E Exception: At oss/modular/mojo/stdlib/std/gpu/host/device_context.mojo:3316:17: MAX doesn’t support your current NVIDIA GPU driver. MAX requires a minimum driver version of 580 and CUDA version 13.0. Your driver version is 570.211.01
So my first question is that here, I use only Mojo (I enqueue kernels directly), not Max, so why MAX is complaining? even the stacktrace shows the error comes from the mojo stdlib, not MAX.
Second question is, what are the solutions? We work with two datacenters given by two different providers and we have this error on both. Upgrading the driver is not trivial for them. If there is another solution than upgrading the driver, maybe it could be included in the error message?
Third question is, is Modular going to be very aggressive with the requirements going forward? the driver 570.211.01 was released on the 01/13/2026, so 4 months old. It’s very recent. Asking for more recent than this means that Mojo will work out of the box on a very small number of setups, and the user experience will greatly suffer (as it’s the case for us). Is there anything Modular can do to relax those requirements?
Thanks! I’m eager to make mojo work on our datacenters!
This is a problem with the error message. It assumes that it is being used in the MAX context, but that is not a valid assumption, and it leads to this confusing error message. I’ll change the error message to be clearer here.
I think you are on the right track in your follow-up post.
I don’t know that we have a specific public strategy on this, but one of the reasons we went with the MODULAR_NVPTX_COMPILER_PATH option is to try to decouple the default NVIDIA driver version needs from what users may want to work with. That way Modular can update when necessary and hopefully avoid causing problems for use cases on older hardware.
Thanks @joshpeterson , after playing around with it, I managed to make it work. If I understand correctly it can be solved by installing a conda or a pip package + an environment variable. To increase the developer experience, this should be documented, either in the error message or in the docs (and the error message would redirect to the docs).
That is a great point! I’ll see if we can get this documented and have the error message point to that documentation. This is not immediately obvious, especially to someone new to Mojo.
Definitly. Another idea I have is that we could ship the ptxas of Mojo into its own wheel, e.g. “mojo-ptxas” and always pick up the ptxas of the wheel “mojo-ptxas” by default (we can leave the env variable as backup), then if we get an error from the driver, we can easily say “please set mojo-ptxas==xxx in your pyproject.toml”. Same thing for the conda package. What do you think?
This would make it easier for beginners than having to install an unrelated package + set an environment variable.
We discussed that option originally. I think the idea at the time was that we specifically wanted to support CUDA 13+, and allow lower versions to be used but not officially support them. I did propose having these be separate packages but that could have been seen as “supporting” multiple versions.
If the only “supported” driver version is one that’s only 6 months old, that’s pretty hardcore I must say from a user’s perspective. Also if we don’t “support” older version, does that mean that in the docs, we’ll say something like “you can use MODULAR_NVPTX_COMPILER_PATH but it’s half supported, try it, you never know, it might work by chance”?
Thanks @ahajha, I did not realize we had already considered that. So it may be an option in the future. At the moment though I think the environment variable fallback in the best option we can provide @gabrieldemarmiesse.
But let’s keep an eye on this as an area of improvement. @gabrieldemarmiesse do you mind opening a feature request issue? We could pair that up with the internal discussions we have had about this. Getting more data about use cases it always valuable.