依赖高版本CUDA的应用程序在低版本CUDA环境中运行时报错

对于Linux操作系统虚拟化型GPU实例,安装了GRID驱动和低版本的CUDA后,可能会因为CUDA版本受限于GPU的驱动版本,导致依赖高版本CUDA的应用程序在该低版本CUDA环境中运行时报错,本文介绍这种情况的解决方案。

问题现象

对于Linux操作系统虚拟化型GPU实例,安装了GRID驱动和低版本的CUDA(例如版本为11.4)后,运行依赖高版本CUDA的应用程序(本文以依赖CUDA 12.2版本的matrixMul应用程序为例)时报错,提示信息如下:

Dingtalk_20240627162412.jpg

问题原因

由于CUDA版本受限于GPU的驱动版本,对应关系请参见驱动版本与CUDA版本的对应表,从而导致依赖高版本CUDA(例如CUDA 12.2)的应用程序无法在低版本CUDA(例如CUDA 11.4)环境中运行。本文采用升级CUDA兼容工具包的方法来解决低版本CUDA环境能正常运行依赖高版本CUDA的应用程序。

解决方案

本方案以Ubuntu 20.04操作系统GPU实例为例。

  1. 远程连接Linux操作系统GPU实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例

  2. 执行以下命令,下载CUDA 12.2兼容工具包。

    本示例以下载Ubuntu 20.04系统X86_64架构的兼容工具包为例,您可以根据GPU实例的操作系统版本和架构从CUDA兼容包下载地址中选择匹配的兼容工具包下载即可。

    sudo wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64/cuda-compat-12-2_535.104.05-1_amd64.deb
  3. 执行以下命令,从指定.deb文件提取文件并解压缩到指定目录。

    重要

    本示例以解压到/home目录为例,请替换为您的实际目录路径。

    sudo dpkg  -x cuda-compat-12-2_535.104.05-1_amd64.deb /home
  4. 依次执行以下命令,配置高版本CUDA的环境变量。

    sudo echo "export LD_LIBRARY_PATH=/home/usr/local/cuda-12.2/compat:$LD_LIBRARY_PATH" >> ~/.bashrc
    source ~/.bashrc
  5. 执行应用程序验证运行是否正常。

    本示例以执行matrixMul应用程序为例,显示如下图所示,表示应用程序运行成功。

    Dingtalk_20240627165231111.jpg