1

我刚刚从 CUDA 5.0 升级到 5.5,由于 assert() 的问题,我所有的 VS2012 CUDA 项目都停止了编译。为了重现这个问题,我在 VS 2012 中创建了一个新的 CUDA 5.5 项目,并直接从编程指南中添加了代码并得到了同样的错误。

__global__ void testAssert(void)
{
    int is_one = 1;
    int should_be_one = 0;
    // This will have no effect
    assert(is_one);
    // This will halt kernel execution 
    assert(should_be_one);
}

这会产生以下编译器错误:

kernel.cu(22): error : calling a __host__ function("_wassert") from a __global__ function("testAssert") is not allowed

我有什么明显的遗漏吗?

4

1 回答 1

4

确保您包含assert.h,并确保您的目标是 sm_20 或更高版本。还要检查您是否包括 Windows 标头,如果您尝试不包括。

于 2013-08-01T20:24:09.303 回答