- Notifications
You must be signed in to change notification settings - Fork9
spcl/rapidchiplet
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Clone the RapidChiplet repository:
git clone https://github.com/anonymous-for-blind-review-1/rc.git
Install all requirements using pip:
cd rc pip install -r requirements.txt
Build the BookSim2 [1,2] simulator:
cd booksim2/srcmakecd ../../
Build Netrace [3,4]
cd netracegcc export_trace.c netrace.c -o export_tracecd ../
python3 reproduce_paper_results.py
- Note that this script runs for almost one day.
- The results might slightly differ from the paper due to different system specifications.
- The plots that appear in the paper in Figure 4 (right), Figure 5, and Figure 6 will be stored in the
./plots/
directory. - The chip visualization that appears in the paper in Figure 4 (left) will be stored in the
./images/
directory.
Configure your chip design using the different input files. Check out the example files in./inputs/
to get started.
We provide the following input generation scripts for more complex input-files that cannot easily be written by hand:
generate_routing.py: Generates a routing table for a given chip design
python3 generate_routing.py -df inputs/designs/<design_file> -rtf<routing_table_file> -ra<routing_algorithm>
- The
<design file>
points to all inputs that the routing table generator needs (chiplets, placement, topology). - The
<routing_table_file>
is the name under which the resulting routing table is stored (ininputs/routing_tables/
). <routing algorithm>
specifies the routing algorithm to be used. We currently support two routing algorithms:splif
: Shortest Path Lowest ID firstsptmr
: Shortest Path Turn Model Random
generate_traffic.py: Generate a synthetic traffic pattern for a given chip design
python3 generate_traffic.py -df inputs/designs/<design_file> -tf<traffic_file> -tp<traffic_pattern> -par<parameters>
- The
<design file>
points to all inputs that the traffic generator needs (chiplets, placement). - The
<traffic_file>
is the name under which the resulting traffic pattern is stored (in/inputs/traffic_by_chiplet/
andinputs/traffic_by_unit/
). <traffic_pattern>
specifies the traffic pattern to be generated. We currently support four traffic patterns:random_uniform
,transpose
,permutation
,hotspot
.<parameters>
are specific to the selected traffic pattern.
python3 rapidchiplet.py -df inputs/designs/<design_file> -rf<results_file> [-as] [-ps] [-ls] [-c] [-l] [-t]
- The
<design_file>
points to all inputs that are required - The
<results_file>
specifies the name, under which the results are stored (in/results/
). - The optional flags are used to enable the computation of different metrics: area summary (
-as
), power summary (-ps
), link summary (-ls
), manufacturing cost (-c
), latency (-l
), throughput (-t
).
To export a design to BookSim and gather the results, simply runrapidchiplet.py
with the-bs
flag:
python3 rapidchiplet.py -df inputs/designs/<design_file> -rf<results_file> -bs
- The
<design_file>
points to all inputs that are required. - The
<results_file>
specifies the name, under which the results are stored (in/results/
).
Specify parameters and parameter-ranges for your design space exploration in an experiment-file in the./experiments/
directory. Check out the provided example files to get started.
python3 run_experiment.py -e experiments/<experiment_file>
This script generates one results-file for each combination of input parameters. All result-files are stored in./results/
.
Download the traces from the netrace website [5] and store them in./netrace/traces_in/
.
In a first step, export the traces from the netrace format into an intermediate format:
cd netrace./export_trace traces_in/<trace_name>.tra.bz2<trace_region_id><packet_limit>> traces_out/<trace_name>.jsoncd ../
- Netrace traces contain one or multiple trace regions. Use the
<trace_region_id>
argument to specify the region to export. If you want to export the whole trace, omit this argument. - Some Netrace traces are very long. If you only want to export a partial trace region, use the
<packet_limit>
argument to pass the maximum number of packets that should be exported.
In a second step, the trace is parsed into the RapidChiplet format:
python3 parse_netrace_trace.py -df inputs/designs/<design_file> -if netrace/traces_out/<trace_name>.json -of<trace_name>.json
- The
<design file>
points to all inputs that the trace parser needs. - The arguments
-if
and-of
refer to the input-trace-file (in the intermediate format) and the output-trace-file (in the output format). The output trace file is stored ininputs/traces/
.
Visualize a complete design by running
python3 visualizer.py -df inputs/designs/<design_name> [-sci] [-spi]
- You can show chiplet-IDs and PHY-IDs by passing the
-sci
and-spi
flags respectively.
You can also visualize a single chiplet by running
python3 visualizer.py -cf inputs/chiplets/<chiplet_file> -cn<chiplet_name>
<chiplet_file>
is an input file which potentially specifies multiple chiplets and<chiplet_name>
is the name of one specific chiplet within this file.
Visualize the results by running:
python3 create_plots.py -rf results/<results-file> -pt<plot_type>
- The
<results_file>
contains the results you want to visualize. - Currently, only one plot type, namely,
latency_vs_load
is supported, but more will be added soon.
[1] Jiang, N., Becker, D.U., Michelogiannakis, G., Balfour, J., Towles, B., Shaw, D.E., Kim, J. and Dally, W.J., 2013, April. A detailed and flexible cycle-accurate network-on-chip simulator. In 2013 IEEE international symposium on performance analysis of systems and software (ISPASS) (pp. 86-96). IEEE.
[2]https://github.com/booksim/booksim2
[3] Hestness, J., Grot, B. and Keckler, S.W., 2010, December. Netrace: dependency-driven trace-based network-on-chip simulation. In Proceedings of the Third International Workshop on Network on Chip Architectures (pp. 31-36).