在CUDA 5.5中断言()

时间:2013-08-01 20:04:58

标签: cuda

我刚刚从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

有什么明显的东西我不见了吗?

1 个答案:

答案 0 :(得分:4)

确保包含assert.h,并确保定位到sm_20或更高版本。还要检查你是,包括Windows标题,如果你没有尝试。