6.36. CUDA 检查点
CUDA API 版本控制支持
本节介绍低级 CUDA 驱动程序应用程序编程接口的检查点和恢复功能。
当与 CPU 端进程检查点解决方案一起使用时,CUDA 检查点和恢复 API 提供了一种保存和恢复 GPU 状态以进行完整进程检查点的方法。它们还可以用于暂停 GPU 工作和挂起 CUDA 进程,以允许其他应用程序使用 GPU 资源。
检查点和恢复功能目前仅限于 Linux。
函数
- CUresult cuCheckpointProcessCheckpoint ( int pid, CUcheckpointCheckpointArgs* args )
- 检查 CUDA 进程的 GPU 内存内容。
- CUresult cuCheckpointProcessGetRestoreThreadId ( int pid, int* tid )
- 返回 CUDA 进程的恢复线程 ID。
- CUresult cuCheckpointProcessGetState ( int pid, CUprocessState* state )
- 返回 CUDA 进程的进程状态。
- CUresult cuCheckpointProcessLock ( int pid, CUcheckpointLockArgs* args )
- 锁定正在运行的 CUDA 进程。
- CUresult cuCheckpointProcessRestore ( int pid, CUcheckpointRestoreArgs* args )
- 从上次检查点恢复 CUDA 进程的 GPU 内存内容。
- CUresult cuCheckpointProcessUnlock ( int pid, CUcheckpointUnlockArgs* args )
- 解锁 CUDA 进程以允许 CUDA API 调用。
函数
- CUresult cuCheckpointProcessCheckpoint ( int pid, CUcheckpointCheckpointArgs* args )
-
检查 CUDA 进程的 GPU 内存内容。
参数
- pid
- - CUDA 进程的进程 ID
- args
- - 可选的检查点操作参数
返回值
CUDA_SUCCESSCUDA_ERROR_INVALID_VALUECUDA_ERROR_NOT_INITIALIZEDCUDA_ERROR_ILLEGAL_STATECUDA_ERROR_NOT_SUPPORTED
描述
检查由以下项指定的 CUDA 进程pid处于 LOCKED 状态。GPU 内存内容将被带入主机内存,并且所有底层引用将被释放。进程必须处于 LOCKED 状态才能进行检查点操作。
成功返回后,进程将处于 CHECKPOINTED 状态。
- CUresult cuCheckpointProcessGetRestoreThreadId ( int pid, int* tid )
-
返回 CUDA 进程的恢复线程 ID。
参数
- pid
- - CUDA 进程的进程 ID
- tid
- - 返回的恢复线程 ID
描述
在*tid中返回由以下项指定的进程的 CUDA 恢复线程的线程 IDpid.
- CUresult cuCheckpointProcessGetState ( int pid, CUprocessState* state )
-
返回 CUDA 进程的进程状态。
参数
- pid
- - CUDA 进程的进程 ID
- state
- - 返回的 CUDA 进程状态
描述
在*state由以下项指定的 CUDA 进程的当前状态pid.
- CUresult cuCheckpointProcessLock ( int pid, CUcheckpointLockArgs* args )
-
锁定正在运行的 CUDA 进程。
参数
- pid
- - CUDA 进程的进程 ID
- args
- - 可选的锁定操作参数
返回值
CUDA_SUCCESSCUDA_ERROR_INVALID_VALUECUDA_ERROR_NOT_INITIALIZEDCUDA_ERROR_ILLEGAL_STATECUDA_ERROR_NOT_SUPPORTEDCUDA_ERROR_NOT_READY
描述
锁定由以下项指定的 CUDA 进程pid这将阻止进一步的 CUDA API 调用。进程必须处于 RUNNING 状态才能锁定。
成功返回后,进程将处于 LOCKED 状态。
如果指定了 timeoutMs 并且达到超时时间,则进程将在返回时保持 RUNNING 状态。
- CUresult cuCheckpointProcessRestore ( int pid, CUcheckpointRestoreArgs* args )
-
从上次检查点恢复 CUDA 进程的 GPU 内存内容。
参数
- pid
- - CUDA 进程的进程 ID
- args
- - 可选的恢复操作参数
- CUresult cuCheckpointProcessUnlock ( int pid, CUcheckpointUnlockArgs* args )
-
解锁 CUDA 进程以允许 CUDA API 调用。
参数
- pid
- - CUDA 进程的进程 ID
- args
- - 可选的解锁操作参数
返回值
CUDA_SUCCESSCUDA_ERROR_INVALID_VALUECUDA_ERROR_NOT_INITIALIZEDCUDA_ERROR_ILLEGAL_STATECUDA_ERROR_NOT_SUPPORTED
描述
解锁由以下项指定的进程pid,使其能够恢复进行 CUDA API 调用。进程必须处于 LOCKED 状态。
成功返回后,进程将处于 RUNNING 状态。