4.23. vGPU API
本章介绍与 NVIDIA vGPU 软件产品相关的操作。
函数
- nvmlReturn_t nvmlDeviceGetGridLicensableFeatures_v4 ( nvmlDevice_t device, nvmlGridLicensableFeatures_t* pGridLicensableFeatures )
- nvmlReturn_t nvmlDeviceGetHostVgpuMode ( nvmlDevice_t device, nvmlHostVgpuMode_t* pHostVgpuMode )
- nvmlReturn_t nvmlDeviceGetVgpuHeterogeneousMode ( nvmlDevice_t device, nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode )
- nvmlReturn_t nvmlDeviceGetVgpuTypeCreatablePlacements ( nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t* pPlacementList )
- nvmlReturn_t nvmlDeviceGetVgpuTypeSupportedPlacements ( nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t* pPlacementList )
- nvmlReturn_t nvmlDeviceGetVirtualizationMode ( nvmlDevice_t device, nvmlGpuVirtualizationMode_t* pVirtualMode )
- nvmlReturn_t nvmlDeviceSetVgpuCapabilities ( nvmlDevice_t device, nvmlDeviceVgpuCapability_t capability, nvmlEnableState_t state )
- nvmlReturn_t nvmlDeviceSetVgpuHeterogeneousMode ( nvmlDevice_t device, const nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode )
- nvmlReturn_t nvmlDeviceSetVirtualizationMode ( nvmlDevice_t device, nvmlGpuVirtualizationMode_t virtualMode )
- nvmlReturn_t nvmlVgpuInstanceGetPlacementId ( nvmlVgpuInstance_t vgpuInstance, nvmlVgpuPlacementId_t* pPlacement )
- nvmlReturn_t nvmlVgpuInstanceGetRuntimeStateSize ( nvmlVgpuInstance_t vgpuInstance, nvmlVgpuRuntimeState_t* pState )
- nvmlReturn_t nvmlVgpuTypeGetFbReservation ( nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* fbReservation )
- nvmlReturn_t nvmlVgpuTypeGetGspHeapSize ( nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* gspHeapSize )
函数
- nvmlReturn_t nvmlDeviceGetGridLicensableFeatures_v4 ( nvmlDevice_t device, nvmlGridLicensableFeatures_t* pGridLicensableFeatures )
-
参数
- device
- 目标设备的标识符
- pGridLicensableFeatures
- 指向结构的指针,其中返回 vGPU 软件可授权的功能
返回值
- NVML_SUCCESS 如果成功检索到可授权的功能
- NVML_ERROR_INVALID_ARGUMENT 如果 pGridLicensableFeatures 为 NULL
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
检索 vGPU 软件可授权的功能。
确定系统是否支持 vGPU 软件许可。如果支持,则返回可授权功能列表及其当前许可状态。
- nvmlReturn_t nvmlDeviceGetHostVgpuMode ( nvmlDevice_t device, nvmlHostVgpuMode_t* pHostVgpuMode )
-
参数
- device
- 目标设备的标识符
- pHostVgpuMode
- 用于返回当前 vGPU 模式的引用
返回值
- NVML_SUCCESS 如果成功检索到设备的 vGPU 模式
- NVML_ERROR_INVALID_ARGUMENT 如果设备句柄为 0 或 pVgpuMode 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能。
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
查询 vGPU 支持的设备上是否支持 SR-IOV 主机操作。
检查设备和驱动程序是否支持 SR-IOV 主机功能,如果这两个条件都为真,则指示设备处于 SR-IOV 模式。
- nvmlReturn_t nvmlDeviceGetVgpuHeterogeneousMode ( nvmlDevice_t device, nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode )
-
参数
- device
- 目标设备的标识符
- pHeterogeneousMode
- 指向调用者提供的 nvmlVgpuHeterogeneousMode_t 结构的指针
返回值
- NVML_SUCCESS 成功时
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效或 pHeterogeneousMode 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果 pHeterogeneousMode 的版本无效
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
获取设备的 vGPU 异构模式。
在异构模式下,vGPU 可以同时托管具有不同帧缓冲区大小的时间分片 vGPU。
成功返回时,该函数返回 pHeterogeneousMode->mode,其中包含当前的 vGPU 异构模式。pHeterogeneousMode->version 是结构 nvmlVgpuHeterogeneousMode_t 的版本号,调用者应设置正确的版本号以检索 vGPU 异构模式。pHeterogeneousMode->mode 可以是 NVML_FEATURE_ENABLED 或 NVML_FEATURE_DISABLED。
- nvmlReturn_t nvmlDeviceGetVgpuTypeCreatablePlacements ( nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t* pPlacementList )
-
参数
- device
- 目标设备的标识符
- vgpuTypeId
- vGPU 类型句柄。vGPU 类型 ID
- pPlacementList
- 指向 vGPU 放置结构 nvmlVgpuPlacementList_t 列表的指针
返回值
- NVML_SUCCESS 成功时
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device 或 vgpuTypeId 无效,或者 pPlacementList 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果 device 或 vgpuTypeId 不受支持
- NVML_ERROR_NO_PERMISSION 如果用户没有执行此操作的权限
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果 pPlacementList 的版本无效
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
查询 vGPU 类型的可创建 vGPU 放置 ID。
vgpuTypeId 指示的 vGPU 类型 ID 的可创建 vGPU 放置 ID 数组在调用者提供的 pPlacementList->placementIds 缓冲区中返回。placementIds 数组所需的内存应根据 vGPU 类型的最大实例数进行分配,可以通过 nvmlVgpuTypeGetMaxInstances() 查询。如果调用者提供的计数不足,该函数将返回 NVML_ERROR_INSUFFICIENT_SIZE 以及 pPlacementList->count 中所需的条目数。然后,调用者应重新分配大小为 pPlacementList->count * sizeof(pPlacementList->placementIds) 的缓冲区,并再次调用该函数。
可创建的 vGPU 放置 ID 可能会随时间而变化,因为对于 vGPU 实例正在运行的 vGPU 类型可能存在限制。
- nvmlReturn_t nvmlDeviceGetVgpuTypeSupportedPlacements ( nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t* pPlacementList )
-
参数
- device
- 目标设备的标识符
- vgpuTypeId
- vGPU 类型句柄。vGPU 类型 ID
- pPlacementList
- 指向 vGPU 放置结构 nvmlVgpuPlacementList_t 的指针
返回值
- NVML_SUCCESS 成功时
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device 或 vgpuTypeId 无效,或者 pPlacementList 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果 device 或 vgpuTypeId 不受支持
- NVML_ERROR_NO_PERMISSION 如果用户没有执行此操作的权限
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果 pPlacementList 的版本无效
- NVML_ERROR_INSUFFICIENT_SIZE 如果缓冲区太小,则元素计数在 pPlacementList->count 中返回
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
查询 vGPU 类型的受支持 vGPU 放置 ID。
该函数在调用者在 pPlacementList->placementIds 处提供的缓冲区中返回指定 vGPU 类型 ID 的受支持 vGPU 放置 ID 数组。placementIds 数组所需的内存必须根据 vGPU 类型实例的最大数量进行分配,这可以通过 nvmlVgpuTypeGetMaxInstances() 检索。如果调用者提供的计数不足,该函数将返回 NVML_ERROR_INSUFFICIENT_SIZE 以及 pPlacementList->count 中所需的条目数。然后,调用者应重新分配大小为 pPlacementList->count * sizeof(pPlacementList->placementIds) 的缓冲区,并再次调用该函数。
要获取同构放置 ID 列表,调用者需要将 pPlacementList->mode 设置为 NVML_VGPU_PGPU_HOMOGENEOUS_MODE。对于异构放置 ID,pPlacementList->mode 应设置为 NVML_VGPU_PGPU_HETEROGENEOUS_MODE。默认情况下,返回异构放置 ID 列表。
- nvmlReturn_t nvmlDeviceGetVirtualizationMode ( nvmlDevice_t device, nvmlGpuVirtualizationMode_t* pVirtualMode )
-
参数
- device
- 目标设备的标识符
- pVirtualMode
- 虚拟化模式的引用。NVML_GPU_VIRTUALIZATION_? 之一
返回值
- NVML_SUCCESS 如果获取到 pVirtualMode
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效或 pVirtualMode 为 NULL
- NVML_ERROR_GPU_IS_LOST 如果目标 GPU 已从总线上脱落或无法访问
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
此方法用于获取与 GPU 对应的虚拟化模式。
适用于 Kepler 或更新的完全支持的设备。
- nvmlReturn_t nvmlDeviceSetVgpuCapabilities ( nvmlDevice_t device, nvmlDeviceVgpuCapability_t capability, nvmlEnableState_t state )
-
参数
- device
- 目标设备的标识符
- capability
- 指定要设置的 nvmlDeviceVgpuCapability_t
- state
- 目标功能模式
返回值
- NVML_SUCCESS 成功完成
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效、功能无效或状态无效
- NVML_ERROR_NOT_SUPPORTED API 在当前状态下不受支持,或者设备未处于 vGPU 模式
- NVML_ERROR_UNKNOWN 在任何意外错误时
- nvmlReturn_t nvmlDeviceSetVgpuHeterogeneousMode ( nvmlDevice_t device, const nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode )
-
参数
- device
- 目标设备的标识符
- pHeterogeneousMode
- 指向调用者提供的 nvmlVgpuHeterogeneousMode_t 结构的指针
返回值
- NVML_SUCCESS 成功时
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device 或 pHeterogeneousMode 为 NULL,或者 pHeterogeneousMode->mode 无效
- NVML_ERROR_IN_USE 如果设备正在使用中
- NVML_ERROR_NO_PERMISSION 如果用户没有执行此操作的权限
- NVML_ERROR_NOT_SUPPORTED 如果启用了 MIG 或设备不支持此功能
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果 pHeterogeneousMode 的版本无效
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
启用或禁用设备的 vGPU 异构模式。
在异构模式下,vGPU 可以同时托管具有不同帧缓冲区大小的时间分片 vGPU。
API 将在激活失败时返回相应的错误代码。例如,如果设备上有任何 vGPU 实例处于活动状态,则异构模式设置将失败,并显示错误 NVML_ERROR_IN_USE。此 API 的调用者应关闭 vGPU VM 并重试设置模式。成功返回时,该函数使用用户提供的 pHeterogeneousMode->mode 更新 vGPU 异构模式。pHeterogeneousMode->version 是结构 nvmlVgpuHeterogeneousMode_t 的版本号,调用者应设置正确的版本号以设置 vGPU 异构模式。
- nvmlReturn_t nvmlDeviceSetVirtualizationMode ( nvmlDevice_t device, nvmlGpuVirtualizationMode_t virtualMode )
-
参数
- device
- 目标设备的标识符
- virtualMode
- 虚拟化模式。NVML_GPU_VIRTUALIZATION_? 之一
返回值
- NVML_SUCCESS 如果设置了 virtualMode
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效或 virtualMode 为 NULL
- NVML_ERROR_GPU_IS_LOST 如果目标 GPU 已从总线上脱落或无法访问
- NVML_ERROR_NOT_SUPPORTED 如果不支持虚拟化模式的设置。
- NVML_ERROR_NO_PERMISSION 如果不允许此客户端设置虚拟化模式。
描述
此方法用于设置与 GPU 对应的虚拟化模式。
适用于 Kepler 或更新的完全支持的设备。
- nvmlReturn_t nvmlVgpuInstanceGetPlacementId ( nvmlVgpuInstance_t vgpuInstance, nvmlVgpuPlacementId_t* pPlacement )
-
参数
- vgpuInstance
- 目标 vGPU 实例的标识符
- pPlacement
- 指向 vGPU 放置 ID 结构 nvmlVgpuPlacementId_t 的指针
返回值
- NVML_SUCCESS 如果信息检索成功
- NVML_ERROR_NOT_FOUND 如果 vgpuInstance 与有效的活动 vGPU 实例不匹配
- NVML_ERROR_INVALID_ARGUMENT 如果 vgpuInstance 无效或 pPlacement 为 NULL
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果 pPlacement 的版本无效
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
查询活动 vGPU 实例的放置 ID。
当处于 vGPU 异构模式时,此函数返回有效的放置 ID 作为 pPlacement->placementId,否则返回 NVML_INVALID_VGPU_PLACEMENT_ID。pPlacement->version 是结构 nvmlVgpuPlacementId_t 的版本号,调用者应设置正确的版本号以获取 vGPU 实例 vgpuInstance 的放置 ID。
- nvmlReturn_t nvmlVgpuInstanceGetRuntimeStateSize ( nvmlVgpuInstance_t vgpuInstance, nvmlVgpuRuntimeState_t* pState )
-
参数
- vgpuInstance
- 目标 vGPU 实例的标识符
- pState
- 指向 vGPU 运行时状态结构的指针 nvmlVgpuRuntimeState_t
返回值
- NVML_SUCCESS 如果信息检索成功
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 vgpuInstance 无效,或者 pState 为 NULL
- NVML_ERROR_NOT_FOUND 如果 vgpuInstance 与系统上有效的活动 vGPU 实例不匹配
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果 pState 的版本无效
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
检索 vGPU 实例当前使用的运行时状态大小
此大小表示 vGPU 实例在标准操作期间使用的最大内存数据大小。此测量不包括分配给 vGPU 实例的帧缓冲区 (FB) 数据大小。
适用于 Maxwell 或更新的完全支持的设备。
- nvmlReturn_t nvmlVgpuTypeGetFbReservation ( nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* fbReservation )
-
参数
- vgpuTypeId
- vGPU 类型句柄
- fbReservation
- 用于返回帧缓冲区预留的引用
返回值
- NVML_SUCCESS 成功完成
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 vgpuTypeId 无效,或者 fbReservation 为 NULL
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
以字节为单位检索 vGPU 类型的静态帧缓冲区预留
- nvmlReturn_t nvmlVgpuTypeGetGspHeapSize ( nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* gspHeapSize )
-
参数
- vgpuTypeId
- vGPU 类型句柄
- gspHeapSize
- 用于返回 GSP 堆大小值的引用
返回值
- NVML_SUCCESS 成功完成
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 vgpuTypeId 无效,或者 gspHeapSize 为 NULL
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
以字节为单位检索 vGPU 类型的静态 GSP 堆大小