gpt4 book ai didi

cuda - 如何使用驱动程序 API 将 cuda 错误重置为成功?

转载 作者:行者123 更新时间:2023-12-02 09:19:49 24 4
gpt4 key购买 nike

我有一个内核,它可能会调用 asm("trap;")内核内部。但是当发生这种情况时,CUDA 错误代码设置为启动失败,我无法重置它。

在 CUDA 运行时 API 中,我们可以使用 cudaGetLastError要获取最后一个错误,同时将其重置为 cudaSuccess .

有没有办法用 Driver API 做到这一点?

最佳答案

无法使用 CUDA Runtime API 重置此类错误 cudaGetLastError()功能。

CUDA 运行时错误有两种类型:“粘性”和“非粘性”。 “非粘性”错误是那些不会破坏上下文的错误。例如,cudaMalloc请求超过可用内存的请求将失败,但不会破坏上下文。这样的错误是“非粘性的”。

涉及 CUDA 内核意外终止的错误(包括您的 trap 示例,还有内核中的 assert() 故障,以及运行时检测到的执行错误,例如越界访问)是“粘性的”。您无法使用 cudaGetLastError() 清除“粘性”错误.在运行时 API 中清除这些错误的唯一方法是 cudaDeviceReset() (这消除了所有设备分配,并清除了上下文)。

对应的驱动API函数为 cuDevicePrimaryCtxReset()

请注意 cudaDeviceReset()本身不足以将 GPU 恢复到正确的功能行为。为了实现这一点,“拥有”过程也必须终止。见 here .

关于cuda - 如何使用驱动程序 API 将 cuda 错误重置为成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43659314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com