【问题标题】:Are there any in built CUDA functions which allows a CUDA kernel to report error to the host code?是否有任何内置的 CUDA 函数允许 CUDA 内核向主机代码报告错误?
【发布时间】:2016-10-05 02:10:24
【问题描述】:

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

【问题讨论】:

  • 我不认为有什么不。正如你所说,你必须在某处写一些东西,然后从宿主那里读取。

标签: c++ cuda gpu gpgpu nvidia


【解决方案1】:

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

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

您可以利用它向调用主机代码发出错误信号。

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2016-05-01
    • 2023-04-06
    • 2016-01-16
    • 2014-01-06
    • 2016-10-29
    相关资源
    最近更新 更多