0%

Visual Stdio 2022 调用CUDA11.6

步骤

  1. 安装N卡驱动,使用任何一个驱动管理程序即可。
  2. 使用nvidia-smi查看适配的CUDA版本,这里适配的是11.6版本。
1
2
3
4
5
6
7
8
9
10
11
12
Sat Jul  2 19:32:36 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 512.15 Driver Version: 512.15 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... WDDM | 00000000:01:00.0 Off | N/A |
| N/A 42C P0 N/A / N/A | 123MiB / 4096MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
  1. 前往官网进行往期CUDA版本下载 cuda-toolkit下载地址,点击DownloadNow,发现目前的版本为11.7,和我们需要的不适配,向下翻找,找到Archive of Previous CUDA Releases,下载我们需要的11.6版本。
  2. 下载对应系统的可执行文件执行,然后运行安装,选择最小化安装即可。该安装程序会自动配置环境变量及识别已经安装的Visual Stdio环境。
  3. 打开Visual Stdio进行开发,创建新项目,搜索模板CUDA发现出现了新的项目模板。使用该项目模板。
  4. 打开示例程序,发现运行不起来。我琢磨了好久,查了好多资料没有找到解决方案,始终无法编译出obj文件,最后只好设置ld.exe的位置到PATH全局变量,使用nvcc手动编译。
  5. 使用命令nvcc.exe -c .\kernel.cu -o .\x64\Debug\kernel.cu.obj进行编译,需要注意的是,此时编译出来的obj文件无法进行调试,需要加上参数-g 方能进行调试。
  6. 再使用调试器即可正常看到运行结果
  7. 使用nvidia-smi查看程序是否运行在显卡上,结果如下,该程序运行于显卡之上且可调试。
    1
    2
    3
    4
    5
    6
    7
    8
    +-----------------------------------------------------------------------------+
    | Processes: |
    | GPU GI CI PID Type Process name GPU Memory |
    | ID ID Usage |
    |=============================================================================|
    | 0 N/A N/A 19968 C+G ...ge\Application\msedge.exe N/A |
    | 0 N/A N/A 21008 C ...64\Debug\CudaRuntime1.exe N/A |
    +-----------------------------------------------------------------------------+
  8. 但是根据资料查到,原生调试时程序并不会运行于GPU而是CPU之上,需要借助插件才能实现GPU运行,但是我这里不需要使用插件即可运行于GPU之上,但是为了严谨,这里贴出插件的位置。位于工具栏->扩展->Nsight,需要打开Break On Launch才能进行调试。

参考资料

CUDA及cuDNN安装指南

CUDA和cuDNN对应版本

CUDA历史版本下载链接

cuDNN历史版本下载链接

CUDA开发环境搭建 - 知乎 (zhihu.com)

CUDA入门示例1:两个整型数组相加 - 知乎 (zhihu.com)

恰饭,恰饭