CMU-SAFARI / ramulator-pim

A fast and flexible simulation infrastructure for exploring general-purpose processing-in-memory (PIM) architectures. Ramulator-PIM combines a widely-used simulator for out-of-order and in-order processors (ZSim) with Ramulator, a DRAM simulator with memory models for DDRx, LPDDRx, GDDRx, WIOx, HBMx, and HMCx. Ramulator is described in the IEEE CAL 2015 paper by Kim et al. at https://people.inf.ethz.ch/omutlu/pub/ramulator_dram_simulator-ieee-cal15.pdf Ramulator-PIM is used in the DAC 2019 paper by Singh et al. at https://people.inf.ethz.ch/omutlu/pub/NAPEL-near-memory-computing-performance-prediction-via-ML_dac19.pdf
144 stars 60 forks source link

Energy measurements #7

Open accio-sunshine opened 4 years ago

accio-sunshine commented 4 years ago

I am trying to use ramulator-pim to simulate a PIM device similar to the one you used in the NAPEL paper. In this paper, it is mentioned that ramulator simulates the time and energy of the HMC-PIM device.While I can get the execution time, I do not understand what memspec file from DRAMPower should I use. The only 3D-stacked memory in the files is the WIDE I/O memory, but it is not HMC. I also noticed that starting from line 218 of HMC_Controller.h, there is some code to compute the energy using drampower library, but it seems not active. Trying to force this code line and inserting drampower_memspecs = ramulator crashed after a while. Is it accurate to just run cmd-traces using drampower and using the memespec for WIDE I/O memory for HMC ?

To replicate the error : In the file src/HMC_Controller.h, uncommenting these lines starting from 218. . I tried to enable it and insert into the config file for pim: drampower_memspecs = ../common/DRAMPower/memspecs/JEDEC_256Mb_WIDEIO_SDR-266_128bit.xml

/*if (configs["drampower_memspecs"] != "") {
   with_drampower = true;
   drampower = new libDRAMPower(
   Data::MemSpecParser::getMemSpecFromXML(
   configs["drampower_memspecs"]),
   true);
   }*/
accio-sunshine commented 4 years ago

Hi, I was able to fix this and obtain DRAMPower stats within ramulator stats itself. But this works only when --split trace= false. When split trace is true for PIM config, ramulator doesn't terminate at all. Here is the log file for split trace =true - Do I need to make any changes?

Trace opended: ../zsim-ramulator/polybench/2mm/pim/pim-poly_2mm.out.0
tracenum: 4
trace_list[0]: ../zsim-ramulator/polybench/2mm/pim/pim-poly_2mm.out.0
trace_list[1]: ../zsim-ramulator/polybench/2mm/pim/pim-poly_2mm.out.1
trace_list[2]: ../zsim-ramulator/polybench/2mm/pim/pim-poly_2mm.out.2
trace_list[3]: ../zsim-ramulator/polybench/2mm/pim/pim-poly_2mm.out.3
Perfect scheduling disabled 
Total Reads: 312018 Total Writes: 108021
Core 0 got 420038
Core 1 got 0
Core 2 got 0
Core 3 got 0
V-Run-P commented 1 year ago

How did you Obtain DRAMPower Stats? Can you please help with that?