def __init__(self, id=0): """Create object to control device using NVML""" pynvml.nvmlInit() self.dev = pynvml.nvmlDeviceGetHandleByIndex(id) try: self._pwr_limit = pynvml.nvmlDeviceGetPowerManagementLimit( self.dev) self.pwr_constraints = pynvml.nvmlDeviceGetPowerManagementLimitConstraints( self.dev) except pynvml.NVMLError_NotSupported: self._pwr_limit = None self.pwr_constraints = [ 1, 0 ] # inverted range to make all range checks fail try: self._persistence_mode = pynvml.nvmlDeviceGetPersistenceMode( self.dev) except pynvml.NVMLError_NotSupported: self._persistence_mode = None try: self._auto_boost = pynvml.nvmlDeviceGetAutoBoostedClocksEnabled( self.dev)[0] # returns [isEnabled, isDefaultEnabled] except pynvml.NVMLError_NotSupported: self._auto_boost = None try: self.gr_clock_default = pynvml.nvmlDeviceGetDefaultApplicationsClock( self.dev, pynvml.NVML_CLOCK_GRAPHICS) self.sm_clock_default = pynvml.nvmlDeviceGetDefaultApplicationsClock( self.dev, pynvml.NVML_CLOCK_SM) self.mem_clock_default = pynvml.nvmlDeviceGetDefaultApplicationsClock( self.dev, pynvml.NVML_CLOCK_MEM) self.supported_mem_clocks = pynvml.nvmlDeviceGetSupportedMemoryClocks( self.dev) #gather the supported gr clocks for each supported mem clock into a dict self.supported_gr_clocks = dict() for mem_clock in self.supported_mem_clocks: supported_gr_clocks = pynvml.nvmlDeviceGetSupportedGraphicsClocks( self.dev, mem_clock) self.supported_gr_clocks[mem_clock] = supported_gr_clocks except pynvml.NVMLError_NotSupported: self.gr_clock_default = None self.sm_clock_default = None self.mem_clock_default = None self.supported_mem_clocks = [] self.supported_gr_clocks = dict()
def Get_GpuInfo(deviceCount): gpu_dict = {} tmp_dict = {} for i in range(0, deviceCount): tmp_dict = {} handle = pn.nvmlDeviceGetHandleByIndex(i) #获得某一个ID 的gpu句柄 pciInfo = pn.nvmlDeviceGetPciInfo(handle) #检索此设备的PCI属性 gpu_id= pciInfo.busId product_name=pn.nvmlDeviceGetName(handle) #检索此设备名称 try: mode=pn.nvmlDeviceGetPersistenceMode(handle) #检索与此设备关联的持久性模式,0:Disable except pn.NVMLError, err: mode='NA' try: Current_driver_model = pn.nvmlDeviceGetCurrentDriverModel(handle) #检索当前驱动模式 except pn.NVMLError, err: Current_driver_model='NA'
def persistence_mode(self, new_mode): if not new_mode in [0, 1]: raise ValueError( "Illegal value for persistence mode, should be either 0 or 1") pynvml.nvmlDeviceSetPersistenceMode(self.dev, new_mode) self._persistence_mode = pynvml.nvmlDeviceGetPersistenceMode(self.dev)