Follow the installation instructions in the project README. The artifact evaluation is CPU-only and does not require a GPU. The validation can run on any CPU machine. The configuration below is the reference machine used for our experiments and reported timings; when using a different CPU machine, each task's runtime will vary with the machine's performance.
- OS: Ubuntu 24.04.4 LTS, Linux 6.8.0
- CPU: 2 x Intel Xeon Platinum 8558P, 48 physical cores per socket
- CPU threads: 192 logical CPUs total
- Memory: 2.0 TiB
The DRAM scripts default to 80% of available logical CPUs. The chip scripts default to one architecture worker because each architecture case performs its own multiprocessing tiling exploration; increasing the outer worker count can oversubscribe the host.
Before running the experiments, verify both native tools exist:
test -x simulator/build/bin/test_dram
test -x pyta/thirdparty/hotspot/hotspotRun the all-in-one script from the repository root. It performs simulation, CSV collection, and plotting for all four experiment families sequentially:
bash tests/run_all_experiments.shThe script locates the repository root automatically and uses python from the
active environment. Set PYTHON=/path/to/python when an explicit interpreter
is needed. It checks the two required native executables, creates results/,
keeps Python output unbuffered, displays progress in the terminal, and records
each experiment under results/<experiment>.log.
Each Python driver prints its wall-clock [TIMER] line without requiring an
external time executable. The chip commands pass --no-cache, and the Edge
DRAM command omits --use-cache; therefore, the script performs clean
simulation runs even if an output directory already exists. The wrapper also
prints the total sequential runtime after all four experiment families finish.
The following clean-run times were measured in this repository on the reference machine described above. Runtime varies with system load and CPU frequency scaling.
| Experiment | Reference runtime |
|---|---|
| Cloud DRAM DSE | 1,826.45 s (30.4 min) |
| Edge DRAM DSE | 4,395.66 s (73.3 min) |
| Cloud chip DSE | 26,881.95 s (7.47 h) |
| Edge chip DSE | 11,667.73 s (3.24 h) |
| Sequential total | 44,771.79 s (12.44 h) |
These values include simulation, result collection, and the plotting performed
by --action all. Plot-only reruns are much shorter. Note that
pip install -e simulator builds the Python extension but not necessarily the
test_dram executable; run the full CMake build from the root README before
starting DRAM DSE.
The --action option accepts run, collect, plot, or all. Use run to
generate raw results, then rerun collect or plot without repeating the
simulation.
# Figure 10a: fig10a_channel_interleaving.{png,pdf}
python tests/dram_dse_cloud.py --experiment interleave --action all
# Figure 10b: fig10b_io_organization.{png,pdf}
python tests/dram_dse_cloud.py --experiment io --action all
# Figure 10c: fig10c_logical_row_size.{png,pdf}
python tests/dram_dse_cloud.py --experiment row --action all
# Figure 10d and Figure 12: fig10d_full_space_models.{png,pdf} and
# fig12_full_space_average.{png,pdf}
python tests/dram_dse_cloud.py --experiment full --action allResults are under results/dram_dse_cloud/output_results/; collected CSVs and
figures are in its summary/ and figures/ directories.
# Figure 20a: fig20a_channel_interleaving.{png,pdf}
python tests/dram_dse_edge.py --experiment interleave --action all
# Figure 20b: fig20b_io_organization.{png,pdf}
python tests/dram_dse_edge.py --experiment io --action all
# Figure 20c: fig20c_logical_row_size.{png,pdf}
python tests/dram_dse_edge.py --experiment row --action all
# Figure 20d: fig20d_full_space_heatmap.{png,pdf}
python tests/dram_dse_edge.py --experiment full --action allResults are under results/dram_dse_edge/output_results/, with collected CSVs
and figures under summary/ and figures/.
# Figure 13a-d: fig13a_bandwidth_compute.{png,pdf},
# fig13b_temperature_ratio.{png,pdf}, fig13c_avg_speedup.{png,pdf}, and
# fig13d_case_speedup.{png,pdf}.
python tests/chip_dse_cloud.py --experiment bandwidth --action all
# Figure 14a-c: fig14a_sram_area_compute.{png,pdf},
# fig14b_avg_speedup.{png,pdf}, and fig14c_case_speedup.{png,pdf}.
python tests/chip_dse_cloud.py --experiment sram --action all
# Figure 15a-c: fig15a_matrix_vector_compute.{png,pdf},
# fig15b_avg_speedup.{png,pdf}, fig15c_top_case_speedup.{png,pdf}, and
# fig15c_bottom_fc_attention.{png,pdf}.
python tests/chip_dse_cloud.py --experiment matrix_vector --action all
# Figure 16a-c: fig16a_noc_area_compute.{png,pdf},
# fig16b_avg_speedup.{png,pdf}, fig16c_top_case_speedup.{png,pdf}, and
# fig16c_bottom_comm_compute_ratio.{png,pdf}.
python tests/chip_dse_cloud.py --experiment noc --action all
# Figures 17-19: fig17_atlas_ppa_thermal.{png,pdf},
# fig18_stratum_ppa_thermal.{png,pdf}, and
# fig19_baseline_comparison.{png,pdf}.
python tests/chip_dse_cloud.py --experiment baseline --action allEach experiment is stored under results/chip_dse_cloud/<experiment>/.
Per-architecture thermal results, test-case performance files, summaries, and
figures remain grouped below that experiment.
# Figure 21a-c: fig21a_matrix_vector_compute.{png,pdf},
# fig21b_avg_speedup_efficiency.{png,pdf}, and
# fig21c_case_speedup_efficiency.{png,pdf}.
python tests/chip_dse_edge.py --experiment matrix_vector --action allResults are under
results/chip_dse_edge/01_matrix_vector_allocation/.
Due to privacy requirements associated with our industry collaborator, we
anonymize architecture parameters and simplify selected simulator microarchitecture
implementation details. Consequently, reproduced numerical results may differ
slightly from those reported in the paper. These differences do not affect the
reproduced hardware-parameter trade-off trends demonstrated in the paper.
For comparison, we provide pre-run reference figures under docs/ref_figs/.
A successful all-in-one run should produce these high-level artifacts:
- Cloud DRAM: five figures in
results/dram_dse_cloud/output_results/figures/for Figures 10a-d and 12. - Edge DRAM: four figures in
results/dram_dse_edge/output_results/figures/for Figures 20a-d. - Cloud chip: experiment summaries and Figures 13-19 under
results/chip_dse_cloud/01_*through05_*. - Edge chip: architecture/case summaries and three Figure 21 plots under
results/chip_dse_edge/01_matrix_vector_allocation/.
- Figure 10a:
fig10a_channel_interleaving.{png,pdf}, generated by--experiment interleave; compares DRAM channel-interleaving positions. Compare with the reference PNG. - Figure 10b:
fig10b_io_organization.{png,pdf}, generated by--experiment io; compares DRAM channel organizations. Compare with the reference PNG. - Figure 10c:
fig10c_logical_row_size.{png,pdf}, generated by--experiment row; compares logical row sizes. Compare with the reference PNG. - Figure 10d:
fig10d_full_space_models.{png,pdf}, generated by--experiment full; shows the OPT, LLaMA, Mixtral, and Qwen full-space heatmaps in one row. Compare with the reference PNG. - Figure 12:
fig12_full_space_average.{png,pdf}, generated by--experiment full; shows the full-space average heatmap separately. Compare with the reference PNG.
- Figure 20a:
fig20a_channel_interleaving.{png,pdf}, generated by--experiment interleave; compares DRAM channel-interleaving positions. Compare with the reference PNG. - Figure 20b:
fig20b_io_organization.{png,pdf}, generated by--experiment io; compares DRAM channel organizations. Compare with the reference PNG. - Figure 20c:
fig20c_logical_row_size.{png,pdf}, generated by--experiment row; compares logical row sizes. Compare with the reference PNG. - Figure 20d:
fig20d_full_space_heatmap.{png,pdf}, generated by--experiment full; shows the OPT, LLaMA, PaLM, and average full-space heatmaps in one row. Compare with the reference PNG.
- Figure 13a:
fig13a_bandwidth_compute.{png,pdf}; DRAM bandwidth and matrix compute across channel counts. Reference: PNG. - Figure 13b:
fig13b_temperature_ratio.{png,pdf}; temperature and achieved-compute ratio across channel counts. Reference: PNG. - Figure 13c:
fig13c_avg_speedup.{png,pdf}; average speedup across channel counts. Reference: PNG. - Figure 13d:
fig13d_case_speedup.{png,pdf}; dense and MoE case speedups across channel counts. All Figure 13 files are generated by--experiment bandwidth. Reference: PNG. - Figure 14a:
fig14a_sram_area_compute.{png,pdf}; SRAM area and matrix compute. Reference: PNG. - Figure 14b:
fig14b_avg_speedup.{png,pdf}; average SRAM-allocation speedup. Reference: PNG. - Figure 14c:
fig14c_case_speedup.{png,pdf}; per-case SRAM-allocation speedup. All Figure 14 files are generated by--experiment sram. Reference: PNG. - Figure 15a:
fig15a_matrix_vector_compute.{png,pdf}; matrix and vector compute allocation. Reference: PNG. - Figure 15b:
fig15b_avg_speedup.{png,pdf}; average matrix/vector allocation speedup. Reference: PNG. - Figure 15c:
fig15c_top_case_speedup.{png,pdf}andfig15c_bottom_fc_attention.{png,pdf}; per-case and operator analysis. All Figure 15 files are generated by--experiment matrix_vector. References: top PNG and bottom PNG. - Figure 16a:
fig16a_noc_area_compute.{png,pdf}; NoC area and matrix compute. Reference: PNG. - Figure 16b:
fig16b_avg_speedup.{png,pdf}; average NoC-allocation speedup. Reference: PNG. - Figure 16c:
fig16c_top_case_speedup.{png,pdf}andfig16c_bottom_comm_compute_ratio.{png,pdf}; per-case and communication analysis. All Figure 16 files are generated by--experiment noc. References: top PNG and bottom PNG. - Figure 17:
fig17_atlas_ppa_thermal.{png,pdf}; ATLAS area, power, and thermal results, generated by--experiment baseline. Reference: PNG. - Figure 18:
fig18_stratum_ppa_thermal.{png,pdf}; Stratum area, power, and thermal results, generated by--experiment baseline. Reference: PNG. - Figure 19:
fig19_baseline_comparison.{png,pdf}; GPU, Stratum, and ATLAS performance and energy-efficiency comparison, generated by--experiment baseline. Reference: PNG.
- Figure 21a:
fig21a_matrix_vector_compute.{png,pdf}; matrix and vector compute allocation. Reference: PNG. - Figure 21b:
fig21b_avg_speedup_efficiency.{png,pdf}; average speedup and energy efficiency. Reference: PNG. - Figure 21c:
fig21c_case_speedup_efficiency.{png,pdf}; per-case speedup and energy efficiency. All Figure 21 files are generated by--experiment matrix_vector. Reference: PNG.