【发布时间】:2013-01-16 00:31:43
【问题描述】:
我希望 NVCC 将以下警告视为错误:
warning : calling a __host__ function("foo") from a __host__ __device__ function("bar")
NVCC 文档“NVIDIA CUDA Compiler Driver NVCC”甚至不包含“警告”一词。
【问题讨论】:
-
为什么这不是设计上的错误?我刚刚经历了 nvcc 编译成功(只有你提到的警告):
__host__ int c() { return 0; } __host__ __device__ void b(){int a = c();} __global__ void a() {b();} /*...*/ a <<<1, 1 >>>();和行a = c();变成从 0 读取:mov.u32 %r1, 0; ld.volatile.u32 %r2, [%r1];这可以永远工作并且肯定是不是我想要的。为什么编译器要继续这样做?