是否有任何内置的CUDA函数允许CUDA内核向主机代码报告错误?



我正在编写一个CUDA内核来执行哈希。一旦我得到一个输入,我首先尝试用一个预定义的哈希桶大小对它进行哈希,在哈希期间,如果发生溢出,那么我需要使用更大的桶大小重新进行哈希。所以我想知道如果发生桶溢出,是否有任何内置cuda功能允许我向主机代码报告错误。我知道我可以写一些东西到预定义的内存位置,然后让主机代码读取它,但我更愿意使用一些内置的原语,如果可用的话。

CUDA在所有当前支持的硬件(sm_20及更新版本)上都支持断言。根据文档,这样做是合法的:

__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);
}

您可以利用它将错误条件发送到调用主机代码。

最新更新