diff --git a/scripts/00_env.sh b/scripts/00_env.sh index 975ece5..6e8a047 100755 --- a/scripts/00_env.sh +++ b/scripts/00_env.sh @@ -2,41 +2,40 @@ set -eu ROOT="/home/carlos/projects/gem5" +SRC="$ROOT/gem5src/gem5" IOT="$ROOT/iot" -DATA="$ROOT/gem5-data" # persistent store (your symlink) -RUN="$ROOT/gem5-run" # workloads -CFG="$ROOT/scripts/hetero_big_little.py" # gem5 config script +DATA="$ROOT/gem5-data" # persistent (symlink to /mnt/storage/…) +RUN="$ROOT/gem5-run" # workloads +CFG="$ROOT/scripts/hetero_big_little.py" # gem5 config -# auto-detect gem5.opt (ARM or ARM64) -if [ -x "$ROOT/build/ARM/gem5.opt" ]; then - GEM5="$ROOT/build/ARM/gem5.opt" -elif [ -x "$ROOT/gem5-build/ARM/gem5.opt" ]; then - GEM5="$ROOT/gem5-build/ARM/gem5.opt" -elif [ -x "$ROOT/gem5-build/ARM64/gem5.opt" ]; then - GEM5="$ROOT/gem5-build/ARM64/gem5.opt" -else - echo "[env] gem5.opt not found. Build it with:" - echo " scons build/ARM/gem5.opt -j\$(nproc)" - exit 2 +# --- build target (ARM by default) --- +GEM5_BIN="$ROOT/build/ARM/gem5.opt" + +# --- auto-build if missing (non-interactive: sends newline to accept hooks prompt) --- +if [ ! -x "$GEM5_BIN" ]; then + echo "[env] gem5.opt not found, building at $GEM5_BIN via $SRC ..." + ( cd "$SRC" && printf '\n' | scons "$GEM5_BIN" -j"$(nproc)" ) fi -# primary outputs in gem5-data, mirrored into iot/ +# verify binary +[ -x "$GEM5_BIN" ] || { echo "[env] build failed: $GEM5_BIN missing"; exit 2; } + +# --- primary outputs (data) + mirrors (repo) --- OUT_DATA="$DATA/SmartEdgeAI/results" LOG_DATA="$DATA/SmartEdgeAI/logs" OUT_IOT="$IOT/results" LOG_IOT="$IOT/logs" - -# ensure directories mkdir -p "$OUT_DATA" "$LOG_DATA" "$OUT_IOT" "$LOG_IOT" # export for child scripts -export ROOT IOT DATA RUN CFG GEM5 OUT_DATA LOG_DATA OUT_IOT LOG_IOT +export ROOT SRC IOT DATA RUN CFG GEM5_BIN OUT_DATA LOG_DATA OUT_IOT LOG_IOT # minimal env log { echo "==== env ====" echo "ROOT=$ROOT" - echo "GEM5=$GEM5" + echo "SRC=$SRC" + echo "GEM5_BIN=$GEM5_BIN" echo "CFG=$CFG" echo "RUN=$RUN" echo "OUT_DATA=$OUT_DATA" @@ -45,4 +44,3 @@ export ROOT IOT DATA RUN CFG GEM5 OUT_DATA LOG_DATA OUT_IOT LOG_IOT } >> "$LOG_IOT/env.txt" echo "[env] READY" - diff --git a/scripts/10_run_one.sh b/scripts/10_run_one.sh index 1932caf..4077aab 100755 --- a/scripts/10_run_one.sh +++ b/scripts/10_run_one.sh @@ -14,7 +14,7 @@ OUTDIR="$OUT_DATA/$TAG" mkdir -p "$OUTDIR" echo "[run_one] $TAG mem=$MEM -> $OUTDIR" -"$GEM5" "$CFG" \ +"$GEM5_BIN" "$CFG" \ --cmd="$RUN/$W" \ --mem="$MEM" \ --dvfs="$DV" \ @@ -24,7 +24,7 @@ echo "[run_one] $TAG mem=$MEM -> $OUTDIR" > "$LOG_DATA/${TAG}.stdout.log" \ 2> "$LOG_DATA/${TAG}.stderr.log" -# mirror to repo (iot/) +# mirror to repo rsync -a --delete "$OUTDIR/" "$OUT_IOT/$TAG/" rsync -a "$LOG_DATA/${TAG}."* "$LOG_IOT/" 2>/dev/null || true