An EDA toolchain for interval thermal simulations of 2D multi-/many-cores in an open system.
CoMeT: CoMeT is next-generation open-source EDA toolchain for integrated core-memory interval thermal simulations of 2D, 2.5, and 3D multi-/many-core processors. CoMeT (partially) subsumes the code of HotSniper.
An EDA toolchain for interval thermal simulations of 2D multi-/many-cores in an open system.
Details of HotSniper can be found in our ESL 2018 paper, and please consider citing this paper in your work if you find this tool useful in your research.
Pathania, Anuj, and Jörg Henkel. "HotSniper: Sniper-Based Toolchain for Many-Core Thermal Simulations in Open Systems." IEEE Embedded Systems Letters 11.2 (2018): 54-57.
Please refer to Hot Sniper User Manual to learn how to write custom scheduling policies that perform thermal-aware Dynamic Voltage Frequency Scaling (DVFS), Task Mapping, and Task Migration.
Found a Bug, Report Here! Have a Question, Ask Here!
No Direct Emails.
HotSniper7 compiles and runs inside a Docker container. Therefore, you need to download & install Docker. For more info: https://docs.docker.com/engine/install/ubuntu/
After installing Docker, make sure you are able to run it without needing sudo by following instructions here - https://docs.docker.com/engine/install/linux-postinstall/
Download and extract Pinplay 3.2 to the root HotSniper7 directory as pin_kit
wget --user-agent="Mozilla" https://www.intel.com/content/dam/develop/external/us/en/protected/pinplay-drdebug-3.2-pin-3.2-81205-gcc-linux.tar.gz
tar xf pinplay-drdebug-3.2-pin-3.2-81205-gcc-linux.tar.gz
mv pinplay-drdebug-3.2-pin-3.2-81205-gcc-linux pin_kit
At this stage, the root HotSniper7 directory has a folder named pin_kit
containing the PinPlay-3.2 library and a folder named hotspot
containing the HotSpot simulator. Since you now have Docker installed, let's create a container
using the shipped Dockerfile
.
cd docker
make
make run
Now that we are inside our container, we can build HotSniper 7 and its requirements:
cd ..
The [HotSpot] simulator is shipped with HotSniper7. All you need to do is to compile it:
cd hotspot
make
cd ..
make
Run inside container:
#setting $GRAPHITE_ROOT to HotSniper7's root directory
export GRAPHITE_ROOT=$(pwd)
cd benchmarks
#setting $BENCHMARKS_ROOT to the benchmarks directory
export BENCHMARKS_ROOT=$(pwd)
#compiling the benchmarks
make
HotSniper7 is shipped with a simulationcontrol
script that you can use to run batch simulations.
Run inside container:
cd simulationcontrol
PYTHONIOENCODING="UTF-8" python3 run.py
The path of the results' directory can be set inside the simulationcontrol/config.py
file.
Quickly list the finished simulations:
cd simulationcontrol
PYTHONIOENCODING="UTF-8" python3 parse_results.py
Each run is stored in a separate directory in the results directory (see 4). For quick visual check, many plots are automatically generated for you (IPS, power, etc).
To do your own (automated) evaluations, see the simulationcontrol.resultlib
package for a set of helper functions to parse the results. See the source code of parse_results.py
for a few examples.
config/base.cfg
: power/technology_node
scripts/energystats.py
: build_dvfs_table
(keep in mind that V/f-levels are specified at 22nm)tools/mcpat.py
: scale_power
simulationcontrol/config.py
: SNIPER_CONFIG
and NUMBER_CORES
config/base.cfg
and other config files as specified in the previous stepconfig/base.cfg
: scheduler/open/*
and scheduler/open/dvfs/*
perf_model/core/frequency
simulationcontrol/run.py
: test_static_power
, kill it after ~5ms simulated timebenchmarks/energystats-temp.txt
: take processor area (including L3 cache etc.), divide by number of cores, and scale it to your technology node. If file is empty, start simulation again, kill it, and check again.config/base.cfg
: power/*
inactive_power
must be set to static power consumption at min V/f level*.flp
) and corresponding thermal model (*.bin
)
-eigen_out
) from your floorplansqrt(core area)
from McPAT area estimationspython3 create_thermal_model.py --amb 45 --crit 80 --core_naming sniper --core_width [core width] model [cores]x[cores]
config/base.cfg
: periodic_thermal
tdp
is defined by the floorplan, temperature limits and cooling parameterssimulationcontrol/run.py
(e.g., similar to def example
)simulationcontrol/config.py
: RESULTS_FOLDER
sim.cfg
of a finished runUnicodeEncodeError: 'ascii' codec can't encode character '\xb0' in position 61: ordinal not in range(128)
export PYTHONIOENCODING="UTF-8"
Sniper: http://snipersim.org
McPat: https://www.hpl.hp.com/research/mcpat/
HotSpot: http://lava.cs.virginia.edu/HotSpot/
MatEx: http://ces.itec.kit.edu/846.php
thermallib: https://github.com/ma-rapp/thermallib