我正在编写一个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);
}
您可以利用它将错误条件发送到调用主机代码。