CUDA.jl only supports NVIDIA drivers for CUDA >= 10.1

I am not sure if this is a Julia language problem or a Manjaro problem, possibly a combination of both as the problem seems to have appeared after recent updates in Manjaro and Julia.

When I run using Flux in the Julia environment I get the following warning and error:

┌ Warning: This version of CUDA.jl only supports NVIDIA drivers for CUDA 10.1 or higher (yours is for CUDA 9.1.0)
└ @ CUDA ~/.julia/packages/CUDA/0p5fn/src/initialization.jl:111
ERROR: InitError: Could not find a suitable CUDA installation

The first part of the part of the problem may be due to an update in CUDA.jl now requiring NVIDIA drivers >= CUDA 10.1.

However the second part of the problem, implying I have NVIDIA drivers for CUDA 9.1.0, seems to be an issue with my Manjaro system, could this be because I have an older NVIDIA graphics card requiring the NVIDIA 390 series drivers?

Can anyone enlighten me and suggest some fixes or further investigation (that don’t require a new graphics card!) ?

Is your card not supported in cuda >= 10.1 ?

Thanks for replying, but I have no idea, how can I find out?
screenfetch reports my card as being GPU: GeForce GT 610.

I would just use Flux without CUDA, I can’t see that graphic card giving you any help at this point in time. You can’t realistically expect any GPU acceleration from a card that is 8 years old? (quick lookup on wikipedia)

You will have to use newer drivers, CUDA version is dependent on Nvidia Driver.
You can check the supported version of CUDA for your driver using command nvidia-smi.

For CUDA 10.1 you need at least Nvidia 418.39.

Based on info available on Nvidia website 390 is the latest driver for GT 610.

Table 2. CUDA Toolkit and Compatible Driver Versions CUDA Toolkit Linux x86_64 Driver Version Windows x86_64 Driver Version
CUDA 11.1.1 Update 1 >=455.32 >=456.81
CUDA 11.1 GA >=455.23 >=456.38
CUDA 11.0.3 Update 1 >= 450.51.06 >= 451.82
CUDA 11.0.2 GA >= 450.51.05 >= 451.48
CUDA 11.0.1 RC >= 450.36.06 >= 451.22
CUDA 10.2.89 >= 440.33 >= 441.22
CUDA 10.1 (10.1.105 general release, and updates) >= 418.39 >= 418.96
CUDA 10.0.130 >= 410.48 >= 411.31
CUDA 9.2 (9.2.148 Update 1) >= 396.37 >= 398.26
CUDA 9.2 (9.2.88) >= 396.26 >= 397.44
CUDA 9.1 (9.1.85) >= 390.46 >= 391.29
CUDA 9.0 (9.0.76) >= 384.81 >= 385.54
CUDA 8.0 (8.0.61 GA2) >= 375.26 >= 376.51
CUDA 8.0 (8.0.44) >= 367.48 >= 369.30
CUDA 7.5 (7.5.16) >= 352.31 >= 353.66
CUDA 7.0 (7.0.28) >= 346.46 >= 347.62

Check this link, if required check on julia forums.

I posted this problem to the Julia forum also and had this response:

Flux depends on CUDA.jl by default for GPU acceleration, so using Flux will always try to find and load GPU-related functionality. On a machine without nvidia drivers installed (e.g. your netbook), this will fail gracefully and not attempt to run any more CUDA-specific code. Think of it as the “CPU-only” mode.

When your machine does have nvidia drivers installed (presumably because there’s an nvidia GPU attached to it), CUDA.jl will try to download and run an appropriate SDK based on your current driver version.

My graphics card (GPU), NVIDIA GF119 [GeForce GT 610], is too old to support more recent NVIDIA drivers so I have uninstalled the 390 driver and swithed to using Nouveau for now, that has enabled using Flux to run without error.

However for when using the NVIDIA drivers they also suggested to try:

setting the environment variable CUDA_VISIBLE_DEVICES=""

If and when NVIDIA 390 driver support arrives for the 5.9 kernel I may revert to the NVIDIA driver and test that option.

Now I’m curious… Have you measured your speed increases using GPU for DNN training? I’m curious how much you gain with such an older GPU. I am assuming you have a modern CPU.

Using Flux it’s simple to bypass CUDA, in fact, last time I used it, you had to move the code to the GPU explicitly to use the GPUs.

I am a beginner with Flux, I am just writing my first program that uses it, so I am nowhere near measuring speeds, I will just be happy to get my code working at this stage.

Nope, my other post in the Julia forum thread was:

My whole desktop system is old, circa 2008, the latest Raspberry Pi may give me similar or better performance! So I am acutely aware I need new or more recent hardware, which is another way to fix the Flux problem, but that will have to wait until next year.

1 Like

In follow up to this problem; I have now reverted to using the NVIDIA drivers, for smooth graphics and video. However I needed to learn a little more about shell and environment variables to fix the reported problem and discovered I needed to enter:

export CUDA_VISIBLE_DEVICES=""

for this to be an environment variable, without export it is a shell variable. This masks|hides the GPU. In the Julia environment, using Flux now runs without warnings or errors.