forked from UoB-HPC/SimEng
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRELEASE-NOTES.txt
56 lines (42 loc) · 4.08 KB
/
RELEASE-NOTES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Welcome to the 0.9.6 open source release of the Simulation Engine! SimEng is a fast, easy to use and modify, cycle-level simulator for CPUs. Its initial focus is on simulating single Arm cores in server CPUs, and so the instruction set architecture (ISA) target is initially Arm9.2-a+SVE+SME. There is also RISC-V support currently covering the rv64imafdc set of extensions. Later versions of the Arm ISA, additional RISC-V ISA extensions and other ISAs, will be supported in future releases.
This SimEng release should be considered beta software - you are the first users outside of the core developers, so there *will* be lots of bugs and missing features. The good news is that the code has been designed to be simple to understand and modify, so if you find a bug, such as a missing instruction or missing system call, please submit a PR, or report an issue and we’ll get to it as soon as we can.
You can find all the user and developer documentation on the SimEng webpage:
https://uob-hpc.github.io/SimEng/index.html
SimEng should be fast, much faster than other cycle-level CPU simulators. The fastest hardware we’ve run it on is an M1-Ultra Mac Studio, where we’ve measured SimEng running at up to 1.4 MIPS for the Out of Order (OoO) core in our ThunderX2 and A64fx models. SVE (vector) and SME (matrix) codes are more complex to simulate and tend to be slower - on the same hardware we saw simulated SVE codes running at around 1.1 MIPS and SME codes at around 0.9 MIPS.
Things that should work in this release include:
* Static AArch64, with SVE/SME, binaries compiled with either GCC 7.3 or later, or Arm Clang 20/LLVM 9 or later
* Static RISC-V binaries targetting rv64imafdc and compiled with GCC 12.2.0
* Single thread OpenMP programs
* Binaries compiled from Fortran or C programs
Pre-rolled CPU models in SimEng include:
* Marvell ThunderX2
* Fujitsu A64fx
* Apple M1 Firestorm
* More Arm code models such as those found in other Arm server CPUs will be included in future releases
Current limitations (to be addressed in a future release):
* Dynamically linked binaries are not yet supported in SimEng but developments are currently being undertaken
* We don't currently support running MPI programs (we’ve had a statically linked OpenMPI single rank program run correctly, but this was painful to build)
* We only support a subset of Linux's system calls, and these run under emulation. The subset of 43 calls is enough to run all the codes we've tried so far
* Only partial support for micro-oping, mainly for Load and Store operations
* Only partial support for the ISA - we’ve focused on implementing the instructions we’ve seen generated by the compiler for all the test cases we’ve considered, about 1000 different AArch64 instructions (~16% of the entire ISA) and about 210 different RISC-V instructions so far (~46% of the RISC-V ISA supported by Capstone). You’re likely to come across “instruction not implemented” errors, just let us know when you see these
* Single core, single thread only for now
* Internally, SimEng currently only supports a very simple memory model, assuming all load/stores will hit the L1 cache. However, we have a tested integration with the SST framework (http://sst-simulator.org) allowing for a full memory model to be simulated.
Supported OSs (we’ve tested these, SimEng may also work on other platforms):
* CentOS 7
* Ubuntu
* Cray’s CLE 7, which is based on SLES 15
* macOS Monterey/Ventura/Sonoma
Compilers supported for building SimEng itself:
* GCC 7 or later
* Arm Clang 20 or later
* Apple Clang on Macs
Some benchmarks we’ve run ourselves and so should work:
* STREAM - https://www.cs.virginia.edu/stream/
* miniBUDE - https://github.com/UoB-HPC/miniBUDE
* CloverLeaf - https://github.com/UK-MAC/CloverLeaf_Serial
* Tealeaf - https://github.com/UoB-HPC/TeaLeaf
* FFTW3 - https://github.com/rdolbeau/fftw3/tree/arm-sve
When you hit issues building or running SimEng, please do let us know, either by submitting a PR, or filing an issue via the SimEng Github repo:
https://github.com/UoB-HPC/SimEng/
Thank you for using SimEng!
- The SimEng development team.