Skip to content

Commit 8883021

Browse files
simplified code, break if persistence mode cant be set
1 parent 1091513 commit 8883021

File tree

1 file changed

+15
-22
lines changed

1 file changed

+15
-22
lines changed

kernel_tuner/observers/nvml.py

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import re
22
import subprocess
33
import time
4+
from warnings import warn
45

56
import numpy as np
67

@@ -156,43 +157,35 @@ def set_clocks(self, mem_clock, gr_clock):
156157
raise ValueError("Illegal value for memory clock")
157158
if gr_clock not in self.supported_gr_clocks[mem_clock]:
158159
raise ValueError(f"Graphics clock incompatible with memory clock ({mem_clock}), compatible graphics clocks: {self.supported_gr_clocks[mem_clock]}")
159-
self.modified_clocks = True
160+
161+
# Check whether persistence mode is set. Without persistence mode, setting the clocks is not meaningful
162+
# I deliberately removed the try..except clause here, if setting persistence mode fails, setting the clocks should fail
163+
if self.persistence_mode != 1:
164+
self.persistence_mode = 1
165+
160166
if self.use_locked_clocks:
161-
if self.persistence_mode != 1:
162-
self.persistence_mode = 1
163167
try:
164168
pynvml.nvmlDeviceSetGpuLockedClocks(self.dev, gr_clock, gr_clock)
165169
pynvml.nvmlDeviceSetMemoryLockedClocks(self.dev, mem_clock, mem_clock)
166170
except pynvml.NVMLError_NoPermission:
167171
if self.nvidia_smi:
168-
args = [
169-
"sudo",
170-
self.nvidia_smi,
171-
"-i",
172-
str(self.id),
173-
]
172+
args = ["sudo", self.nvidia_smi, "-i", str(self.id)]
174173
command_set_mem_clocks = f"--lock-memory-clocks={str(mem_clock)},{str(mem_clock)}"
175174
command_set_gpu_clocks = f"--lock-gpu-clocks={str(gr_clock)},{str(gr_clock)}"
176175
subprocess.run(args + [command_set_gpu_clocks], check=True)
177176
subprocess.run(args + [command_set_mem_clocks], check=True)
178177
else:
179-
try:
180-
if self.persistence_mode != 1:
181-
self.persistence_mode = 1
182-
except Exception:
183-
pass
184178
try:
185179
pynvml.nvmlDeviceSetApplicationsClocks(self.dev, mem_clock, gr_clock)
186180
except pynvml.NVMLError_NoPermission:
187181
if self.nvidia_smi:
188-
args = [
189-
"sudo",
190-
self.nvidia_smi,
191-
"-i",
192-
str(self.id),
193-
"--applications-clocks=" + str(mem_clock) + "," + str(gr_clock),
194-
]
195-
subprocess.run(args, check=True)
182+
args = ["sudo", self.nvidia_smi, "-i", str(self.id)]
183+
command_set_clocks = f"--applications-clocks={str(mem_clock)},{str(gr_clock)}"
184+
subprocess.run(args + command_set_clocks, check=True)
185+
186+
# Store the fact that we have modified the clocks
187+
self.modified_clocks = True
188+
196189

197190
def reset_clocks(self):
198191
"""Reset the clocks to the default clock if the device uses a non default clock."""

0 commit comments

Comments
 (0)