diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2020-09-30 08:34:48 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2020-09-30 08:34:48 -0700 |
commit | a345b40f77d8d0ff5f677edcd206a96724a7b91b (patch) | |
tree | 0fee173225928f141ac9875801015fffe01f68d3 | |
parent | 8eacee383e41d9f818298fc2decabccbe7959468 (diff) |
-rw-r--r-- | doc/version.mk | 2 | ||||
-rw-r--r-- | samples/version.mk | 2 | ||||
-rw-r--r-- | src/gtk+-2.x/ctkgridlicense.c | 44 | ||||
-rw-r--r-- | src/gtk+-2.x/ctkgridlicense.h | 1 | ||||
-rw-r--r-- | src/libXNVCtrl/version.mk | 2 | ||||
-rw-r--r-- | src/nvml.h | 59 | ||||
-rw-r--r-- | src/version.h | 2 | ||||
-rw-r--r-- | src/version.mk | 2 | ||||
-rw-r--r-- | version.mk | 2 |
9 files changed, 85 insertions, 31 deletions
diff --git a/doc/version.mk b/doc/version.mk index b41f1a9..4ad2bf8 100644 --- a/doc/version.mk +++ b/doc/version.mk @@ -1 +1 @@ -NVIDIA_VERSION = 450.66 +NVIDIA_VERSION = 450.80.02 diff --git a/samples/version.mk b/samples/version.mk index b41f1a9..4ad2bf8 100644 --- a/samples/version.mk +++ b/samples/version.mk @@ -1 +1 @@ -NVIDIA_VERSION = 450.66 +NVIDIA_VERSION = 450.80.02 diff --git a/src/gtk+-2.x/ctkgridlicense.c b/src/gtk+-2.x/ctkgridlicense.c index 52cba46..47e2394 100644 --- a/src/gtk+-2.x/ctkgridlicense.c +++ b/src/gtk+-2.x/ctkgridlicense.c @@ -1660,12 +1660,14 @@ GtkWidget* ctk_manage_grid_license_new(CtrlTarget *target, gtk_container_set_border_width(GTK_CONTAINER(vbox3), 5); ctk_manage_grid_license->isvComputeSupported = is_feature_supported(ctk_manage_grid_license, NV_GRID_LICENSE_FEATURE_TYPE_VCOMPUTE); - if (ctk_manage_grid_license->isvComputeSupported) { + ctk_manage_grid_license->isQuadroSupported = is_feature_supported(ctk_manage_grid_license, NV_GRID_LICENSE_FEATURE_TYPE_QDWS); + if (ctk_manage_grid_license->isvComputeSupported && ctk_manage_grid_license->isQuadroSupported) { ctk_manage_grid_license->radio_btn_vcompute = gtk_radio_button_new_with_label(NULL, ctk_manage_grid_license->productNamevCompute); slist = gtk_radio_button_get_group(GTK_RADIO_BUTTON(ctk_manage_grid_license->radio_btn_vcompute)); + gtk_box_pack_start(GTK_BOX(vbox3), ctk_manage_grid_license->radio_btn_vcompute, FALSE, FALSE, 0); g_object_set_data(G_OBJECT(ctk_manage_grid_license->radio_btn_vcompute), "button_id", - GINT_TO_POINTER(NV_GRID_LICENSE_FEATURE_TYPE_VCOMPUTE)); + GINT_TO_POINTER(NV_GRID_LICENSE_FEATURE_TYPE_VCOMPUTE)); g_signal_connect(G_OBJECT(ctk_manage_grid_license->radio_btn_vcompute), "toggled", G_CALLBACK(license_edition_toggled), @@ -1674,24 +1676,44 @@ GtkWidget* ctk_manage_grid_license_new(CtrlTarget *target, ctk_manage_grid_license->radio_btn_qdws = gtk_radio_button_new_with_label(slist, ctk_manage_grid_license->productNameQvDWS); slist = gtk_radio_button_get_group(GTK_RADIO_BUTTON(ctk_manage_grid_license->radio_btn_qdws)); + gtk_box_pack_start(GTK_BOX(vbox3), ctk_manage_grid_license->radio_btn_qdws, FALSE, FALSE, 0); + g_object_set_data(G_OBJECT(ctk_manage_grid_license->radio_btn_qdws), "button_id", + GINT_TO_POINTER(NV_GRID_LICENSE_FEATURE_TYPE_QDWS)); + + g_signal_connect(G_OBJECT(ctk_manage_grid_license->radio_btn_qdws), "toggled", + G_CALLBACK(license_edition_toggled), + (gpointer) ctk_manage_grid_license); + + } + else if (ctk_manage_grid_license->isvComputeSupported) { + ctk_manage_grid_license->radio_btn_vcompute = gtk_radio_button_new_with_label(NULL, ctk_manage_grid_license->productNamevCompute); + slist = gtk_radio_button_get_group(GTK_RADIO_BUTTON(ctk_manage_grid_license->radio_btn_vcompute)); + + gtk_box_pack_start(GTK_BOX(vbox3), ctk_manage_grid_license->radio_btn_vcompute, FALSE, FALSE, 0); + g_object_set_data(G_OBJECT(ctk_manage_grid_license->radio_btn_vcompute), "button_id", + GINT_TO_POINTER(NV_GRID_LICENSE_FEATURE_TYPE_VCOMPUTE)); + + g_signal_connect(G_OBJECT(ctk_manage_grid_license->radio_btn_vcompute), "toggled", + G_CALLBACK(license_edition_toggled), + (gpointer) ctk_manage_grid_license); } - else { + else if (ctk_manage_grid_license->isQuadroSupported) { ctk_manage_grid_license->radio_btn_qdws = gtk_radio_button_new_with_label(NULL, ctk_manage_grid_license->productNameQvDWS); slist = gtk_radio_button_get_group(GTK_RADIO_BUTTON(ctk_manage_grid_license->radio_btn_qdws)); - } - gtk_box_pack_start(GTK_BOX(vbox3), ctk_manage_grid_license->radio_btn_qdws, FALSE, FALSE, 0); - g_object_set_data(G_OBJECT(ctk_manage_grid_license->radio_btn_qdws), "button_id", - GINT_TO_POINTER(NV_GRID_LICENSE_FEATURE_TYPE_QDWS)); + gtk_box_pack_start(GTK_BOX(vbox3), ctk_manage_grid_license->radio_btn_qdws, FALSE, FALSE, 0); + g_object_set_data(G_OBJECT(ctk_manage_grid_license->radio_btn_qdws), "button_id", + GINT_TO_POINTER(NV_GRID_LICENSE_FEATURE_TYPE_QDWS)); - g_signal_connect(G_OBJECT(ctk_manage_grid_license->radio_btn_qdws), "toggled", - G_CALLBACK(license_edition_toggled), - (gpointer) ctk_manage_grid_license); + g_signal_connect(G_OBJECT(ctk_manage_grid_license->radio_btn_qdws), "toggled", + G_CALLBACK(license_edition_toggled), + (gpointer) ctk_manage_grid_license); + } ctk_manage_grid_license->radio_btn_vapp = gtk_radio_button_new_with_label(slist, GRID_VIRTUAL_APPLICATIONS); gtk_box_pack_start(GTK_BOX(vbox3), ctk_manage_grid_license->radio_btn_vapp, FALSE, FALSE, 0); g_object_set_data(G_OBJECT(ctk_manage_grid_license->radio_btn_vapp), "button_id", - GINT_TO_POINTER(NV_GRID_LICENSE_FEATURE_TYPE_VAPP)); + GINT_TO_POINTER(NV_GRID_LICENSE_FEATURE_TYPE_VAPP)); g_signal_connect(G_OBJECT(ctk_manage_grid_license->radio_btn_vapp), "toggled", G_CALLBACK(license_edition_toggled), diff --git a/src/gtk+-2.x/ctkgridlicense.h b/src/gtk+-2.x/ctkgridlicense.h index 9848ea2..404fc35 100644 --- a/src/gtk+-2.x/ctkgridlicense.h +++ b/src/gtk+-2.x/ctkgridlicense.h @@ -78,6 +78,7 @@ struct _CtkManageGridLicense int licenseStatus; // Current license status to be displayed on UI gboolean isvComputeSupported; // Check if 'NVIDIA Virtual Compute Server' feature is supported + gboolean isQuadroSupported; // Check if 'Quadro Virtual Data Center Workstation' feature is supported }; /* diff --git a/src/libXNVCtrl/version.mk b/src/libXNVCtrl/version.mk index b41f1a9..4ad2bf8 100644 --- a/src/libXNVCtrl/version.mk +++ b/src/libXNVCtrl/version.mk @@ -1 +1 @@ -NVIDIA_VERSION = 450.66 +NVIDIA_VERSION = 450.80.02 @@ -113,6 +113,7 @@ extern "C" { #define nvmlDeviceGetGridLicensableFeatures nvmlDeviceGetGridLicensableFeatures_v3 #define nvmlEventSetWait nvmlEventSetWait_v2 #define nvmlDeviceGetAttributes nvmlDeviceGetAttributes_v2 + #define nvmlComputeInstanceGetInfo nvmlComputeInstanceGetInfo_v2 #define nvmlDeviceGetComputeRunningProcesses nvmlDeviceGetComputeRunningProcesses_v2 #define nvmlDeviceGetGraphicsRunningProcesses nvmlDeviceGetGraphicsRunningProcesses_v2 #endif // #ifndef NVML_NO_UNVERSIONED_FUNC_DEFS @@ -904,6 +905,8 @@ typedef enum { #define NVML_GRID_LICENSE_FEATURE_MAX_COUNT 3 +#define INVALID_GPU_INSTANCE_PROFILE_ID 0xFFFFFFFF + /*! * Macros for vGPU instance's virtualization capabilities bitfield. */ @@ -978,7 +981,7 @@ typedef struct nvmlGridLicensableFeature_st { nvmlGridLicenseFeatureCode_t featureCode; //!< Licensed feature code unsigned int featureState; //!< Non-zero if feature is currently licensed, otherwise zero - char licenseInfo[NVML_GRID_LICENSE_BUFFER_SIZE]; + char licenseInfo[NVML_GRID_LICENSE_BUFFER_SIZE]; //!< Deprecated. char productName[NVML_GRID_LICENSE_BUFFER_SIZE]; unsigned int featureEnabled; //!< Non-zero if feature is enabled, otherwise zero } nvmlGridLicensableFeature_t; @@ -5985,6 +5988,24 @@ nvmlReturn_t DECLDIR nvmlVgpuTypeGetClass(nvmlVgpuTypeId_t vgpuTypeId, char *vgp nvmlReturn_t DECLDIR nvmlVgpuTypeGetName(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeName, unsigned int *size); /** + * Retrieve the GPU Instance Profile ID for the given vGPU type ID. + * The API will return a valid profile ID for MIG backed vGPU types when GPU is configured in MIG mode, else INVALID_GPU_INSTANCE_PROFILE_ID + * is returned. + * + * For Kepler &tm; or newer fully supported devices. + * + * @param vgpuTypeId Handle to vGPU type + * @param gpuInstanceProfileId GPU instance Profile ID + * + * @return + * - \ref NVML_SUCCESS successful completion + * - \ref NVML_ERROR_NOT_SUPPORTED if \a device is not in vGPU Host virtualization mode + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, \a vgpuTypeId is invalid, or \a gpuInstanceProfileId is NULL + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlVgpuTypeGetGpuInstanceProfileId(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *gpuInstanceProfileId); + +/** * Retrieve the device ID of a vGPU type. * * For Kepler &tm; or newer fully supported devices. @@ -7011,10 +7032,10 @@ typedef struct nvmlGpuInstanceProfileInfo_st typedef struct nvmlGpuInstanceInfo_st { - nvmlDevice_t device; //!< Parent device - unsigned int id; //!< Unique instance ID within the device - unsigned int profileId; //!< Unique profile ID within the device - nvmlGpuInstancePlacement_t placement; //!< Placement for this instance + nvmlDevice_t device; //!< Parent device + unsigned int id; //!< Unique instance ID within the device + unsigned int profileId; //!< Unique profile ID within the device + nvmlGpuInstancePlacement_t placement; //!< Placement for this instance } nvmlGpuInstanceInfo_t; typedef struct nvmlGpuInstance_st* nvmlGpuInstance_t; @@ -7036,6 +7057,12 @@ typedef struct nvmlGpuInstance_st* nvmlGpuInstance_t; #define NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED 0x0 //!< All the engines except multiprocessors would be shared #define NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_COUNT 0x1 +typedef struct nvmlComputeInstancePlacement_st +{ + unsigned int start; + unsigned int size; +} nvmlComputeInstancePlacement_t; + typedef struct nvmlComputeInstanceProfileInfo_st { unsigned int id; //!< Unique profile ID within the GPU instance @@ -7051,10 +7078,11 @@ typedef struct nvmlComputeInstanceProfileInfo_st typedef struct nvmlComputeInstanceInfo_st { - nvmlDevice_t device; //!< Parent device - nvmlGpuInstance_t gpuInstance; //!< Parent GPU instance - unsigned int id; //!< Unique instance ID within the GPU instance - unsigned int profileId; //!< Unique profile ID within the GPU instance + nvmlDevice_t device; //!< Parent device + nvmlGpuInstance_t gpuInstance; //!< Parent GPU instance + unsigned int id; //!< Unique instance ID within the GPU instance + unsigned int profileId; //!< Unique profile ID within the GPU instance + nvmlComputeInstancePlacement_t placement; //!< Placement for this instance within the GPU instance's slice range {0, sliceCount} } nvmlComputeInstanceInfo_t; typedef struct nvmlComputeInstance_st* nvmlComputeInstance_t; @@ -7063,7 +7091,6 @@ typedef struct nvmlComputeInstance_st* nvmlComputeInstance_t; * Set MIG mode for the device. * * For newer than Volta &tm; fully supported devices. - * Supported on Linux only. * Requires root user. * * This mode determines whether a GPU instance can be created. @@ -7078,6 +7105,9 @@ typedef struct nvmlComputeInstance_st* nvmlComputeInstance_t; * unbind fails because the device isn't idle, \ref NVML_ERROR_IN_USE would be returned. The caller of this API * is expected to idle the device and retry setting the \a mode. * + * @note On Windows, only disabling MIG mode is supported. \a activationStatus would return \ref + * NVML_ERROR_NOT_SUPPORTED as GPU reset is not supported on Windows through this API. + * * @param device The identifier of the target device * @param mode The mode to be set, \ref NVML_DEVICE_MIG_DISABLE or * \ref NVML_DEVICE_MIG_ENABLE @@ -7096,7 +7126,6 @@ nvmlReturn_t DECLDIR nvmlDeviceSetMigMode(nvmlDevice_t device, unsigned int mode * Get MIG mode for the device. * * For newer than Volta &tm; fully supported devices. - * Supported on Linux only. * * Changing MIG modes may require device unbind or reset. The "pending" MIG mode refers to the target mode following the * next activation trigger. @@ -7205,7 +7234,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetGpuInstanceRemainingCapacity(nvmlDevice_t devi * - \ref NVML_SUCCESS Upon success * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device, \a profile, \a profileId or \a gpuInstance are invalid - * - \ref NVML_ERROR_NOT_SUPPORTED If \a device doesn't have MIG mode enabled + * - \ref NVML_ERROR_NOT_SUPPORTED If \a device doesn't have MIG mode enabled or in vGPU guest * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation * - \ref NVML_ERROR_INSUFFICIENT_RESOURCES If the requested GPU instance could not be created */ @@ -7225,7 +7254,7 @@ nvmlReturn_t DECLDIR nvmlDeviceCreateGpuInstance(nvmlDevice_t device, unsigned i * - \ref NVML_SUCCESS Upon success * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is invalid - * - \ref NVML_ERROR_NOT_SUPPORTED If \a device doesn't have MIG mode enabled + * - \ref NVML_ERROR_NOT_SUPPORTED If \a device doesn't have MIG mode enabled or in vGPU guest * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation * - \ref NVML_ERROR_IN_USE If the GPU instance is in use. This error would be returned if processes * (e.g. CUDA application) or compute instances are active on the @@ -7452,7 +7481,7 @@ nvmlReturn_t DECLDIR nvmlGpuInstanceGetComputeInstanceById(nvmlGpuInstance_t gpu * - \ref NVML_ERROR_INVALID_ARGUMENT If \a computeInstance or \a info are invalid * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation */ -nvmlReturn_t DECLDIR nvmlComputeInstanceGetInfo(nvmlComputeInstance_t computeInstance, nvmlComputeInstanceInfo_t *info); +nvmlReturn_t DECLDIR nvmlComputeInstanceGetInfo_v2(nvmlComputeInstance_t computeInstance, nvmlComputeInstanceInfo_t *info); /** * Test if the given handle refers to a MIG device. @@ -7600,6 +7629,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetGridLicensableFeatures_v2(nvmlDevice_t device, nvmlReturn_t DECLDIR nvmlDeviceRemoveGpu(nvmlPciInfo_t *pciInfo); nvmlReturn_t DECLDIR nvmlEventSetWait(nvmlEventSet_t set, nvmlEventData_t * data, unsigned int timeoutms); nvmlReturn_t DECLDIR nvmlDeviceGetAttributes(nvmlDevice_t device, nvmlDeviceAttributes_t *attributes); +nvmlReturn_t DECLDIR nvmlComputeInstanceGetInfo(nvmlComputeInstance_t computeInstance, nvmlComputeInstanceInfo_t *info); nvmlReturn_t DECLDIR nvmlDeviceGetComputeRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos); nvmlReturn_t DECLDIR nvmlDeviceGetGraphicsRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos); #endif // #ifdef NVML_NO_UNVERSIONED_FUNC_DEFS @@ -7611,6 +7641,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetGraphicsRunningProcesses(nvmlDevice_t device, #undef nvmlDeviceGetGraphicsRunningProcesses #undef nvmlDeviceGetComputeRunningProcesses #undef nvmlDeviceGetAttributes +#undef nvmlComputeInstanceGetInfo #undef nvmlEventSetWait #undef nvmlDeviceGetGridLicensableFeatures #undef nvmlDeviceRemoveGpu diff --git a/src/version.h b/src/version.h index 87ce2ba..b361652 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define NVIDIA_VERSION "450.66" +#define NVIDIA_VERSION "450.80.02" diff --git a/src/version.mk b/src/version.mk index b41f1a9..4ad2bf8 100644 --- a/src/version.mk +++ b/src/version.mk @@ -1 +1 @@ -NVIDIA_VERSION = 450.66 +NVIDIA_VERSION = 450.80.02 @@ -1 +1 @@ -NVIDIA_VERSION = 450.66 +NVIDIA_VERSION = 450.80.02 |