SPB Git

spb/wp40_uqo

Public MIT
2.1 KB · 29 lines shellscript
1#!/bin/bash2# Records the build/benchmark environment into experiments/manifests/environment_<host>.json (no secrets).3set -euo pipefail4OUT="${1:-$(dirname "$0")/../experiments/manifests/environment_$(hostname -s).json}"5mkdir -p "$(dirname "$OUT")"6python3 -I - "$OUT" <<'PY'7import json, subprocess, sys, platform, datetime, os8def sh(c):9    try: return subprocess.run(c, shell=True, capture_output=True, text=True, timeout=60).stdout.strip()10    except Exception as e: return f"ERR {e}"11env = {12 "recorded_at": datetime.datetime.now(datetime.timezone.utc).isoformat(),13 "host": platform.node(), "os": sh("sw_vers -productVersion 2>/dev/null || uname -r"), "build": sh("sw_vers -buildVersion 2>/dev/null"),14 "chip": sh("sysctl -n machdep.cpu.brand_string 2>/dev/null || grep -m1 'model name' /proc/cpuinfo"),15 "ncpu": sh("sysctl -n hw.ncpu 2>/dev/null || nproc"), "perf_cores": sh("sysctl -n hw.perflevel0.physicalcpu 2>/dev/null"), "eff_cores": sh("sysctl -n hw.perflevel1.physicalcpu 2>/dev/null"),16 "mem_bytes": sh("sysctl -n hw.memsize 2>/dev/null || grep MemTotal /proc/meminfo"),17 "gpu": sh("system_profiler SPDisplaysDataType 2>/dev/null | grep -E 'Chipset Model|Total Number of Cores|Metal' | sed 's/^ *//' | tr '\n' ';'"),18 "xcode": sh("xcodebuild -version 2>/dev/null | tr '\n' ' '"), "clang": sh("clang --version | head -1"), "sdk": sh("xcrun -sdk macosx --show-sdk-version 2>/dev/null"),19 "metal_toolchain": sh("xcrun -sdk macosx metal --version 2>/dev/null | head -1"),20 "cmake": sh("cmake --version | head -1"), "ninja": sh("ninja --version 2>/dev/null"),21 "brew": {p: sh(f"brew list --versions {p} 2>/dev/null") for p in ["eigen","apache-arrow","catch2","nlohmann-json","openblas","libomp"]},22 "python": sh("python3 --version"), "r": sh("R --version 2>/dev/null | head -1"),23 "load_avg": sh("sysctl -n vm.loadavg 2>/dev/null || cat /proc/loadavg"), "thermal": sh("pmset -g therm 2>/dev/null | tr '\n' ';'"),24 "power_source": sh("pmset -g batt 2>/dev/null | head -1"), "uptime": sh("uptime"),25 "git_commit": sh("git rev-parse --short HEAD 2>/dev/null"),26}27json.dump(env, open(sys.argv[1], "w"), indent=1); print("wrote", sys.argv[1])28PY29
Files · 54c354ddfb230b05a57348bbf797ba24505b7ae4
Menu

Theme