Wsl2 +Ubuntu 24.04: GPU/CUDA not working

I can’t get tensorflow to work with gpu/cuda in wsl2 + Ubuntu 24.04.

If I run this command

python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))" 

I get this reply:
(I don’t understand the response. What could I do to solve it ?)

(eksTF) eigil@UbuntuDvl:~$ python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))" 2024-06-15 06a:16:51.909416: I external/local_tsl/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used. 2024-06-15 06:16:51.913028: I external/local_tsl/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used. 2024-06-15 06:16:51.959422: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. 2024-06-15 06:16:52.901976: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT 2024-06-15 06:16:53.818966: I external/local_xla/xla/stream_executor/cuda/cuda_executor.cc:984] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node Your kernel may have been built without NUMA support. 2024-06-15 06:16:54.119834: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2251] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform. Skipping registering GPU devices... [] 
nvidia-smi         Sat Jun 15 06:22:59 2024        +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 555.52.01              Driver Version: 555.99         CUDA Version: 12.5     | |-----------------------------------------+------------------------+----------------------+ | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC | | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. | |                                         |                        |               MIG M. | |=========================================+========================+======================| |   0  NVIDIA GeForce GTX 960         On  |   00000000:01:00.0  On |                  N/A | | 30%   34C    P8             15W /  120W |     621MiB /   2048MiB |      8%      Default | |                                         |                        |                  N/A | +-----------------------------------------+------------------------+----------------------+                                                                                           +-----------------------------------------------------------------------------------------+ | Processes:                                                                              | |  GPU   GI   CI        PID   Type   Process name                              GPU Memory | |        ID   ID                                                               Usage      | |=========================================================================================| |    0   N/A  N/A       444      G   /Xwayland                                   N/A      | |    0   N/A  N/A      1360      G   /xfce4-session                              N/A      | |    0   N/A  N/A      3976      G   /msedge                                     N/A      | +-----------------------------------------------------------------------------------------+  
nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Wed_Sep_21_10:33:58_PDT_2022 Cuda compilation tools, release 11.8, V11.8.89 Build cuda_11.8.r11.8/compiler.31833905_0  

tensorflow version

python Python 3.10.14 (main, May  6 2024, 19:42:50) [GCC 11.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf; print(tf.__version__) 2024-06-15 06:26:32.824657: I external/local_tsl/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used. 2024-06-15 06:26:32.828052: I external/local_tsl/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used. 2024-06-15 06:26:32.872881: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. 2024-06-15 06:26:33.645571: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT 2.16.1 

Ubuntu version

lsb_release -av No LSB modules are available. Distributor ID:	Ubuntu Description:	Ubuntu 24.04 LTS Release:	24.04 Codename:	noble 
wsl --version WSL version: 2.1.5.0 Kernel version: 5.15.146.1-2 WSLg version: 1.0.60 MSRDC version: 1.2.5105 Direct3D version: 1.611.1-81528511 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22631.3807 

Welcome @ekrogh to the TensorFlow Forum

You can try the following in WSL2:

  1. Create a fresh conda virtual environment and activate it,
  2. pip install --upgrade pip,
  3. pip install tensorflow[and-cuda],
  4. Set environment variables:

Locate the directory for the conda environment in your terminal window by running in the terminal:

echo $CONDA_PREFIX

Enter that directory and create these subdirectories and files:

cd $CONDA_PREFIX mkdir -p ./etc/conda/activate.d mkdir -p ./etc/conda/deactivate.d touch ./etc/conda/activate.d/env_vars.sh touch ./etc/conda/deactivate.d/env_vars.sh 

Edit ./etc/conda/activate.d/env_vars.sh as follows:

#!/bin/sh  # Store original LD_LIBRARY_PATH  export ORIGINAL_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"   # Get the CUDNN directory  CUDNN_DIR=$(dirname $(dirname $(python -c "import nvidia.cudnn; print(nvidia.cudnn.__file__)")))  # Set LD_LIBRARY_PATH to include CUDNN directory export LD_LIBRARY_PATH=$(find ${CUDNN_DIR}/*/lib/ -type d -printf "%p:")${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}  # Get the ptxas directory   PTXAS_DIR=$(dirname $(dirname $(python -c "import nvidia.cuda_nvcc; print(nvidia.cuda_nvcc.__file__)")))  # Set PATH to include the directory containing ptxas export PATH=$(find ${PTXAS_DIR}/*/bin/ -type d -printf "%p:")${PATH:+:${PATH}} 

Edit ./etc/conda/deactivate.d/env_vars.sh as follows:

#!/bin/sh  # Restore original LD_LIBRARY_PATH export LD_LIBRARY_PATH="${ORIGINAL_LD_LIBRARY_PATH}"  # Unset environment variables unset CUDNN_DIR unset PTXAS_DIR 
  1. Verify the GPU setup:
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))" 

I have submitted the pull request to update the official TensorFlow installation guide.

I hope it helps!

1 Like

CUDA + tensoflow is working now.

1 Like