3.3. 设备执行控制

变量

CUDBGResult  ( *CUDBGAPI_st::resumeDevice )( uint32_t dev )
恢复已暂停的 CUDA 设备。
CUDBGResult  ( *CUDBGAPI_st::resumeWarpsUntilPC )( uint32_t devId, uint32_t sm, uint64_t warpMask, uint64_t virtPC )
在指定的虚拟 PC 处插入一个临时断点,并恢复给定 SM 上指定位掩码中的所有 Warp。与 CUDBGAPI_st::resumeDevice 相比,CUDBGAPI_st::resumeWarpsUntilPC 通过恢复同一 SM 上选定的一组 Warp,提供了更精细的控制。主要预期用途是在预先知道目标 PC 时加速单步执行过程。客户端可以发出此 API,而不是单独单步执行每个 Warp 直到命中目标 PC。当使用此 API 时,CUDA 内核中的错误将不再被精确报告。在无法恢复 Warp 的情况下,此 API 将返回 CUDBG_ERROR_WARP_RESUME_NOT_POSSIBLE。然后,客户端应回退到使用 CUDBGAPI_st::singleStepWarp 或 CUDBGAPI_st::resumeDevice。
CUDBGResult  ( *CUDBGAPI_st::singleStepWarp )( uint32_t dev, uint32_t sm, uint32_t wp, uint32_t nsteps, uint64_t* warpMask )
在暂停的 CUDA 设备上单步执行单个 Warp nsteps 次。范围内的最后一条指令应为控制流指令。
CUDBGResult  ( *CUDBGAPI_st::singleStepWarp40 )( uint32_t dev, uint32_t sm, uint32_t wp )
在暂停的 CUDA 设备上单步执行单个 Warp。
CUDBGResult  ( *CUDBGAPI_st::singleStepWarp41 )( uint32_t dev, uint32_t sm, uint32_t wp, uint64_t* warpMask )
在暂停的 CUDA 设备上单步执行单个 Warp。
CUDBGResult  ( *CUDBGAPI_st::suspendDevice )( uint32_t dev )
暂停正在运行的 CUDA 设备。

变量

CUDBGResult ( *CUDBGAPI_st::resumeDevice )( uint32_t dev )

恢复已暂停的 CUDA 设备。自 CUDA 3.0 起。

参见

suspendDevice

singleStepWarp

参数
dev
- 设备索引
返回值

CUDBG_SUCCESS, CUDBG_ERROR_INVALID_DEVICE, CUDBG_ERROR_RUNNING_DEVICE, CUDBG_ERROR_UNINITIALIZED

CUDBGResult ( *CUDBGAPI_st::resumeWarpsUntilPC )( uint32_t devId, uint32_t sm, uint64_t warpMask, uint64_t virtPC )

在指定的虚拟 PC 处插入一个临时断点,并恢复给定 SM 上指定位掩码中的所有 Warp。与 CUDBGAPI_st::resumeDevice 相比,CUDBGAPI_st::resumeWarpsUntilPC 通过恢复同一 SM 上选定的一组 Warp,提供了更精细的控制。主要预期用途是在预先知道目标 PC 时加速单步执行过程。客户端可以发出此 API,而不是单独单步执行每个 Warp 直到命中目标 PC。当使用此 API 时,CUDA 内核中的错误将不再被精确报告。在无法恢复 Warp 的情况下,此 API 将返回 CUDBG_ERROR_WARP_RESUME_NOT_POSSIBLE。然后,客户端应回退到使用 CUDBGAPI_st::singleStepWarp 或 CUDBGAPI_st::resumeDevice。自 CUDA 6.0 起。

参见

resumeDevice

参数
devId
- 设备索引
sm
- SM 索引
warpMask
- 要恢复的 Warp 的位掩码 (1 = 恢复, 0 = 不恢复)
virtPC
- 将在其中插入临时断点的虚拟 PC
返回值

CUDBG_SUCCESS CUDBG_ERROR_INVALID_ARGS CUDBG_ERROR_INVALID_DEVICE CUDBG_ERROR_INVALID_SM CUDBG_ERROR_INVALID_WARP_MASK CUDBG_ERROR_WARP_RESUME_NOT_POSSIBLE CUDBG_ERROR_UNINITIALIZED

CUDBGResult ( *CUDBGAPI_st::singleStepWarp )( uint32_t dev, uint32_t sm, uint32_t wp, uint32_t nsteps, uint64_t* warpMask )

在暂停的 CUDA 设备上单步执行单个 Warp nsteps 次。范围内的最后一条指令应为控制流指令。自 CUDA 7.5 起。

参见

resumeDevice

suspendDevice

参数
dev
- 设备索引
sm
- SM 索引
wp
- Warp 索引
nsteps
- 单步步数
warpMask
- 已单步执行的 Warp
返回值

CUDBG_SUCCESS, CUDBG_ERROR_INVALID_DEVICE, CUDBG_ERROR_INVALID_SM, CUDBG_ERROR_INVALID_WARP, CUDBG_ERROR_RUNNING_DEVICE, CUDBG_ERROR_UNINITIALIZED, CUDBG_ERROR_UNKNOWN

CUDBGResult ( *CUDBGAPI_st::singleStepWarp40 )( uint32_t dev, uint32_t sm, uint32_t wp )

在暂停的 CUDA 设备上单步执行单个 Warp。自 CUDA 3.0 起。

参见

resumeDevice

suspendDevice

singleStepWarp

参数
dev
- 设备索引
sm
- SM 索引
wp
- Warp 索引
返回值

CUDBG_SUCCESS, CUDBG_ERROR_INVALID_DEVICE, CUDBG_ERROR_INVALID_SM, CUDBG_ERROR_INVALID_WARP, CUDBG_ERROR_RUNNING_DEVICE, CUDBG_ERROR_UNINITIALIZED, CUDBG_ERROR_UNKNOWN, CUDBG_ERROR_WARP_RESUME_NOT_POSSIBLE

CUDBGResult ( *CUDBGAPI_st::singleStepWarp41 )( uint32_t dev, uint32_t sm, uint32_t wp, uint64_t* warpMask )

在暂停的 CUDA 设备上单步执行单个 Warp。自 CUDA 4.1 起。

参见

resumeDevice

suspendDevice

参数
dev
- 设备索引
sm
- SM 索引
wp
- Warp 索引
warpMask
- 已单步执行的 Warp
返回值

CUDBG_SUCCESS, CUDBG_ERROR_INVALID_DEVICE, CUDBG_ERROR_INVALID_SM, CUDBG_ERROR_INVALID_WARP, CUDBG_ERROR_RUNNING_DEVICE, CUDBG_ERROR_UNINITIALIZED, CUDBG_ERROR_UNKNOWN

CUDBGResult ( *CUDBGAPI_st::suspendDevice )( uint32_t dev )

暂停正在运行的 CUDA 设备。自 CUDA 3.0 起。

参见

resumeDevice

singleStepWarp

参数
dev
- 设备索引
返回值

CUDBG_SUCCESS, CUDBG_ERROR_INVALID_DEVICE, CUDBG_ERROR_RUNNING_DEVICE, CUDBG_ERROR_UNINITIALIZED