Librería catmu falla con la nueva versión de CUDA/Nvidia drivers de Google Colab

Tal como se describe aquí, Google Colab actualizó la versión del driver de Nvidia a 550.54.15 y la versión de CUDA a 12.5. Sin embargo, ese driver no soporta esa versión de CUDA, tal como se indica en la documentación del driver.

Temporalmente se dispone una solución alternativa que consiste en configurar Google Colab para utilizar una versión de resguardo del entorno de ejecución (Fallback runtime version) que utiliza las versiones de las librerías previas a esta actualización. De acuerdo a lo que se indica en el primer link, esta opción estará disponible hasta mediados de febrero.

Para habilitar el entorno de resguardo utilizaremos la paleta de comandos que se abre con el atajo Ctrl + Shift + P y ejecutaremos los siguientes comandos:

  1. Conectar a un entorno de ejecución (Connect to a runtime).
  2. Por defecto debería conectarse a un entorno con GPU. En caso contrario, ejecutaremos el comando Cambiar entorno de ejecución (Change runtime type).
  3. Usar versión de resguardo del entorno de ejecución (Use fallback runtime version).

El notebook test_cuda_bug.ipynb fue creado para reproducir el error. A continuación se explica el contenido de ese notebook.

Desde un notebook de Colab se puede revisar la versión del driver y de CUDA que está instalada en el entorno al que estamos conectados ejecutando una celda con el siguiente contenido:

!nvidia-smi
!nvcc --version

nvidia-smi muestra el driver actual instralado y la máxima versión de CUDA soportada. nvcc --version muestra la versión de CUDA que en realidad está instalada.

Antes de la actualización, estos comandos devolvían:

Fri Feb  7 22:32:13 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| 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  Tesla T4                       Off |   00000000:00:04.0 Off |                    0 |
| N/A   52C    P0             28W /   70W |     120MiB /  15360MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+


nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Aug_15_22:02:13_PDT_2023
Cuda compilation tools, release 12.2, V12.2.140
Build cuda_12.2.r12.2/compiler.33191640_0

Después de la actualización, devuelve:

Fri Feb  7 23:24:31 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| 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  Tesla T4                       Off |   00000000:00:04.0 Off |                    0 |
| N/A   54C    P8             10W /   70W |       0MiB /  15360MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Jun__6_02:18:23_PDT_2024
Cuda compilation tools, release 12.5, V12.5.82
Build cuda_12.5.r12.5/compiler.34385749_0

Al pedir una convolución, la función de la librería compartida que computa la convolución devuelve

ERROR : exprConvolution2D(177) : CODE 222 -> the provided PTX was compiled with an unsupported toolchain.

indicando un mismatch entre el driver instalado y la versión de CUDA.