NVCC warning level
c++, cuda, nvcc
Solution
Quoting the CUDA COMPILER DRIVER NVCC reference guide, Section 3.2.8. "Generic Tool Options":
`--Werror kind` Make warnings of the specified kinds into errors. The following is the list of warning kinds accepted by this option:
`cross-execution-space-call` Be more strict about unsupported cross execution space calls. The compiler will generate an error instead of a warning for a call from a `__host__ __device__` to a `__host__` function.
Therefore, do the following:
Project -> Properties -> Configuration Properties -> CUDA C/C++ -> Command Line -> Additional Optics -> add --Werror cross-execution-space-call
This test program
#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) { }
returns the following warning
warning : calling a __host__ function("foo") from a __host__ __device__ function("test") is not allowed
without the above mentioned additional compilation option and returns the following error
Error 3 error : calling a __host__ function("foo") from a __host__ __device__ function("test") is not allowed
with the above mentioned additional compilation option.
Problem
I would like NVCC to treat the warning below as an error: ``` warning : calling a __host__ function("foo") from a __host__ __device__ function("bar") ``` NVCC documentation "NVIDIA CUDA Compiler Driver NVCC" doesn't even contain the word "warning".