Adding scripts, commands, and logging scaffolding
This commit is contained in:
@@ -2,41 +2,40 @@
|
|||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
ROOT="/home/carlos/projects/gem5"
|
ROOT="/home/carlos/projects/gem5"
|
||||||
|
SRC="$ROOT/gem5src/gem5"
|
||||||
IOT="$ROOT/iot"
|
IOT="$ROOT/iot"
|
||||||
DATA="$ROOT/gem5-data" # persistent store (your symlink)
|
DATA="$ROOT/gem5-data" # persistent (symlink to /mnt/storage/…)
|
||||||
RUN="$ROOT/gem5-run" # workloads
|
RUN="$ROOT/gem5-run" # workloads
|
||||||
CFG="$ROOT/scripts/hetero_big_little.py" # gem5 config script
|
CFG="$ROOT/scripts/hetero_big_little.py" # gem5 config
|
||||||
|
|
||||||
# auto-detect gem5.opt (ARM or ARM64)
|
# --- build target (ARM by default) ---
|
||||||
if [ -x "$ROOT/build/ARM/gem5.opt" ]; then
|
GEM5_BIN="$ROOT/build/ARM/gem5.opt"
|
||||||
GEM5="$ROOT/build/ARM/gem5.opt"
|
|
||||||
elif [ -x "$ROOT/gem5-build/ARM/gem5.opt" ]; then
|
# --- auto-build if missing (non-interactive: sends newline to accept hooks prompt) ---
|
||||||
GEM5="$ROOT/gem5-build/ARM/gem5.opt"
|
if [ ! -x "$GEM5_BIN" ]; then
|
||||||
elif [ -x "$ROOT/gem5-build/ARM64/gem5.opt" ]; then
|
echo "[env] gem5.opt not found, building at $GEM5_BIN via $SRC ..."
|
||||||
GEM5="$ROOT/gem5-build/ARM64/gem5.opt"
|
( cd "$SRC" && printf '\n' | scons "$GEM5_BIN" -j"$(nproc)" )
|
||||||
else
|
|
||||||
echo "[env] gem5.opt not found. Build it with:"
|
|
||||||
echo " scons build/ARM/gem5.opt -j\$(nproc)"
|
|
||||||
exit 2
|
|
||||||
fi
|
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"
|
OUT_DATA="$DATA/SmartEdgeAI/results"
|
||||||
LOG_DATA="$DATA/SmartEdgeAI/logs"
|
LOG_DATA="$DATA/SmartEdgeAI/logs"
|
||||||
OUT_IOT="$IOT/results"
|
OUT_IOT="$IOT/results"
|
||||||
LOG_IOT="$IOT/logs"
|
LOG_IOT="$IOT/logs"
|
||||||
|
|
||||||
# ensure directories
|
|
||||||
mkdir -p "$OUT_DATA" "$LOG_DATA" "$OUT_IOT" "$LOG_IOT"
|
mkdir -p "$OUT_DATA" "$LOG_DATA" "$OUT_IOT" "$LOG_IOT"
|
||||||
|
|
||||||
# export for child scripts
|
# 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
|
# minimal env log
|
||||||
{
|
{
|
||||||
echo "==== env ===="
|
echo "==== env ===="
|
||||||
echo "ROOT=$ROOT"
|
echo "ROOT=$ROOT"
|
||||||
echo "GEM5=$GEM5"
|
echo "SRC=$SRC"
|
||||||
|
echo "GEM5_BIN=$GEM5_BIN"
|
||||||
echo "CFG=$CFG"
|
echo "CFG=$CFG"
|
||||||
echo "RUN=$RUN"
|
echo "RUN=$RUN"
|
||||||
echo "OUT_DATA=$OUT_DATA"
|
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"
|
} >> "$LOG_IOT/env.txt"
|
||||||
|
|
||||||
echo "[env] READY"
|
echo "[env] READY"
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ OUTDIR="$OUT_DATA/$TAG"
|
|||||||
mkdir -p "$OUTDIR"
|
mkdir -p "$OUTDIR"
|
||||||
echo "[run_one] $TAG mem=$MEM -> $OUTDIR"
|
echo "[run_one] $TAG mem=$MEM -> $OUTDIR"
|
||||||
|
|
||||||
"$GEM5" "$CFG" \
|
"$GEM5_BIN" "$CFG" \
|
||||||
--cmd="$RUN/$W" \
|
--cmd="$RUN/$W" \
|
||||||
--mem="$MEM" \
|
--mem="$MEM" \
|
||||||
--dvfs="$DV" \
|
--dvfs="$DV" \
|
||||||
@@ -24,7 +24,7 @@ echo "[run_one] $TAG mem=$MEM -> $OUTDIR"
|
|||||||
> "$LOG_DATA/${TAG}.stdout.log" \
|
> "$LOG_DATA/${TAG}.stdout.log" \
|
||||||
2> "$LOG_DATA/${TAG}.stderr.log"
|
2> "$LOG_DATA/${TAG}.stderr.log"
|
||||||
|
|
||||||
# mirror to repo (iot/)
|
# mirror to repo
|
||||||
rsync -a --delete "$OUTDIR/" "$OUT_IOT/$TAG/"
|
rsync -a --delete "$OUTDIR/" "$OUT_IOT/$TAG/"
|
||||||
rsync -a "$LOG_DATA/${TAG}."* "$LOG_IOT/" 2>/dev/null || true
|
rsync -a "$LOG_DATA/${TAG}."* "$LOG_IOT/" 2>/dev/null || true
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user