NVCC警告级别

use*_*298 7 c++ cuda

我希望NVCC将以下警告视为错误:

warning : calling a __host__ function("foo") from a __host__ __device__ function("bar")
Run Code Online (Sandbox Code Playgroud)

NVCC文档"NVIDIA CUDA编译器驱动程序NVCC"甚至不包含"警告"一词.

Jac*_*ern 6

引用 CUDA COMPILER DRIVER NVCC 参考指南,第 3.2.8 节。“通用工具选项”

--Werror kind将指定类型的警告变为错误。以下是该选项接受的警告类型列表:

cross-execution-space-call对不支持的跨执行空间调用更加严格。__host__ __device__对于从 a到函数的调用,编译器将生成错误而不是警告__host__

因此,请执行以下操作:

项目 -> 属性 -> 配置属性 -> CUDA C/C++ -> 命令行 -> 附加光学 -> 添加 --Werror 交叉执行空间调用

本次测试程序

#include <cuda.h>
#include <cuda_runtime.h>

void foo() { int a = 2;}

__host__ __device__ void test() {
    int tId = 1;
    foo();
}

int main(int argc, char **argv) { }
Run Code Online (Sandbox Code Playgroud)

返回以下警告

warning : calling a __host__ function("foo") from a __host__ __device__ function("test") is not allowed
Run Code Online (Sandbox Code Playgroud)

没有上述附加编译选项并返回以下错误

Error   3   error : calling a __host__ function("foo") from a __host__ __device__ function("test") is not allowed
Run Code Online (Sandbox Code Playgroud)

使用上面提到的附加编译选项。