summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2020-09-30 08:34:48 -0700
committerAaron Plattner <aplattner@nvidia.com>2020-09-30 08:34:48 -0700
commita345b40f77d8d0ff5f677edcd206a96724a7b91b (patch)
tree0fee173225928f141ac9875801015fffe01f68d3
parent8eacee383e41d9f818298fc2decabccbe7959468 (diff)
450.80.02450.80.02450
-rw-r--r--doc/version.mk2
-rw-r--r--samples/version.mk2
-rw-r--r--src/gtk+-2.x/ctkgridlicense.c44
-rw-r--r--src/gtk+-2.x/ctkgridlicense.h1
-rw-r--r--src/libXNVCtrl/version.mk2
-rw-r--r--src/nvml.h59
-rw-r--r--src/version.h2
-rw-r--r--src/version.mk2
-rw-r--r--version.mk2
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
diff --git a/src/nvml.h b/src/nvml.h
index 51961c0..c76876d 100644
--- a/src/nvml.h
+++ b/src/nvml.h
@@ -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
diff --git a/version.mk b/version.mk
index b41f1a9..4ad2bf8 100644
--- a/version.mk
+++ b/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 450.66
+NVIDIA_VERSION = 450.80.02