Skip to content

Commit 54db6d2

Browse files
committed
Record system info and date time in JSON output
1 parent dfaa569 commit 54db6d2

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

benchmarks/benchmarking.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,14 @@ def mean(x, n):
6060
"""
6161

6262
import argparse
63+
import datetime
6364
import inspect
6465
import json
66+
import platform
6567
import timeit
6668
from ast import literal_eval
6769
from functools import partial
70+
from importlib.metadata import PackageNotFoundError, version
6871
from itertools import product
6972
from pathlib import Path
7073

@@ -80,6 +83,14 @@ class SkipBenchmarkException(Exception):
8083
"""Exception to be raised to skip benchmark for some parameter set."""
8184

8285

86+
def _get_version_or_none(package_name):
87+
"""Get installed version of package or `None` if package not found."""
88+
try:
89+
return version(package_name)
90+
except PackageNotFoundError:
91+
return None
92+
93+
8394
def skip(message):
8495
"""Skip benchmark for a particular parameter set with explanatory message.
8596
@@ -319,6 +330,25 @@ def parse_args_collect_and_run_benchmarks(module=None):
319330
run_once_and_discard=args.run_once_and_discard,
320331
)
321332
if args.output_file is not None:
333+
package_versions = {
334+
f"{package}_version": _get_version_or_none(package)
335+
for package in ("s2fft", "jax", "numpy")
336+
}
337+
system_info = {
338+
"architecture": platform.architecture(),
339+
"machine": platform.machine(),
340+
"node": platform.node(),
341+
"processor": platform.processor(),
342+
"python_version": platform.python_version(),
343+
"release": platform.release(),
344+
"system": platform.system(),
345+
**package_versions,
346+
}
322347
with open(args.output_file, "w") as f:
323-
json.dump(results, f)
348+
output = {
349+
"date_time": datetime.datetime.now().isoformat(),
350+
"system_info": system_info,
351+
"results": results,
352+
}
353+
json.dump(output, f, indent=True)
324354
return results

0 commit comments

Comments
 (0)