0

拥有这样的 cuda 内核

__global__ void kernel(...)
{
    free( 48190);
}

可能不是一个好主意。假设这48190不是在当前执行期间释放的有效地址。

如果我们在主机上,运行时可能会立即停止执行,抛出一个段错误并给我们一些令人讨厌的描述,比如“堆已损坏”之类的。

但是,如果除了消息之外它做了所有的事情呢?如果当它到达那个点时,它会爆炸并退出而没有告诉我发生了什么。这就是那个代码给我的。如果我在我的机器上编写了上面的内核,它会编译、运行,如果这是我的程序所做的一切(只是调用那个内核)它会很高兴地退出而没有错误消息:(。我后来才知道当我尝试做一个 cudaMemcpy 出错了,因为它失败了error code 30: unknown error

我的问题是:这应该发生吗?当内核调用出现问题时,有什么方法可以启用某种错误描述?

4

1 回答 1

3

当内核调用出现问题时,有什么方法可以启用某种消息描述?

是的,做 cuda 错误检查。它在这里描述。

于 2013-11-01T17:14:36.973 回答