Skip to main content

CUDA开发环境搭建

本文将帮助您在Windows、Linux平台上搭建完整的CUDA开发环境。

【特别说明】:自2019年以后,NVIDIA停止了对macOS平台的CUDA支持,因此macOS部分仅适用于较老的系统版本。本文将不提供macOS平台的搭建指南。

1. 系统要求

1.1. 硬件要求

  • NVIDIA GPU(必须是NVIDIA的GPU,且需要是支持CUDA的GPU,特别早期的英伟达GPU可能不适用)。
  • 足够的系统内存(建议至少8GB)
  • 足够的磁盘空间(CUDA Toolkit需要约4-8GB)

1.2. 软件要求

  • 支持的操作系统:
    • Windows 10/11
    • Linux(Ubuntu, CentOS, RHEL等)
    • macOS 10.13/10.14(仅支持CUDA 10.2及更早版本)
  • NVIDIA显卡驱动程序

2. Windows平台安装

2.1. 步骤1:检查兼容性

方法一: 直接查官网(权威)

  1. 确认您的NVIDIA GPU支持CUDA
  2. 打开设备管理器 → 显示适配器,查看您的GPU型号。或者打开NVIDIA控制面板查看CPU的型号。
  3. 访问NVIDIA CUDA GPU支持列表确认兼容性

方法二: 命令行查看(需要先安装显卡驱动)

  1. 安装Nvidia显卡驱动。
  2. 命令提示符(CMD)或 PowerShell,输入nvidia-smi命令并回车。
  3. 如果您的显卡支持CUDA,通常在右上角会直接显示CUDA Version: 13.0。否则则说明支持CUDA。

2.2. 步骤2:安装Visual Studio

  1. 官网(https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html)查看需要依赖的Visual Studio的版本。
  2. 下载并安装对应版本的Visual Studio Community Edition
  3. 安装时选择"C++桌面开发"工作负载。

2.3. 步骤3:安装CUDA Toolkit

  1. 访问NVIDIA CUDA下载页面
  2. 选择操作系统、架构和版本
  3. 下载本地安装程序(推荐)或网络安装程序 注意: Version这一栏指的是操作系统的版本,不是CUDA Toolkit的版本,如上图的10/11指的是Windows10/Windows11。
  4. 点击下载的安装程序(如cuda_13.0.0_windows.exe)开始安装(建议以管理员的身份运行),之后安装器会进入解压缩的过程。
  5. 如果需要自定义安装路径,选择"自定义"安装,然后再选择安装路径。 安装过程可能需要几分钟时间,请耐心等待。

2.4. 步骤4:验证安装

  1. 打开命令提示符

  2. 运行以下命令检查NVCC版本(NVCC是编译CUDA代码的编译器):

    nvcc --version

3. Linux(Ubuntu)平台安装

3.1. 步骤1:检查兼容性

  1. 打开终端,运行以下命令确认GPU型号:

    lspci | grep -i nvidia

    说明: 如果是WSL子系统,可能无法查看到对应的GPU型号,可以直接在Windows系统下查看。因为WSL并非完整的 Linux 发行版,其硬件访问方式也与传统 Linux 不同。WSL下的CUDA工作依赖于Windows主机侧的驱动。

  2. 运行以下命令检查当前安装的驱动程序:

    nvidia-smi

3.2. 步骤2:安装依赖项

对于Ubuntu/Debian系统:

# 更新系统软件包
sudo apt update
sudo apt upgrade

# 安装编译所需的基础工具包
sudo apt install build-essential

3.3. 步骤3:安装CUDA Toolkit

  1. 访问NVIDIA CUDA下载页面

  2. 选择操作系统、架构和版本

  3. 下载本地安装程序(推荐)或网络安装程序

  4. 按照网站提供的指令安装

    wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
    sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
    wget https://developer.download.nvidia.com/compute/cuda/13.0.0/local_installers/cuda-repo-wsl-ubuntu-13-0-local_13.0.0-1_amd64.deb
    sudo dpkg -i cuda-repo-wsl-ubuntu-13-0-local_13.0.0-1_amd64.deb
    sudo cp /var/cuda-repo-wsl-ubuntu-13-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
    sudo apt-get update
    sudo apt-get -y install cuda-toolkit-13-0

3.4. 步骤4:设置环境变量

  1. 编辑~/.bashrc文件:

    vim ~/.bashrc
    # 或
    vim ~/.zshrc
  2. 添加以下行:

    export PATH=/usr/local/cuda/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PAT
  3. 使更改生效:

    source ~/.bashrc

    source ~/.zshrc

3.5. 步骤5:验证安装

检查NVCC版本:

nvcc --version

4. 测试CUDA安装

创建一个简单的测试程序验证安装:

4.1. 创建测试文件(hello.cu)

#include <stdio.h>

__global__ void helloFromGPU()
{
printf("Hello World from GPU!\n");
}

int main()
{
printf("Hello World from CPU!\n");
helloFromGPU<<<1, 2>>>();
cudaDeviceSynchronize();
return 0;
}

4.2. 编译和运行

nvcc hello.cu -o hello
./hello

预期输出:

Hello World from CPU!
Hello World from GPU!
Hello World from GPU

说明: 如果编译时出现Cannot find compiler 'cl.exe' in PATH报错,则需要将cl.exe所在的路径配置到path环境变量,参见:5.1.2小节。

5. 故障排除

5.1. 常见问题

5.1.1. nvcc not found

  • 检查环境变量设置
  • 验证CUDA安装路径

5.1.2. Cannot find compiler 'cl.exe' in PATH

问题原因:

在Windows平台上,NVCC只负责编译设备代码(GPU部分),而主机代码(CPU部分)需要调用Visual Studio的C++编译器(cl.exe)来编译。如果系统PATH中没有正确设置Visual Studio的编译器路径,就会出现这个错误。

解决办法:

  1. 找到Visual Studio安装路径,如:C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64,如果安装时有自定义过路径,则找到自己安装目录的对应路径。
  2. 设置PATH环境变量,右键点击"此电脑" → "属性" → "高级系统设置"。
  3. "环境变量" → 在"系统变量"中找到"Path"
  4. 双击Path项,添加Visual Studio的编译器路径。
  5. 保存配置,重新打开命令行窗口,再次验证。

5.1.3. 'cudafe++' died with status 0xC0000005 (ACCESS_VIOLATION)

问题原因:

通常表示内存访问冲突,是NVCC编译器前端cudafe++在处理代码时出现了问题。可能是CUDA版本与Visual Studio版本不匹配。

解决办法:

  1. 查看CUDA和Visual Studio兼容性,可以在官网查看对应版本CUDA需要的Visual Studio版本要求(https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html)。并安装响应版本的Visual Studio。

  2. 检查path环境变量中cl.exe的路径是否设置正确,如cl.exe有多个不同的版本,如下:

    bin
    Hostx64 # 主机是64位的编译器
    x64 # 编译的目标文件是64位程序
    x86 # 编译的目标文件是32位程序
    Hostx86 # 主机是32位的编译器
    x64 # 编译的目标文件是64位程序
    x86 # 编译的目标文件是32位程序
  3. 如果设置错误,修改path环境变量,选择XXX\bin\Hostx64\x64所在目录。

5.1.4. 运行时错误

  • 确认NVIDIA驱动程序是最新版本
  • 检查GPU计算兼容性

6. 参考文档