Cuda设备代码不为';当发生故障时,不要抛出错误

Cuda设备代码不为';当发生故障时,不要抛出错误,cuda,segmentation-fault,Cuda,Segmentation Fault,有这样一个cuda内核 __global__ void kernel(...) { free( 48190); } 这可能不是个好主意。 假设48190不是当前执行期间要释放的有效地址 如果我们在主机上,运行时可能会立即停止执行,抛出一个segfault错误,并对发生的情况进行一些恶劣的描述,比如“堆已损坏”之类的 但是,如果除了信息之外,它做了所有这些呢?如果当它到达那个点时,它爆炸并离开,而没有告诉我发生了什么。这就是代码给我的。如果我在我的机器上编写上述内核,它将编译、运行,如果

有这样一个cuda内核

__global__ void kernel(...)
{
    free( 48190);
}
这可能不是个好主意。 假设
48190
不是当前执行期间要释放的有效地址

如果我们在主机上,运行时可能会立即停止执行,抛出一个segfault错误,并对发生的情况进行一些恶劣的描述,比如“堆已损坏”之类的

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

我的问题是:这是应该发生的吗?当内核调用出错时,有没有办法启用某种错误描述

当内核调用出错时,有没有办法启用某种消息描述

是的,请执行cuda错误检查。已描述

当内核调用出错时,有没有办法启用某种消息描述

是的,请执行cuda错误检查。已描述

当内核调用出错时,有没有办法启用某种消息描述

是的,请执行cuda错误检查。已描述

当内核调用出错时,有没有办法启用某种消息描述


是的,执行cuda错误检查。这是有描述的。

确实如此。设备代码中的非法操作将触发运行时错误,主机可以检测到该错误,或者如果您在内核证书中使用设备API,则返回错误代码。设备代码中的非法操作将触发运行时错误,主机可以检测到该错误主机,或者如果您在内核契约中使用设备API,则返回错误代码。设备代码中的非法操作将触发主机可以检测到的运行时错误,或者如果您在内核契约中使用设备API,则返回错误代码。设备代码中的非法操作将触发运行时错误w它可以被主机检测到,如果您在内核中使用设备API,则返回错误代码