Skip to content

Conversation

@erin-le
Copy link
Contributor

@erin-le erin-le commented Aug 23, 2023

This pull request adds the RISCV Matched Board files that were modified to have their parameters be configurable by JSON, the various scripts and files that were created in order to generate configuration JSONs and run tests, and the output files that resulted from running tests.

The Matched Board files are under src/python/gem5/prebuilt/riscvmatched. The scripts and other files are under example.

The files used to generate each configuration JSON were example/nopipe_params.json (containing two values for each parameter), example/old/hadamard-matrices/H_16.txt and example/pb-designs/PB_16.txt (matrices that choose between parameter values), and example/json_maker.py.

The files example/microbench_pb_run.sh (for the microbenchmarks) and example/pb_matched_run.sh (for all other benchmarks) were used to run the simulations.

The test output files can be found under matched_board_tests_MATLAB and matched_board_tests_paper. They correspond to H_16.txt and PB_16.txt, respectively.

More information on the testing process and methodology can be found in example/README.md.

studyztp and others added 12 commits August 23, 2023 17:59
Change-Id: Id76227e8ae9b0f5545d58661e9019f98f446f9f6
Added PB designs of different sizes, modified riscvmatched_board.py and riscvmatched_cache.py to be configurable with a JSON
file, and wrote a script (json_maker.py) to generate new JSON files from the PB design.

Change-Id: I59ea7927848307c1c027f5fcc3ba74364cb43ef1
Added a bash script for testing, made changes to json_maker.py to work with the script, and
fixed bugs in the JSON-configurable RISCV matched files.

Change-Id: I8398b74564f93868b7a1acd79497c84eb7226d08
This commit adds further changes to pb_matched_run.sh, which is used to run the script that generates a config json and starts a simulation.
Edits to other files were also made to reflect the changes in pb_matched_run.sh.

Change-Id: I1a1d01d77d567fb65e1441eb3135ffc9ef3cb7a9
Removed the ability to configure pipeline parameters via JSON from riscvmatched_core.py and created a new JSON file with high/low values
(nopipe_params.json) that has the pipeline parameters removed.

Change-Id: I52746d5afba9db8900fc5481fc3b5887fb849c21
The following benchmarks were run with simple-config.py:
riscv-print-this, riscv-bubblesort, riscv-floatmm, riscv-hello

Each benchmark was run with different rows of a size 16 foldover PB design, for a total of 32 unique board configurations. For riscv-print-this,
riscv-bubblesort, and run 0_0_16 of riscv-floatmm, each configuration had 5 runs. For the rest of the riscv-floatmm configurations and all of
the riscv-hello configurations, each configuration had 3 runs.

This commit pushes the JSON files for each configuration, the output files of each run, and some minor changes to the files used to run tests.

Change-Id: I69e0be6df2312a910fa125ec86061156fab9e678
This commit pushes the output files from running riscv-print-this, riscv-bubblesort, riscv-floatmm, riscv-hello, and a number of
microbenchmarks. There are two sets of files. The ones under matched_board_tests_MATLAB used a 16 by 16 Hadamard matrix generated
by Matlab. At the time, we assumed that all Hadamard matrices could be used as PB designs, but we were later uncertain about this.
As such, the files under matched_board_tests_paper used a size 16 PB design from the original paper on PB designs.

Change-Id: I0e652393482d099be4579f0c16da48985cfc1913
This commit adds more information to README.md about the process we followed when performing tests. It also adds explanatory comments
to the code.

Change-Id: If748e6b8cb125caec3163a809a301bae8e060bf7
Change-Id: Id939730a982bced5beb52a986e75a2d850aba695
After changing the U74MemReadFU and U74MemWrite parameters to have 1 and 2 as their high and low values, the microbenchmarks were run again.
The output files are under the folder matched_board_tests_paper/microbench_2.

Change-Id: Ice98d8bc9364b0f9d099dc09fac0d161c7e6dea6
Added and modified files to conduct a full factorial experiment on the RISCV Matched Board using the parameters in nopipe_params.json.

Change-Id: I7bf73e743c444b650719bb6827850922e514c49a
The Yates algorithm is a method to generate estimates for the effect of each parameter and interactions between parameters. To use it, we have to
access the output stats files in a order different from the order they were generated in. Specifically, the binary values of the run numbers are
flipped. This commit adds a script which generates a JSON that maps between the original and flipped number (in base 10), as well as a generated
JSON for number of parameters = 13.

Change-Id: I5f10df6790a4c2a42c37d40dbd89a77d5ee4d300
kaustav-goswami pushed a commit that referenced this pull request Oct 31, 2023
The L3 cache did not work due to argument type mismatch in the call to
the constructor `DMAController`. The second argument is expecting a
`RubySystem` type but the code passes in a `cache_line_size` variable.
After I change the second argument to `self.ruby_system` everything
works.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants