尽管正确安装了cuda工具包,为什么在vscode中include cuda_runtime.h被标记为红色?

问题描述 投票:0回答:1

我有一个c-cuda项目。它有一个 main.c 文件和一个 deviceFunctions.cu 文件。 Visual Studio Code 用于处理该项目,还有此扩展:安装

ms-vscode.cpptools
以获取代码完成和错误检查等。

helper.h 文件包含设备和主机代码中所需的所有 include 语句。然后标头包含在这两个文件中。 运行 cuda 代码需要

#include <cuda_runtime.h>
这条语句,但它被标记为红色。为什么尽管正确安装了 cuda 工具包并且运行代码时没有错误?此外,扩展程序的代码补全功能也运行不佳。

代码是使用以下命令编译的:

#Compile Cuda object file:                                                                                                                                                              
nvcc -O3 -c -g -o target.o -arch=sm_75 deviceFunctions.cu                                                                                                                          
#Device Link (what exactly is meant by this idk)                                                                                                  
nvcc -O3 -g -o dlink.o -arch=sm_75 -dlink target.o                                                                                                                  
#Compile C code
gcc -std=gnu99 -c -g -o main main.c -I/usr/local/cuda-12.3/include -L/usr/local/cuda-12.3/lib64 -lcudadevrt -lm -lrt                                                                                                                                                                                  
#Final Link                                                                                                                                                                  
gcc -g -o compute_output main dlink.o target.o -I/usr/local/cuda-12.3/include -L/usr/local/cuda-12.3/lib64 -lcudadevrt -lcudart -lm -lrt
c visual-studio-code debugging cuda vscode-extensions
1个回答
0
投票

答案是扩展需要有关如何编译代码的信息来理解所有内容,例如 include 语句。例如,cuda 工具包库包含在编译命令中,但扩展也需要该信息。

为此,您需要将“compile_commands.json”文件添加到项目的根目录中。在这种情况下,无法自动生成该文件。如果你使用Cmake来构建项目就可以了。但在这种情况下,文件应如下所示:

[
  {
    "directory": "/path/to/project",
    "command": "nvcc -O3 -c -g -o target.o --cuda-gpu-arch=sm_75 deviceFunctions.cu",
    "file": "cudafunction.cu"
  },
  {
    "directory": "/path/to/project",
    "command": "nvcc -O3 -g -o dlink.o --cuda-gpu-arch=sm_75 -dlink target.o",
    "file": "dlink.o"
  },
  {
    "directory": "/path/to/project",
    "command": "gcc -std=gnu99 -c -g -o main main.c -I/usr/local/cuda-12.3/include -L/usr/local/cuda-12.3/lib64 -lcudadevrt -lcublas -lcublasLt -lcudart -lm -lrt",
    "file": "main.c"
  },
  {
    "directory": "/path/to/project",
    "command": "gcc -g -o compute_output main dlink.o target.o -I/usr/local/cuda-12.3/include -L/usr/local/cuda-12.3/lib64 -lcudadevrt -lcublas -lcublasLt -lcudart -lm -lrt",
    "file": "compute_output"
  }
]

如果此文件以及 cuda 工具包安装正确,则扩展将不再将 include 语句标记为红色,并且代码完成将与设备代码和主机代码一起工作。

© www.soinside.com 2019 - 2024. All rights reserved.