https://github.com/plsyssec/walkspec-hfi
https://github.com/plsyssec/walkspec-hfi
Last synced: 18 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/plsyssec/walkspec-hfi
- Owner: PLSysSec
- Created: 2022-06-11T03:44:10.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-10-03T21:28:11.000Z (over 3 years ago)
- Last Synced: 2025-03-02T01:44:04.763Z (over 1 year ago)
- Language: Python
- Size: 309 KB
- Stars: 0
- Watchers: 10
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Run SPEC06 without `runspec`.
Everything here is for UCSD's HFI project, so a lot of what `walkspec.py` does also involves gem5 and WASM.
##### Dependencies
- Our fork of gem5: https://github.com/PLSysSec/hw_isol_gem5
- Our fork of wasm2native: https://github.com/PLSysSec/wasm2native
- A copy of WASI-SDK 11 (for wasi-clang): https://github.com/WebAssembly/wasi-sdk/releases/tag/wasi-sdk-11
- A copy of the SPEC 2006 install disc
##### Setup and usage
1. Clone this repo, cd into it, and run `./get-wabt.sh`. This will get a specific release of WABT which seems to play nice with SPEC06. The release gets placed in a subfolder of this repo.
2. Open the dockerfile `gem5-plus` (stock 20.04+deps gem5 image, but with clang and cmake installed via apt, and six installed via pip; TODO Joey still needs to package this) with the following volumes (i.e., use `-v` or `--volume`):
- :/gem5
- :/walkspec
- :/install_spec
- :/spec
- :/wasm2native
- :/wasi-sdk
- :/wabt
3. From within the dockerfile, install SPEC06 to /spec. (NOTE: This will probably make it so `runspec` only works if SPEC06 is installed at /spec)
4. Copy `/walkspec/simConfig.cfg` and `/walkspec/wasmSimConfig.cfg` to `/spec/config/`.
5. Run `python /walkspec/walkspec.py`. This will try to build all C-only SPEC benchmarks and make scripts to run them in and out of gem5, with both clang and wasi-clang. Check the `log` files in `/walkspec/spec_scripts` to see which ones built successfully.
`{CONFIG}_401_native.sh` calls the compiled 401.bzip2 with the first command used by specinvoke. To make native execution use HFI (not sure why you'd want this), run `export HFI='1'` before running the script; to disable native HFI use `unset HFI`.
`{CONFIG}_401_gem5_HFI.sh` and `{CONFIG}_401_gem5_noHFI` invoke gem5 on the same command that `401_native.sh` does, with and without HFI respectively. This will take a lot longer! To tune what gem5 command is used, see walkspec.py's function make_gem5_cmd().
(All of the above are for 401.bzip2, but every C-only benchmark except perlbench gets shell scripts!)
### Current issues/todos
- WASM+HFI should also use a limited version of WASM's isolation -- this still has to be added into the scripts.
- Everything but 400 compiles using simConfig.
- Using wasmSimConfig, 400, 456, 458, and 482 don't compile. Joey has a WIP for 403, but the WIP currently doesn't work (i.e., gcc throws an internal compiler error). Also, 445 and 464 segfault. This means that right now, 401, 429, 433, 462, and 470 are the only benchmarks which seem to be working, and they have not been run to completion yet.