Skip to content

Commit a99a80b

Browse files
committed
Merge branch 'main' into refactor-skyline-to-deepview
2 parents 34d07ad + ea7647c commit a99a80b

File tree

5 files changed

+108
-95
lines changed

5 files changed

+108
-95
lines changed

deepview_profile/analysis/session.py

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -150,45 +150,46 @@ def energy_compute(self) -> pm.EnergyResponse:
150150
for _ in range(iterations):
151151
iteration(*inputs)
152152
energy_measurer.end_measurement()
153-
154-
resp.total_consumption = energy_measurer.total_energy()/float(iterations)
155-
156-
components = []
157-
components_joules = []
158-
159-
if energy_measurer.cpu_energy() is not None:
160-
cpu_component = pm.EnergyConsumptionComponent()
161-
cpu_component.component_type = pm.ENERGY_CPU_DRAM
162-
cpu_component.consumption_joules = energy_measurer.cpu_energy()/float(iterations)
163-
components.append(cpu_component)
164-
components_joules.append(cpu_component.consumption_joules)
165-
else:
166-
cpu_component = pm.EnergyConsumptionComponent()
167-
cpu_component.component_type = pm.ENERGY_CPU_DRAM
168-
cpu_component.consumption_joules = 0.0
169-
components.append(cpu_component)
170-
components_joules.append(cpu_component.consumption_joules)
171-
172-
gpu_component = pm.EnergyConsumptionComponent()
173-
gpu_component.component_type = pm.ENERGY_NVIDIA
174-
gpu_component.consumption_joules = energy_measurer.gpu_energy()/float(iterations)
175-
components.append(gpu_component)
176-
components_joules.append(gpu_component.consumption_joules)
177-
178-
resp.components.extend(components)
179-
180-
# get last 10 runs if they exist
181-
path_to_entry_point = os.path.join(self._project_root, self._entry_point)
182-
past_runs = self._energy_table_interface.get_latest_n_entries_of_entry_point(10, path_to_entry_point)
183-
print(past_runs)
184-
resp.past_measurements.extend(_convert_to_energy_responses(past_runs))
185-
186-
# add current run to database
187-
self._energy_table_interface.add_entry([path_to_entry_point] + components_joules)
188-
189153
except PermissionError as err:
190154
# Remind user to set their CPU permissions
191155
print(err)
156+
157+
resp.total_consumption = energy_measurer.total_energy()/float(iterations)
158+
resp.batch_size = self._batch_size
159+
160+
components = []
161+
components_joules = []
162+
163+
if energy_measurer.cpu_energy() is not None:
164+
cpu_component = pm.EnergyConsumptionComponent()
165+
cpu_component.component_type = pm.ENERGY_CPU_DRAM
166+
cpu_component.consumption_joules = energy_measurer.cpu_energy()/float(iterations)
167+
components.append(cpu_component)
168+
components_joules.append(cpu_component.consumption_joules)
169+
else:
170+
cpu_component = pm.EnergyConsumptionComponent()
171+
cpu_component.component_type = pm.ENERGY_CPU_DRAM
172+
cpu_component.consumption_joules = 0.0
173+
components.append(cpu_component)
174+
components_joules.append(cpu_component.consumption_joules)
175+
176+
gpu_component = pm.EnergyConsumptionComponent()
177+
gpu_component.component_type = pm.ENERGY_NVIDIA
178+
gpu_component.consumption_joules = energy_measurer.gpu_energy()/float(iterations)
179+
components.append(gpu_component)
180+
components_joules.append(gpu_component.consumption_joules)
181+
182+
resp.components.extend(components)
183+
184+
# get last 10 runs if they exist
185+
path_to_entry_point = os.path.join(self._project_root, self._entry_point)
186+
past_runs = self._energy_table_interface.get_latest_n_entries_of_entry_point(10, path_to_entry_point)
187+
resp.past_measurements.extend(_convert_to_energy_responses(past_runs))
188+
189+
# add current run to database
190+
current_entry = [path_to_entry_point] + components_joules
191+
current_entry.append(self._batch_size)
192+
self._energy_table_interface.add_entry(current_entry)
192193
return resp
193194

194195
def habitat_compute_threshold(self, runnable, context):
@@ -602,5 +603,8 @@ def _convert_to_energy_responses(entries: list)-> List[pm.EnergyResponse]:
602603

603604
energy_response.total_consumption = gpu_component.consumption_joules+cpu_component.consumption_joules
604605
energy_response.components.extend([cpu_component, gpu_component])
606+
607+
energy_response.batch_size = entry[3]
605608
energy_response_list.append(energy_response)
609+
606610
return energy_response_list

deepview_profile/db/database.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
66
DB_PATH = os.path.join(BASE_DIR, "deepview.sqlite3")
77

8-
98
class DatabaseInterface:
109
def __init__(self, database_name=DB_PATH) -> None:
1110
self.connection = sqlite3.connect(database_name, detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
@@ -16,6 +15,7 @@ def create_energy_table(self) -> None:
1615
entry_point TEXT, \
1716
cpu_component REAL, \
1817
gpu_component REAL, \
18+
batch_size INT, \
1919
ts TIMESTAMP \
2020
);")
2121

@@ -31,17 +31,18 @@ def is_valid_entry(entry: list) -> bool:
3131
and the types match the columns. Note that timestamp is not part of the entry.
3232
Returns True if it is valid, else False
3333
'''
34-
return len(entry) == 3 and type(entry[0]) == str and type(entry[1]) == float \
35-
and type(entry[2]) == float
34+
return len(entry) == 4 and type(entry[0]) == str and type(entry[1]) == float \
35+
and type(entry[2]) == float and type(entry[3]) == int
3636

3737
@staticmethod
3838
def is_valid_entry_with_timestamp(entry: list) -> bool:
3939
'''
4040
Validates an entry in the Energy table by testing if the length is 4,
4141
and the types match the columns. Returns True if it is valid, else False
4242
'''
43-
return len(entry) == 4 and type(entry[0]) == str and type(entry[1]) == float \
44-
and type(entry[2]) == float and type(entry[3]) == datetime.datetime
43+
return len(entry) == 5 and type(entry[0]) == str and type(entry[1]) == float \
44+
and type(entry[2]) == float and type(entry[3]) == int \
45+
and type(entry[4]) == datetime.datetime
4546

4647
def add_entry(self, entry: list) -> bool:
4748
'''
@@ -53,14 +54,14 @@ def add_entry(self, entry: list) -> bool:
5354
try:
5455
entry.append(datetime.datetime.now())
5556
cursor = self.database_connection.cursor()
56-
cursor.execute("INSERT INTO ENERGY VALUES(?, ?, ?, ?)", entry)
57+
cursor.execute("INSERT INTO ENERGY VALUES(?, ?, ?, ?, ?)", entry)
5758
self.database_connection.commit()
5859
return True
5960
except sqlite3.IntegrityError as e:
6061
print(e)
6162
return False
6263
else:
63-
return True
64+
return False
6465

6566
def get_latest_n_entries_of_entry_point(self, n: int, entry_point: str) -> list:
6667
'''

0 commit comments

Comments
 (0)