拥有像这样的cuda内核
__global__ void kernel(...)
{
free( 48190);
}
可能不是一个好主意。
假设48190
不是在当前执行期间解除分配的有效地址。
如果我们在主机上,运行时可能会立即停止执行,抛出段错误并给我们一些令人讨厌的描述,例如“堆已经损坏”或其他什么。
但是如果除了消息之外它做了所有的事情呢?如果它到达那一点,它就会爆炸并退出,而不会告诉我发生了什么。这就是代码给我的东西。如果我在我的机器上写了上面的内核,它会编译,运行,如果这是我的程序所做的一切(只是调用那个内核),它会很高兴地退出而没有错误消息:(。我只是稍后才发现当我尝试做一个cudaMemcpy,因为它因error code 30: unknown error
我的问题是:这应该发生吗?有没有办法在内核调用出错时启用某种错误描述?