- 官方插件:
Nsight Visual Studio Code Edition
(与cuda调试有关) - 配置文件格式识别,在设置中搜索
files.associations
, 设置“*.cu”: ".cpp",将cu文件映射为cpp文件(利用cpp插件来编译,可不做)。 解决导入cuda_runtime.h出现波浪线问题。
- 打开Microsoft C/C++扩展配置。
- 编译器参数那里添加
-I "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\include"
-L "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\libi\\x64"
- 解决不识别核函数中的关键词问题,在每个头文件下面添加下面两行。(如果执行了第五步这个可以省略,因为插件会帮你导入。保险起见还是写一下咯)
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
解决不识别cu的<<<>>>核函数调用问题
- 安装vscode-cudacpp插件。
- 在当前工作区的.vscode文件夹下面新建一个
setting.json
文件,文件内容如下:
{
"files.associations": {
"*.cu": "cuda-cpp",
"*.cuh": "cuda-cpp"
}
}
- 总的文件配置如下(文件均位于.vscode文件夹下):
6.1 c_cpp_properties.json
- 该文件主要用于cpp编译器,如果执行了第五步可以省略该步骤。
- 内容如下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "D:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe",
"intelliSenseMode": "windows-msvc-x64",
"compilerArgs": [
"-I",
"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\include",
"-L",
"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\libi\\x64",
"-l", "cudart",
"-l", "cublas",
"-l", "cudnn",
"-l", "curand"
],
"cStandard": "c17",
"cppStandard": "c++17"
}
],
"version": 4
}
6.2 launch.json
- 该文件用于debug调试用,但是实际windows下面的debug应该是废掉了。
- 该文件只是充数用,没有debug的作用了。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
}
]
}
6.3 settings.json
- 该文件用于告诉插件你的文件格式,方便插件执行,非常重要。
- 文件内容
{
"files.associations": {
"*.cu": "cuda",
"*.cuh": "cuda"
}
}
6.4 tasks.json
- 用于调用nvcc编译器并且执行.cu文件,核心文件所在。
- 文件内容
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "nvcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-I",
"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\include",
"-L",
"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\libi\\x64",
"-l", "cudart",
"-l", "cublas",
"-l", "cudnn",
"-l", "curand",
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
cuda-gdb调试
- 安装Nsight Visual Studio Code Edition插件
- tasks.json的args参数增加一个“-G”即可(windows下只能debug cpu数据,gpu数据不能debug,除非用远程开发连接linux)。
"args": [
"-G",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
# ---省略-- #
],