6.36. CUDA检查点
CUDA API版本支持
本节介绍CUDA底层驱动应用程序编程接口的检查点和恢复功能。
CUDA检查点和恢复API提供了一种方法,当与CPU端进程检查点解决方案结合使用时,可以保存和恢复GPU状态以实现完整进程检查点。它们还可用于暂停GPU工作并挂起CUDA进程,以允许其他应用程序利用GPU资源。
检查点和恢复功能目前仅限于Linux系统。
Functions
- CUresult cuCheckpointProcessCheckpoint ( int pid, CUcheckpointCheckpointArgs* args )
- Checkpoint a CUDA process's GPU memory contents.
- CUresult cuCheckpointProcessGetRestoreThreadId ( int pid, int* tid )
- Returns the restore thread ID for a CUDA process.
- CUresult cuCheckpointProcessGetState ( int pid, CUprocessState* state )
- Returns the process state of a CUDA process.
- CUresult cuCheckpointProcessLock ( int pid, CUcheckpointLockArgs* args )
- Lock a running CUDA process.
- CUresult cuCheckpointProcessRestore ( int pid, CUcheckpointRestoreArgs* args )
- Restore a CUDA process's GPU memory contents from its last checkpoint.
- CUresult cuCheckpointProcessUnlock ( int pid, CUcheckpointUnlockArgs* args )
- Unlock a CUDA process to allow CUDA API calls.
Functions
- CUresult cuCheckpointProcessCheckpoint ( int pid, CUcheckpointCheckpointArgs* args )
-
检查点一个CUDA进程的GPU内存内容。
参数
- pid
- - The process ID of the CUDA process
- args
- - Optional checkpoint operation arguments
返回
CUDA_SUCCESSCUDA_ERROR_INVALID_VALUECUDA_ERROR_NOT_INITIALIZEDCUDA_ERROR_ILLEGAL_STATECUDA_ERROR_NOT_SUPPORTED
描述
对处于LOCKED状态的指定pid的CUDA进程进行检查点保存。GPU内存内容将被转移到主机内存中,并释放所有底层引用。进程必须处于LOCKED状态才能执行检查点操作。
成功返回后,进程将处于CHECKPOINTED状态。
- CUresult cuCheckpointProcessGetRestoreThreadId ( int pid, int* tid )
-
返回CUDA进程的恢复线程ID。
参数
- pid
- - The process ID of the CUDA process
- tid
- - Returned restore thread ID
描述
在*tid中返回由pid指定进程的CUDA恢复线程的线程ID。
- CUresult cuCheckpointProcessGetState ( int pid, CUprocessState* state )
-
返回CUDA进程的进程状态。
参数
- pid
- - The process ID of the CUDA process
- state
- - Returned CUDA process state
描述
返回在*state中由pid指定的CUDA进程的当前状态。
- CUresult cuCheckpointProcessLock ( int pid, CUcheckpointLockArgs* args )
-
锁定一个正在运行的CUDA进程。
参数
- pid
- - The process ID of the CUDA process
- args
- - Optional lock operation arguments
返回
CUDA_SUCCESSCUDA_ERROR_INVALID_VALUECUDA_ERROR_NOT_INITIALIZEDCUDA_ERROR_ILLEGAL_STATECUDA_ERROR_NOT_SUPPORTEDCUDA_ERROR_NOT_READY
描述
锁定由pid指定的CUDA进程,这将阻止进一步的CUDA API调用。进程必须处于运行状态才能锁定。
成功返回后,进程将处于LOCKED状态。
如果指定了timeoutMs且达到超时时间,进程将在返回时保持RUNNING状态。
- CUresult cuCheckpointProcessRestore ( int pid, CUcheckpointRestoreArgs* args )
-
从最后一次检查点恢复CUDA进程的GPU内存内容。
参数
- pid
- - The process ID of the CUDA process
- args
- - Optional restore operation arguments
- CUresult cuCheckpointProcessUnlock ( int pid, CUcheckpointUnlockArgs* args )
-
解锁CUDA进程以允许进行CUDA API调用。
参数
- pid
- - The process ID of the CUDA process
- args
- - Optional unlock operation arguments
返回
CUDA_SUCCESSCUDA_ERROR_INVALID_VALUECUDA_ERROR_NOT_INITIALIZEDCUDA_ERROR_ILLEGAL_STATECUDA_ERROR_NOT_SUPPORTED
描述
解锁由pid指定的进程,允许其恢复调用CUDA API。该进程必须处于锁定状态。
成功返回后,进程将处于运行状态。