VSCode CUDA C/C++ 远程开发环境配置

本文讨论配置VSCode CUDA C/C++的远程开发环境。官方的英文文档对于刚接触CUDA的新人十分劝退,网上没有找到很好的文档,在连续踩了好几天坑的情况下,决定自己写一篇文档记录一下踩坑过程(已经浪费很多时间了,就索性再花点时间记录)最终配置好的环境支持intellisense, 一键编译/调试

为什么选择在Linux开发CUDA?
https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index....
https://docs.nvidia.com/cuda/cuda-installation-guide-microsof...

  1. 一些调试工具/库,例如CUDA Nsight Eclipse Plugin,⭐CUDA GDB,CUDA cuDLA,仅支持linux
  2. NVCC 的说明文档中只明确提到支持MSVC(MinGW没有明确说不支持,我也没有尝试,有时间可以试一下),有尝试过安装MSBuildtool,毕竟是商业化的compiler driver,发现配置过程异常繁琐,官方文档语焉不详(MS:我们知道配置过程很麻烦,所以下Visual Studio就好了,233),想要在非VS的环境中调用CL编译命令是一个很痛苦的过程, 官方配置好环境的Powershell也是各种花样报错。
  3. Visual Studio 太傻瓜,有时候出问题不好判断是IDE的问题还是CUDAToolkit的问题,新手更倾向于自己配置环境

开发环境

本机(host): Win11 i5-1340P 无N卡 VSCode version: 1.86
远程(remote): Ubuntu 22.04 虚拟机

步骤

  1. 远程机安装CudaToolkit
    VSCode CUDA C/C++ 远程开发环境配置_第1张图片
    https://developer.nvidia.com/cuda-downloads
    按照自己的处理器架构/系统选择对应包,这里installer type选runfile/deb,为了偷懒节约时间,选runfile
wget https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda_12.3.2_545.23.08_linux.run
&& sudo sh cuda_12.3.2_545.23.08_linux.run

这一步直到EULA签名没有任何输出,Fail了好几次发现原来是虚拟机磁盘空间不够,解压失败,又去问GPT怎么扩容虚拟磁盘

  1. 环境变量设置
    这个时候输入nvcc -V提示找不到命令,并不是安装失败了,需要去设置PATH环境变量。在home目录下打开.bashrc,加入下面这两条(需要根据自己环境更改路径)

    export PATH=/usr/local/cuda-12.3/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH

    或者直接用cat追加到.bashrc
    这个时候输入nvcc -V

    $nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2023 NVIDIA Corporation
    Built on xxx
    Cuda compilation tools, release 12.3, V12.3.107
    Build cuda_12.3.r12.3/compiler.33567101_0

    大功告成

  2. vscode配置
    打开vscode插件商店搜索cuda,找到有两个插件
    VSCode CUDA C/C++ 远程开发环境配置_第2张图片
    VSCode CUDA C/C++ 远程开发环境配置_第3张图片
    一定一定不要下载第一个,当然下载了也没事,像我一样disable就好了,它会覆盖NVIDIA官方插件的intellisense,也不支持<<<>>>核函数语法,enable之后会影响微软官方的c++插件,甚至vscode本身的逻辑(写cpp文件debug按钮居然消失了),可以说是很坑的一个插件

打开.cu文件,正确识别到文件类型, intellisense开启:
image.png

发现只能识别一般的c++语法,不支持cuda的c++ extention,遇到<<<>>>提示error。没错,安装好了官方插件之后还是要去设置.cu文件的property,这里贴出我的配置 (修改自官方SDK https://github.com/NVIDIA/cuda-samples), 需要修改成自己的文件路径,文件名
c_cpp_properties.json,放在项目目录.vscode文件夹下

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/cuda-12.3/include"
            ],
            "defines": [],
            "compilerPath": "/usr/local/cuda-12.3/bin/nvcc",
            "cStandard": "gnu17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64",
            "configurationProvider": "ms-vscode.makefile-tools"
        }
    ],
    "version": 4
}

点击编译image.png
已经自动检测到NVCC,选择nvcc配置
VSCode CUDA C/C++ 远程开发环境配置_第4张图片
如果这一步只显示(gdb)launch, 就需要自己写launch.json和tasks.json

你可能感兴趣的:(VSCode CUDA C/C++ 远程开发环境配置)