SmartEdgeAI - (gem5)
This repo holds all scripts, commands, and logs for Phase 3.
Prerequisites
Install gem5
Before running any simulations, you need to install and build gem5:
# Clone gem5 repository
git clone https://github.com/gem5/gem5.git /home/carlos/projects/gem5/gem5src/gem5
# Build gem5 for ARM
cd /home/carlos/projects/gem5/gem5src/gem5
scons build/ARM/gem5.opt -j$(nproc)
# Verify installation
sh scripts/check_gem5.sh
Install ARM Cross-Compiler
# Ubuntu/Debian
sudo apt-get install gcc-arm-linux-gnueabihf
# macOS (if using Homebrew)
brew install gcc-arm-linux-gnueabihf
Quick Start (Run Everything)
To run the complete workflow automatically:
chmod +x run_all.sh
sh run_all.sh
This will execute all steps in sequence with error checking and progress reporting.
Manual Steps (Order of operations)
0. Check Prerequisites
sh scripts/check_gem5.sh
Check logs: Should show "✓ All checks passed!" or installation instructions
1. Setup Environment
sh scripts/env.sh
Check logs: cat logs/env.txt - Should show environment variables and "READY" message
2. Build Workloads
sh scripts/build_workloads.sh
Check logs: Look for "All workloads compiled successfully!" and verify binaries exist:
ls -la /home/carlos/projects/gem5/gem5-run/
3. Test Single Run
sh scripts/run_one.sh tinyml_kws big high 0 1MB
Check logs:
- Verify stats.txt has content:
ls -l /home/carlos/projects/gem5/gem5-data/SmartEdgeAI/results/tinyml_kws_big_high_l21MB_d0/stats.txt - Check simulation output:
cat logs/tinyml_kws_big_high_l21MB_d0.stdout.log - Check for errors:
cat logs/tinyml_kws_big_high_l21MB_d0.stderr.log
4. Run Full Matrix
sh scripts/sweep.sh
Check logs: Monitor progress and verify all combinations complete:
ls -la /home/carlos/projects/gem5/gem5-data/SmartEdgeAI/results/
5. Extract Statistics
sh scripts/extract_csv.sh
Check logs: Verify CSV was created with data:
head -5 /home/carlos/projects/gem5/gem5-data/SmartEdgeAI/results/summary.csv
6. Compute Energy Metrics
python3 scripts/energy_post.py
Check logs: Verify energy calculations:
head -5 /home/carlos/projects/gem5/gem5-data/SmartEdgeAI/results/summary_energy.csv
7. Generate Plots
python3 scripts/plot_epi.py
python3 scripts/plot_edp_tinyml.py
Check logs: Verify plots were created:
ls -la /home/carlos/projects/gem5/gem5-data/SmartEdgeAI/results/fig_*.png
8. Bundle Logs
sh scripts/bundle_logs.sh
Check logs: Verify bundled logs:
cat logs/TERMINAL_EXCERPTS.txt
cat logs/STATS_EXCERPTS.txt
9. (Optional) Generate Delta Analysis
python3 scripts/diff_table.py
Check logs: Verify delta calculations:
head -5 results/phase3_drowsy_deltas.csv
Paths assumed
- gem5 binary:
/home/carlos/projects/gem5/gem5src/gem5/build/ARM/gem5.opt(updated from tree.log analysis) - config:
scripts/hetero_big_little.py - workloads:
/home/carlos/projects/gem5/gem5-run/{tinyml_kws,sensor_fusion,aes_ccm,attention_kernel}
Output Locations
- Results:
/home/carlos/projects/gem5/gem5-data/SmartEdgeAI/results/(mirrored toresults/) - Logs:
/home/carlos/projects/gem5/gem5-data/SmartEdgeAI/logs/(mirrored tologs/)
Troubleshooting
Common Issues
Empty stats.txt files (0 bytes)
- Cause: gem5 binary doesn't exist or simulation failed
- Solution: Run
sh scripts/check_gem5.shand install gem5 if needed - Check:
ls -la /home/carlos/projects/gem5/gem5src/gem5/build/ARM/gem5.opt
CSV extraction shows empty values
- Cause: Simulation didn't run, so no statistics were generated
- Solution: Fix gem5 installation first, then re-run simulations
"ModuleNotFoundError: No module named 'matplotlib'"
- Solution: Install matplotlib:
pip install matplotliborsudo apt-get install python3-matplotlib
"ValueError: could not convert string to float: ''"
- Cause: Empty CSV values from failed simulations
- Solution: Fixed in updated scripts - they now handle empty values gracefully
Permission errors
- Solution: Make scripts executable:
chmod +x scripts/*.sh
Path issues
- Solution: Verify
ROOTvariable inscripts/env.shpoints to correct gem5 installation
Debugging Steps
- Check gem5 installation:
sh scripts/check_gem5.sh - Verify workload binaries:
ls -la /home/carlos/projects/gem5/gem5-run/ - Test single simulation:
sh scripts/run_one.sh tinyml_kws big high 0 1MB - Check simulation logs:
cat logs/tinyml_kws_big_high_l21MB_d0.stdout.log - Verify stats output:
ls -l /home/carlos/projects/gem5/gem5-data/SmartEdgeAI/results/tinyml_kws_big_high_l21MB_d0/stats.txt