code: def nvmlDeviceGetUtilizationRates(handle):
      r
      c_util = c_nvmlUtilization_t()
      fn = _nvmlGetFunctionPointer("nvmlDeviceGetUtilizationRates")
      ret = fn(handle, byref(c_util))
      _nvmlCheckReturn(ret)
      return bytes_to_str(c_util)
docs: r"""
      /**
       * Retrieves the current utilization rates for the device's major subsystems.
       *
       * For Fermi &tm; or newer fully supported devices.
       *
       * See \ref nvmlUtilization_t for details on available utilization rates.
       *
       * \note During driver initialization when ECC is enabled one can see high GPU and Memory Utilization readings.
       *       This is caused by ECC Memory Scrubbing mechanism that is performed during driver initialization.
       *
       * @param device                               The identifier of the target device
       * @param utilization                          Reference in which to return the utilization information
       *
       * @return
       *         - \ref NVML_SUCCESS                 if \a utilization has been populated
       *         - \ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized
       *         - \ref NVML_ERROR_INVALID_ARGUMENT  if \a device is invalid or \a utilization is NULL
       *         - \ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature
       *         - \ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible
       *         - \ref NVML_ERROR_UNKNOWN           on any unexpected error
       */
      nvmlReturn_t DECLDIR nvmlDeviceGetUtilizationRates