如何在进程运行期间完全销毁(清理、重置)CUDA应用程序



我现在计划用BLCR为CUDA应用程序制作Checkpoint/Restart库。

要做到这一点,我必须在进程运行期间完全销毁CUDA应用程序

因为,如果进程仍在GPU上,则BLCR无法运行cr_checkpoint。事实上,我曾试图在某个时刻调用cudaDeviceReset(),在调用sleep(1000)之后,在睡眠系统调用期间,我发送了这样的信号;CCD_ 1。在这种情况下,我成功地创建了上下文。PID文件,但无法像这样运行;CCD_ 2。错误消息如下所示;

-mmap(0,200000000,270000000,…)=0xffffffffff(失败)-thaw_threads返回错误,正在中止-12重新启动失败:无法分配内存

有人知道吗?总结如下。

  1. 我计划用BLCR为CUDA应用程序制作检查点/重启库
  2. 我试图调用cudaDeviceReset()函数,但它无法重新启动(成功创建了context.PID文件,但未能重新启动)
  3. 我想知道如何在进程运行期间完全销毁或重置CUDA应用程序

如果有人给我任何想法,我会申请的。

cudaDeviceReset()会完全破坏任何CUDA应用程序的设备端,包括停止运行代码、重置GPU和删除任何设备内存分配。除了我提到的分配之外,它不会停止或影响应用程序的主机部分。

然而,我不知道它会破坏所有的cuda上下文。(可能,我只是不知道。)我想你可能对cr_run的失败解释不正确。你可能想读一读这篇文章(不幸的是,这家报纸现在被封在付费墙后面)。在cr_checkpoint的点上,您可能仍然有一个现存的CUDA上下文。

您可能希望使用驱动程序API函数来显式管理和销毁任何CUDA上下文。

最新更新