@@ -135,6 +135,8 @@ def persistence_mode(self, new_mode):
135
135
raise ValueError (
136
136
"Illegal value for persistence mode, should be either 0 or 1"
137
137
)
138
+ if self .persistence_mode == new_mode :
139
+ return
138
140
try :
139
141
pynvml .nvmlDeviceSetPersistenceMode (self .dev , new_mode )
140
142
self ._persistence_mode = pynvml .nvmlDeviceGetPersistenceMode (self .dev )
@@ -168,21 +170,15 @@ def set_clocks(self, mem_clock, gr_clock):
168
170
self .nvidia_smi ,
169
171
"-i" ,
170
172
str (self .id ),
171
- "--lock-gpu-clocks=" + str (gr_clock ) + "," + str (gr_clock ),
172
173
]
173
- subprocess .run (args , check = True )
174
- args = [
175
- "sudo" ,
176
- self .nvidia_smi ,
177
- "-i" ,
178
- str (self .id ),
179
- "--lock-memory-clocks=" + str (mem_clock ) + "," + str (mem_clock ),
180
- ]
181
- subprocess .run (args , check = True )
174
+ command_set_mem_clocks = f"--lock-memory-clocks={ str (mem_clock )} ,{ str (mem_clock )} "
175
+ command_set_gpu_clocks = f"--lock-gpu-clocks={ str (gr_clock )} ,{ str (gr_clock )} "
176
+ subprocess .run (args + [command_set_gpu_clocks ], check = True )
177
+ subprocess .run (args + [command_set_mem_clocks ], check = True )
182
178
else :
183
179
try :
184
- if self .persistence_mode != 0 :
185
- self .persistence_mode = 0
180
+ if self .persistence_mode != 1 :
181
+ self .persistence_mode = 1
186
182
except Exception :
187
183
pass
188
184
try :
@@ -233,24 +229,20 @@ def reset_clocks(self):
233
229
if (
234
230
gr_app_clock != self .gr_clock_default
235
231
or mem_app_clock != self .mem_clock_default
236
- ):
232
+ ):
237
233
self .set_clocks (self .mem_clock_default , self .gr_clock_default )
238
234
239
235
@property
240
236
def gr_clock (self ):
241
237
"""Control the graphics clock (may require permission), only values compatible with the memory clock can be set directly."""
242
- return pynvml .nvmlDeviceGetClockInfo (self .dev , pynvml .NVML_CLOCK_GRAPHICS )
238
+ if self .use_locked_clocks :
239
+ return pynvml .nvmlDeviceGetClockInfo (self .dev , pynvml .NVML_CLOCK_GRAPHICS )
240
+ else :
241
+ return pynvml .nvmlDeviceGetApplicationsClock (self .dev , pynvml .NVML_CLOCK_GRAPHICS )
243
242
244
243
@gr_clock .setter
245
244
def gr_clock (self , new_clock ):
246
- cur_clock = (
247
- pynvml .nvmlDeviceGetClockInfo (self .dev , pynvml .NVML_CLOCK_GRAPHICS )
248
- if self .use_locked_clocks
249
- else pynvml .nvmlDeviceGetApplicationsClock (
250
- self .dev , pynvml .NVML_CLOCK_GRAPHICS
251
- )
252
- )
253
- if new_clock != cur_clock :
245
+ if new_clock != self .gr_clock :
254
246
self .set_clocks (self .mem_clock , new_clock )
255
247
256
248
@property
@@ -268,12 +260,8 @@ def mem_clock(self):
268
260
269
261
@mem_clock .setter
270
262
def mem_clock (self , new_clock ):
271
- cur_clock = (
272
- pynvml .nvmlDeviceGetClockInfo (self .dev , pynvml .NVML_CLOCK_MEM )
273
- if self .use_locked_clocks
274
- else pynvml .nvmlDeviceGetApplicationsClock (self .dev , pynvml .NVML_CLOCK_MEM )
275
- )
276
- if new_clock != cur_clock :
263
+ if new_clock != self .mem_clock :
264
+ print (f"mem_clock setter calls set_clocks because { new_clock = } != { cur_clock = } " )
277
265
self .set_clocks (new_clock , self .gr_clock )
278
266
279
267
@property
0 commit comments