summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2021-11-18 12:35:58 +0100
committerDaniel Friesel <daniel.friesel@uos.de>2021-11-18 12:35:58 +0100
commit323a99b6bdabce8a157c9d0768bdfcf52b265f04 (patch)
tree64fa6c97e1a8a78fb0d26af972f19dd060f25662
parent91563e84617d096058f92a4c074bad0e3a1e0b12 (diff)
add model generation time to dataref export
-rwxr-xr-xbin/analyze-archive.py7
-rwxr-xr-xbin/analyze-kconfig.py23
2 files changed, 23 insertions, 7 deletions
diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py
index 0835c90..c66570e 100755
--- a/bin/analyze-archive.py
+++ b/bin/analyze-archive.py
@@ -42,6 +42,7 @@ import logging
import random
import re
import sys
+import time
import dfatool.cli
from dfatool import plotter
from dfatool.loader import RawData, pta_trace_to_aggregate
@@ -640,6 +641,7 @@ if __name__ == "__main__":
by_name, z_limit=args.z_score, remove_outliers=args.remove_outliers
)
+ constructor_start = time.time()
model = PTAModel(
by_name,
parameters,
@@ -649,6 +651,7 @@ if __name__ == "__main__":
pta=pta,
pelt=args.with_substates,
)
+ constructor_duration = time.time() - constructor_start
if xv_method:
xv = CrossValidator(PTAModel, by_name, parameters, arg_count)
@@ -829,9 +832,11 @@ if __name__ == "__main__":
print("--- param model ---")
# get_fitted_sub -> with sub-state detection and modeling
+ fit_start_time = time.time()
param_model, param_info = model.get_fitted(
safe_functions_enabled=safe_functions_enabled
)
+ fit_duration = time.time() - fit_start_time
if "paramdetection" in show_models or "all" in show_models:
for name in model.names:
@@ -1058,6 +1063,8 @@ if __name__ == "__main__":
if args.export_dref:
dref = raw_data.to_dref()
dref.update(model.to_dref(static_quality, lut_quality, analytic_quality))
+ dref["constructor duration"] = (constructor_duration, r"\second")
+ dref["regression duration"] = (fit_duration, r"\second")
with open(args.export_dref, "w") as f:
for k, v in dref.items():
if type(v) is not tuple:
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py
index be52752..55bf53b 100755
--- a/bin/analyze-kconfig.py
+++ b/bin/analyze-kconfig.py
@@ -12,6 +12,7 @@ import json
import kconfiglib
import logging
import os
+import time
import numpy as np
@@ -146,13 +147,6 @@ def main():
if args.show_nop_symbols:
show_nop_symbols(attributes)
- if args.sample_size:
- shuffled_data_indices = np.random.permutation(
- np.arange(len(attributes.data))
- )
- sample_indices = shuffled_data_indices[: args.sample_size]
- raise RuntimeError("Not Implemented")
-
observations = list()
for param, attr in attributes.data:
@@ -165,6 +159,14 @@ def main():
}
)
+ if args.sample_size:
+ shuffled_data_indices = np.random.permutation(np.arange(len(observations)))
+ sample_indices = shuffled_data_indices[: args.sample_size]
+ new_observations = list()
+ for sample_index in sample_indices:
+ new_observations.append(observations[sample_index])
+ observations = new_observations
+
if args.export_observations:
import lzma
@@ -205,6 +207,7 @@ def main():
else:
max_std = None
+ constructor_start = time.time()
model = AnalyticModel(
by_name,
parameter_names,
@@ -212,6 +215,7 @@ def main():
force_tree=args.force_tree,
max_std=max_std,
)
+ constructor_duration = time.time() - constructor_start
if args.cross_validate:
xv_method, xv_count = args.cross_validate.split(":")
@@ -237,7 +241,10 @@ def main():
else:
logging.warning(f"Skipping LUT model: {e}")
lut_model = None
+
+ fit_start_time = time.time()
param_model, param_info = model.get_fitted()
+ fit_duration = time.time() - fit_start_time
if xv_method == "montecarlo":
static_quality = xv.montecarlo(lambda m: m.get_static(), xv_count)
@@ -326,6 +333,8 @@ def main():
if args.export_dref:
dref.update(model.to_dref(static_quality, lut_quality, analytic_quality))
+ dref["constructor duration"] = (constructor_duration, r"\second")
+ dref["regression duration"] = (fit_duration, r"\second")
with open(args.export_dref, "w") as f:
for k, v in dref.items():
if type(v) is not tuple: