4.20. 事件处理方法
本章节介绍 NVML 可以针对每个设备执行的方法,用于注册和等待某些事件发生。
模块
类
类型定义
- typedef nvmlEventSet_st * nvmlEventSet_t
函数
- nvmlReturn_t nvmlDeviceGetSupportedEventTypes ( nvmlDevice_t device, unsigned long long* eventTypes )
- nvmlReturn_t nvmlDeviceRegisterEvents ( nvmlDevice_t device, unsigned long long eventTypes, nvmlEventSet_t set )
- nvmlReturn_t nvmlEventSetCreate ( nvmlEventSet_t* set )
- nvmlReturn_t nvmlEventSetFree ( nvmlEventSet_t set )
- nvmlReturn_t nvmlEventSetWait_v2 ( nvmlEventSet_t set, nvmlEventData_t* data, unsigned int timeoutms )
函数
- nvmlReturn_t nvmlDeviceGetSupportedEventTypes ( nvmlDevice_t device, unsigned long long* eventTypes )
-
参数
- device (设备)
- 目标设备的标识符
- eventTypes (事件类型)
- 用于返回支持事件的位掩码的引用
返回值
- NVML_SUCCESS 如果 eventTypes 已被设置
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 eventType 为 NULL
- NVML_ERROR_GPU_IS_LOST 如果目标 GPU 已从总线上脱落或无法访问
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
返回有关设备上支持的事件的信息
适用于 Fermi 或更新的完全支持的设备。
Windows 不支持事件。因此,此函数在 Windows 上于 eventTypes 中返回一个空掩码。
另请参阅
- nvmlReturn_t nvmlDeviceRegisterEvents ( nvmlDevice_t device, unsigned long long eventTypes, nvmlEventSet_t set )
-
参数
- device (设备)
- 目标设备的标识符
- eventTypes (事件类型)
- 要记录的 事件类型 的位掩码
- set (集合)
- 向其中添加新事件类型的集合
返回值
- NVML_SUCCESS 如果事件已被设置
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 eventTypes 无效或 set 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果平台不支持此功能或某些请求的事件类型
- NVML_ERROR_GPU_IS_LOST 如果目标 GPU 已从总线上脱落或无法访问
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
开始在指定设备上记录事件,并将事件添加到指定的 nvmlEventSet_t
适用于 Fermi 或更新的完全支持的设备。ECC 事件仅在启用 ECC 的设备上可用(请参阅 nvmlDeviceGetTotalEccErrors)。电源限制事件仅在启用电源管理的设备上可用(请参阅 nvmlDeviceGetPowerManagementMode)。
仅适用于 Linux。
重要提示: 对集合的操作不是线程安全的
此调用开始在特定设备上记录事件。在此调用之前发生的所有事件都不会被记录。可以使用 nvmlEventSetWait_v2 检查是否发生了某些事件。
如果函数报告 NVML_ERROR_UNKNOWN,则事件集合处于未定义状态,应释放。如果函数报告 NVML_ERROR_NOT_SUPPORTED,则事件集合仍可使用。在这种情况下,不会注册任何请求的 eventTypes。
另请参阅
nvmlDeviceGetSupportedEventTypes
nvmlEventSetWait
- nvmlReturn_t nvmlEventSetCreate ( nvmlEventSet_t* set )
-
参数
- set (集合)
- 用于返回事件句柄的引用
返回值
- NVML_SUCCESS 如果事件已被设置
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 set 为 NULL
- NVML_ERROR_UNKNOWN 在任何意外错误时
- nvmlReturn_t nvmlEventSetFree ( nvmlEventSet_t set )
-
参数
- set (集合)
- 要释放的事件的引用
- nvmlReturn_t nvmlEventSetWait_v2 ( nvmlEventSet_t set, nvmlEventData_t* data, unsigned int timeoutms )
-
参数
- set (集合)
- 要等待的事件集合的引用
- data (数据)
- 用于返回事件数据的引用
- timeoutms (超时时间ms)
- 注册事件的最大等待时间,以毫秒为单位
返回值
- NVML_SUCCESS 如果数据已被设置
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 data 为 NULL
- NVML_ERROR_TIMEOUT 如果在指定的超时时间内没有事件到达或中断到达
- NVML_ERROR_GPU_IS_LOST 如果 GPU 已从总线上脱落或无法访问
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
等待事件并传递事件
适用于 Fermi 或更新的完全支持的设备。
如果在调用时某些事件已准备好传递,则函数立即返回。如果没有准备好传递的事件,则函数会休眠直到事件到达,但不超过指定的超时时间。在某些情况下,此函数可以在指定的超时时间过去之前返回(例如,当中断到达时)。
在 Windows 上,如果发生 Xid 错误,该函数将返回系统看到的最新 Xid 错误类型。如果在调用 nvmlEventSetWait 之前生成了多个 Xid 错误,则为所有 Xid 错误事件返回最后看到的 Xid 错误类型。
在 Linux 上,每个 Xid 错误事件都将返回关联的事件数据和其他适用信息。
在 MIG 模式下,如果提供了设备句柄,则 API 会报告可用实例的所有事件,前提是调用者具有适当的权限。在缺少所需权限的情况下,仅报告影响所有实例(即整个设备)的事件。
此 API 当前不支持使用 MIG 设备句柄的按实例事件报告。
另请参阅