Windows下 VSCode配置cuda编译环境

Windows系统下,在Visual Studio 里配置CUDA环境网上已经有很多资料了,而在轻量级IDE VScode上编译CUDA的材料不是很多,本篇博文将简要介绍在Windows 系统下配置CUDA环境的方法。

一、VScode插件 code-runner法

在VScode里安装插件——coder-runner,在settings.json里添加(win10下的)

"code-runner.executorMap": {
        "cu": "cd $dir; nvcc $fileName -o $fileNameWithoutExt.exe -I'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0\\include' && $dir$fileNameWithoutExt"
    }, // 右键

win7下的(注意win7 和win 10 下的不太一样,之前的博文里有提到过) 

"code-runner.executorMap": {
        "cu": "cd $dir && nvcc $fileName -o $fileNameWithoutExt.exe -I'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0\\include' && $dir$fileNameWithoutExt"
    }, // 右键

注意:这里的settings.json 是当前工作目录  .vscode 目录下(没有自己创建,自己写也可以)的设置文件,是局部的,如果需要全局通用的话,则转到全局settings.json 文件里修改。

上面的命令里比较关键的地方在于 nvcc——指定编译器(这里直接使用是因为已经在系统环境变量里添加了nvcc的地址了,否则这里需要把nvcc所在的路径写全),其次 -I (大写的i)为指定include文件路径,用 '  而不是 " 是因为语句已经被 " "包含了。此外如果还需要使用链接库的话,还需要加 

-l 和 -L

来分别指定需要的库名称,和库所在的位置。具体参考博文:https://www.cnblogs.com/shrimp-can/p/5567518.html

按照上面的方法应该是可以在win下编译cuda文件为可执行文件并运行,不过也有可能在编译的时候 会以gcc/g++的方式进行编译,这时候需要看一下 在系统settigns.json 文件里 是否将. c/.cpp 与.cu 进行关联了,如果是的话,要么取消关联,但是这个时候,就无法享用.c/.cpp 带来的的语法高亮的便利,还用一种办法就是把上面"code-runner.executorMap" 中关于c或者cpp的执行命令语句全部 注销掉。这里给出我使用的settings.json,仅供参考。

{
    "files.defaultLanguage": "c", // ctrl+N新建文件后默认的语言
    "editor.formatOnType": false, // 输入分号(C/C++的语句结束标识)后自动格式化当前这一行的代码
    "editor.suggest.snippetsPreventQuickSuggestions": false, // clangd的snippets有很多的跳转点,不用这个就必须手动触发Intellisense了
    "editor.acceptSuggestionOnEnter": "off", // 我个人的习惯,按回车时一定是真正的换行,只有tab才会接受Intellisense
    // "editor.snippetSuggestions": "top", // (可选)snippets显示在补全列表顶端,默认是inline
    "code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入
    "code-runner.executorMap": {
        // "c": "cd $dir && gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'",
        //"cpp": "cd $dir && g++ '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c++17 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'"
        //"c": "cd $dir ; gcc $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && $dir$fileNameWithoutExt",
        //"cpp": "cd $dir; g++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c++17 -fexec-charset=GBK && $dir$fileNameWithoutExt",
        "c": "cd $dir; nvcc $fileName -o $fileNameWithoutExt.exe -I'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0\\include' && $dir$fileNameWithoutExt"
    }, // 右键run code时运行的命令;未注释的仅适用于PowerShell(Win10默认),文件名中有空格也可以编译运行;注释掉的适用于cmd(win7默认),PS和bash也能用,但文件名中有空格时无法运行
    "code-runner.saveFileBeforeRun": true, // run code前保存
    "code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false
    "code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息,默认false
    "code-runner.ignoreSelection": true, // 默认为false,效果是鼠标选中一块代码后可以单独执行,但C是编译型语言,不适合这样用
    // "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
    //"terminal.integrated.shell.windows": "powershell.exe",
    "C_Cpp.clang_format_sortIncludes": true, // 格式化时调整include的顺序(按字母排序)
}

二、手动输入命令的方法

这种方法更接近在linux系统下的使用方法,要在环境变量中增加cl.exe的路径,不然会报错,具体的

1.在vscode里打开终端

2.输入命令 

nvcc -o main -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include" main.cu

3.输入 ./main 即可执行

这里的nvcc ,-I 与前面的解释类似。

其实,不一定非要在vscode终端里执行,也可以在cmd或者powershell里执行 类似的命令,具体可以自己探索一下。

windows在vscode里配置环境稍微麻烦一点,linux下比较方便是因为在 .bashrc 文件里已经配置好了 PATH 和LD_LIBRARY_PATH 。

 

参考链接:

1.https://blog.csdn.net/u012435142/article/details/102651892

2.https://www.cnblogs.com/shrimp-can/p/5567518.html


额外补充一点,可以直接使用 MS VS工具切换到指定目录下执行,

参考 https://www.cnblogs.com/kileyi/p/5492253.html 打开, 本机工具命令提示符,然后cd 到cu文件所在目录

,直接执行 nvcc -o test  test.cu也行,因为这个VS自带的工具已经提前配置好了环境。

 

你可能感兴趣的:(VScode,CUDA,GPU,windows)