在此专栏的上一篇中已经讲解了Linux 系统中的Vscode基础配置,提到了C++环境的配置,而在Windows系统中给Vscode配置C++环境光靠下载插件好像并不行,这也是当时我在Windows系统中配置CUDA时所遇到的问题,所以此篇以CUDA配置为引例来讲解Windows系统下Vscode中的C++环境配置,以下分为了两个系统

一.Windows

1.Vscode下载

链接:Download Visual Studio Code - Mac, Linux, Windows

 这里不多说

2.CUDA下载及配置 

2.1 查看电脑匹配的CUDA版本

win+r并输入cmd,进入后输入如下命令查看,nvidia-smi查看的CUDA版本可能≥nvcc --version的版本,此时应该以nvcc得到的版本为准。

nvcc -V
nvidia-smi

2.2 上官网下载对应版本的CUDA(允许开发者使用NVIDIA GPU(图形处理单元)进行高性能计算(HPC)的开发)和CUDNN(是一个GPU加速的深度神经网络基元库,它提供了一系列高度优化的深度学习操作实现)

 2.2.1 CUDA下载

链接如下:https://developer.nvidia.com/cuda-downloads

其他版本的可以看资源中的:以前CUDA版本存档 ,找到后点击进入,选择可以参考下图

​ 

 2.2.2 CUDNN下载

链接如下:https://developer.nvidia.com/rdp/cudnn-download

 点击下载地址进入如下界面,如果没有账号,需要注册一个账号在进行下载。

 

 注册完成以后进入如下界面,选择相应的cuda版本下载cuDNN版本

此链接也可选: cuDNN Archive | NVIDIA Developer

2.3 安装及配置

 找到下载好的cuda的安装包,双击打开,设置好要安装的路径,点击OK等待安装,这些不做演示,因为已经下载。进入页面后有几步:

(1)系统检查:

(2)许可协议:点击同意并继续

(3)选项:选择自定义,点击下一步,选择驱动程序组件:全选,点击下一步

(4)安装:安装位置,不用改,就用默认位置并记住默认下载位置,点击下一步

(5)显示安装完成,结束

 cuda好了后,解压下载的cudnn压缩包

 找到cuda的安装路径,将cuDNN三个文件夹的内容分别复制到cuda对应的文件夹里面 

 最重要的一部分:为cuDNN添加环境变量(在系统环境中添加)

 2.4 测试

1.win+R进入cmd,在命令行输入nvcc -V,有cuda版本则表示cuda已经安装成功

2.进入cuda的C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite文件夹下,点击运行bandwidthTest.exe和deviceQuery.exe后终端显示的Result=PASS,即没有问题。

3.C++环境

 配完以上部分后在Vscode中训练模型时,你会发现还是有问题,他会报:openMP库并行运算出问题,这是因为缺少C++的环境!文章到此正片才开始,vscode不会自带g++,需要自己下载和配置,因为我们不想使用Visual Studio(卸载好像有一点问题,而且影响了我原有的环境),而minGW已经很久没有在官网维护了,所以我们选择:自带minGW的dev-C++

链接如下:http://sourceforge.net/projects/orwelldevcpp/

安装时选择english就好,打开时可以选择简体中文······但这不重要,我们至少目前不用他,我们的目标是用里面带的minGW。然后配置环境变量:设置->搜索高级系统设置,点击环境变量

双击用户变量中的Path,然后点击新建,把刚才你下载路径下的minGW(64)目录下的bin文件夹路径填入(系统变量也可以)

再打开cmd,输入

g++ --version

如图就没问题了。

打开vscode,在左侧扩展出下载三个包:python,C/C++和code runner,还需要在项目根文件夹下创建.vscode文件夹,共四个json文件

(1)c_cpp_properties.json

{
  "configurations": [
    {
      "name": "Win64",
      "includePath": ["${workspaceFolder}/**"],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "windowsSdkVersion": "10.0.18362.0",
      "compilerPath": "D:\\Dev-cpp\\minGW64\\bin\\g++.exe",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "gcc-x64"
    }
  ],
  "version": 4
}

(2)tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "shell",
      "label": "g++",
      "command": "g++",
      "args": [
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}.exe"
      ],
      "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
          "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
          "file": 1,
          "line": 2,
          "column": 3,
          "severity": 4,
          "message": 5
        }
      },
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

(3)launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch", 
      "type": "cppdbg", 
      "request": "launch", 
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", 
      "args": [], 
      "stopAtEntry": false,
      "cwd": "${workspaceRoot}",
      "environment": [],
      "externalConsole": true, 
      "MIMode": "gdb",
      "miDebuggerPath": "D:\\Dev-cpp\\minGW64\\bin\\g++.exe",
      "preLaunchTask": "g++",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

(4)settings.json

{
    "files.associations": {
        "*.py": "python",
        "iostream": "cpp",
        "*.tcc": "cpp",
        "string": "cpp",
        "unordered_map": "cpp",
        "vector": "cpp",
        "ostream": "cpp",
        "new": "cpp",
        "typeinfo": "cpp",
        "deque": "cpp",
        "initializer_list": "cpp",
        "iosfwd": "cpp",
        "fstream": "cpp",
        "sstream": "cpp",
        "map": "c",
        "stdio.h": "c",
        "algorithm": "cpp",
        "atomic": "cpp",
        "bit": "cpp",
        "cctype": "cpp",
        "clocale": "cpp",
        "cmath": "cpp",
        "compare": "cpp",
        "concepts": "cpp",
        "cstddef": "cpp",
        "cstdint": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cstring": "cpp",
        "ctime": "cpp",
        "cwchar": "cpp",
        "exception": "cpp",
        "ios": "cpp",
        "istream": "cpp",
        "iterator": "cpp",
        "limits": "cpp",
        "memory": "cpp",
        "random": "cpp",
        "set": "cpp",
        "stack": "cpp",
        "stdexcept": "cpp",
        "streambuf": "cpp",
        "system_error": "cpp",
        "tuple": "cpp",
        "type_traits": "cpp",
        "utility": "cpp",
        "xfacet": "cpp",
        "xiosbase": "cpp",
        "xlocale": "cpp",
        "xlocinfo": "cpp",
        "xlocnum": "cpp",
        "xmemory": "cpp",
        "xstddef": "cpp",
        "xstring": "cpp",
        "xtr1common": "cpp",
        "xtree": "cpp",
        "xutility": "cpp",
        "stdlib.h": "c",
        "string.h": "c"
      },
      "editor.suggest.snippetsPreventQuickSuggestions": false,
      "aiXcoder.showTrayIcon": true
}

 注:

(1)c++17可能会有兼容性问题,如果顾虑此类问题或者因此报错记得把c_cpp_properties.json中的cStandard改为c11,cppStandard改为c++11 

(2)tasks文件的label与launch文件的preLaunchTask值需要一致

(3)tasks文件的type值需要改成shell,并在return 0前执行system("pause");(如果你要写c/c++程序的话)

(4)其中的"D:\\Dev-cpp\\minGW\\bin\\g++.exe"和"D:\\Dev-cpp\\minGW\\bin\\gdb.exe"替换为自己路径的对应文件就行,分隔符记得打成双反斜杠\\。

二.Linux

在上一节讲了Vscode基础配置,现在需要再下载一个g++,命令如下

sudo apt install g++

然后就可以在Vscode里面直接编译运行CPP文件了。

测试如下:

在终端可行,那现在在Vscode里面测试一下:

成功运行,它会自动在.vscode文件夹下生成json文件

完结撒花!! 

 

Logo

欢迎来到由智源人工智能研究院发起的Triton中文社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐