Merge "misc: Merge branch stable into develop branch" into develop
This commit is contained in:
133
RELEASE-NOTES.md
133
RELEASE-NOTES.md
@@ -1,3 +1,136 @@
|
|||||||
|
# Version 22.1.0.0
|
||||||
|
|
||||||
|
This release has 500 contributions from 48 unique contributors and marks our second major release of 2022.
|
||||||
|
This release incorporates several new features, improvements, and bug fixes for the computer architecture reserach community.
|
||||||
|
|
||||||
|
See below for more details!
|
||||||
|
|
||||||
|
## New features and improvements
|
||||||
|
|
||||||
|
- The gem5 binary can now be compiled to include multiple ISA targets.
|
||||||
|
A compilation of gem5 which includes all gem5 ISAs can be created using: `scons build/ALL/gem5.opt`.
|
||||||
|
This will use the Ruby `MESI_Two_Level` cache coherence protocol by default, to use other protocols: `scons build/ALL/gem5.opt PROTOCOL=<other protocol>`.
|
||||||
|
The classic cache system may continue to be used regardless as to which Ruby cache coherence protocol is compiled.
|
||||||
|
- The `m5` Python module now includes functions to set exit events are particular simululation ticks:
|
||||||
|
- *setMaxTick(tick)* : Used to to specify the maximum simulation tick.
|
||||||
|
- *getMaxTick()* : Used to obtain the maximum simulation tick value.
|
||||||
|
- *getTicksUntilMax()*: Used to get the number of ticks remaining until the maximum tick is reached.
|
||||||
|
- *scheduleTickExitFromCurrent(tick)* : Used to schedule an exit exit event a specified number of ticks in the future.
|
||||||
|
- *scheduleTickExitAbsolute(tick)* : Used to schedule an exit event as a specified tick.
|
||||||
|
- We now include the `RiscvMatched` board as part of the gem5 stdlib.
|
||||||
|
This board is modeled after the [HiFive Unmatched board](https://www.sifive.com/boards/hifive-unmatched) and may be used to emulate its behavior.
|
||||||
|
See "configs/example/gem5_library/riscv-matched-fs.py" and "configs/example/gem5_library/riscv-matched-hello.py" for examples using this board.
|
||||||
|
- An API for [SimPoints](https://doi.org/10.1145/885651.781076) has been added.
|
||||||
|
SimPoints can substantially improve gem5 Simulation time by only simulating representative parts of a simulation then extrapolating statistical data accordingly.
|
||||||
|
Examples of using SimPoints with gem5 can be found in "configs/example/gem5_library/checkpoints/simpoints-se-checkpoint.py" and "configs/example/gem5_library/checkpoints/simpoints-se-restore.py".
|
||||||
|
- "Workloads" have been introduced to gem5.
|
||||||
|
Workloads have been incorporated into the gem5 Standard library.
|
||||||
|
They can be used specify the software to be run on a simulated system that come complete with input parameters and any other dependencies necessary to run a simuation on the target hardware.
|
||||||
|
At the level of the gem5 configuration script a user may specify a workload via a board's `set_workload` function.
|
||||||
|
For example, `set_workload(Workload("x86-ubuntu-18.04-boot"))` sets the board to use the "x86-ubuntu-18.04-boot" workload.
|
||||||
|
This workload specifies a boot consisting of the Linux 5.4.49 kernel then booting an Ubunutu 18.04 disk image, to exit upon booting.
|
||||||
|
Workloads are agnostic to underlying gem5 design and, via the gem5-resources infrastructure, will automatically retrieve all necessary kernels, disk-images, etc., necessary to execute.
|
||||||
|
Examples of using gem5 Workloads can be found in "configs/example/gem5_library/x86-ubuntu-ruby.py" and "configs/example/gem5_library/riscv-ubuntu-run.py".
|
||||||
|
- To aid gem5 developers, we have incorporated [pre-commit](https://pre-commit.com) checks into gem5.
|
||||||
|
These checks automatically enforce the gem5 style guide on Python files and a subset of other requirements (such as line length) on altered code prior to a `git commit`.
|
||||||
|
Users may install pre-commit by running `./util/pre-commit-install.sh`.
|
||||||
|
Passing these checks is a requirement to submit code to gem5 so installation is strongly advised.
|
||||||
|
- A multiprocessing module has been added.
|
||||||
|
This allows for multiple simulations to be run from a single gem5 execution via a single gem5 configuration script.
|
||||||
|
Example of usage found [in this commit message](https://gem5-review.googlesource.com/c/public/gem5/+/63432).
|
||||||
|
**Note: This feature is still in development.
|
||||||
|
While functional, it'll be subject to subtantial changes in future releases of gem5**.
|
||||||
|
- The stdlib's `ArmBoard` now supports Ruby caches.
|
||||||
|
- Due to numerious fixes and improvements, Ubuntu 22.04 can be booted as a gem5 workload, both in FS and SE mode.
|
||||||
|
- Substantial improvements have been made to gem5's GDB capabilities.
|
||||||
|
- The `HBM2Stack` has been added to the gem5 stdlib as a memory component.
|
||||||
|
- The `MinorCPU` has been fully incorporated into the gem5 Standard Library.
|
||||||
|
- We now allow for full-system simulation of GPU applications.
|
||||||
|
The introduction of GPU FS mode allows for the same use-cases as SE mode but reduces the requirement of specific host environments or usage of a Docker container.
|
||||||
|
The GPU FS mode also has improved simulated speed by functionally simulating memory copies, and provides an easier update path for gem5 developers.
|
||||||
|
An X86 host and KVM are required to run GPU FS mode.
|
||||||
|
|
||||||
|
## API (user facing) changes
|
||||||
|
|
||||||
|
- The default CPU Vendor String has been updated to `HygonGenuine`.
|
||||||
|
This is due to newer versions of GLIBC being more strict about checking current system's supported features.
|
||||||
|
The previous value, `M5 Simulator`, is not recognized as a valid vendor string and therefore GLIBC returns an error.
|
||||||
|
- [The stdlib's `_connect_things` funciton call has been moved from the `AbstractBoard`'s constructor to be run as board pre-instantiation process](https://gem5-review.googlesource.com/c/public/gem5/+/65051).
|
||||||
|
This is to overcome instances where stdlib components (memory, processor, and cache hierarhcy) require Board information known only after its construction.
|
||||||
|
**This change breaks cases where a user utilizes the stdlib `AbstractBoard` but does not use the stdlib `Simulator` module. This can be fixed by adding the `_pre_instantiate` function before `m5.instantiate`**.
|
||||||
|
An exception has been added which explains this fix, if this error occurs.
|
||||||
|
- The setting of checkpoints has been moved from the stdlib's "set_workload" functions to the `Simulator` module.
|
||||||
|
Setting of checkpoints via the stdlib's "set_workload" functions is now deprecated and will be removed in future releases of gem5.
|
||||||
|
- The gem5 namespace `Trace` has been renamed `trace` to conform to the gem5 style guide.
|
||||||
|
- Due to the allowing of multiple ISAs per gem5 build, the `TARGET_ISA` variable has been replaced with `USE_$(ISA)` variables.
|
||||||
|
For example, if a build contains both the X86 and ARM ISAs the `USE_X86` and `USE_ARM` variables will be set.
|
||||||
|
|
||||||
|
## Big Fixes
|
||||||
|
|
||||||
|
- Several compounding bugs were causing bugs with floating point operations within gem5 simulations.
|
||||||
|
These have been fixed.
|
||||||
|
- Certain emulated syscalls were behaving incorrectly when using RISC-V due to incorrect `open(2)` flag values.
|
||||||
|
These values have been fixed.
|
||||||
|
- The GIVv3 List register mapping has been fixed.
|
||||||
|
- Access permissions for GICv3 cpu registers have been fixed.
|
||||||
|
- In previous releases of gem5 the `sim_quantum` value was set for all cores when using the Standard Library.
|
||||||
|
This caused issues when setting exit events at a particular tick as it resulted in the exit being off by `sim_quantum`.
|
||||||
|
As such, the `sim_quantum` value is only when using KVM cores.
|
||||||
|
- PCI ranges in `VExpress_GEM5_Foundation` fixed.
|
||||||
|
- The `SwitchableProcessor` processor has been fixed to allow switching to a KVM core.
|
||||||
|
Previously the `SwitchableProcessor` only allowed a user to switch from a KVM core to a non-KVM core.
|
||||||
|
- The Standard Library has been fixed to permit multicore simulations in SE mode.
|
||||||
|
- [A bug was fixed in the rcr X86 instruction](https://gem5.atlassian.net/browse/GEM5-1265).
|
||||||
|
|
||||||
|
## Build related changes
|
||||||
|
|
||||||
|
- gem5 can now be compiled with Scons 4 build system.
|
||||||
|
- gem5 can now be compiled with Clang version 14 (minimum Clang version 6).
|
||||||
|
- gem5 can now be compiled with GCC Version 12 (minimum GCC version 7).
|
||||||
|
|
||||||
|
|
||||||
|
## Other minor updates
|
||||||
|
|
||||||
|
- The gem5 stdlib examples in "configs/example/gem5_library" have been updated to, where appropriate, use the stdlib's Simulator module.
|
||||||
|
These example configurations can be used for reference as to how `Simulator` module may be utilized in gem5.
|
||||||
|
- Granulated SGPR computation has been added for gfx9 gpu-compute.
|
||||||
|
- The stdlib statistics have been improved:
|
||||||
|
- A `get_simstats` function has been added to access statistics from the `Simulator` module.
|
||||||
|
- Statistics can be printed: `print(simstats.board.core.some_integer)`.
|
||||||
|
- GDB ports are now specified for each workload, as opposed to per-simulation run.
|
||||||
|
- The `m5` utility has been expanded to include "workbegin" and "workend" annotations.
|
||||||
|
This can be added with `m5 workbegin` and `m5 workend`.
|
||||||
|
- A `PrivateL1SharedL2CacheHierarchy` has been added to the Standard Library.
|
||||||
|
- A `GEM5_USE_PROXY` environment variable has been added.
|
||||||
|
This allows users to specify a socks5 proxy server to use when obtaining gem5 resources and the resources.json file.
|
||||||
|
It uses the format `<host>:<port>`.
|
||||||
|
- The fastmodel support has been improved to function with Linux Kernel 5.x.
|
||||||
|
- The `set_se_binary_workload` function now allows for the passing of input parameters to a binary workload.
|
||||||
|
- A functional CHI cache hierarchy has been added to the gem5 Standard Library: "src/python/gem5/components/cachehierarchies/chi/private_l1_cache_hierarchy.py".
|
||||||
|
- The RISC-V K extension has been added.
|
||||||
|
It includes the following instructions:
|
||||||
|
- Zbkx: xperm8, xperm4
|
||||||
|
- Zknd: aes64ds, aes64dsm, aes64im, aes64ks1i, aes64ks2
|
||||||
|
- Zkne: aes64es, aes64esm, aes64ks1i, aes64ks2
|
||||||
|
- Zknh: sha256sig0, sha256sig1, sha256sum0, sha256sum1, sha512sig0, sha512sig1, sha512sum0, sha512sum1
|
||||||
|
- Zksed: sm4ed, sm4ks
|
||||||
|
- Zksh: sm3p0, sm3p1
|
||||||
|
|
||||||
|
# Version 22.0.0.2
|
||||||
|
|
||||||
|
**[HOTFIX]** This hotfix contains a set of critical fixes to be applied to gem5 v22.0.
|
||||||
|
This hotfix:
|
||||||
|
|
||||||
|
- Fixes the ARM booting of Linux kernels making use of FEAT_PAuth.
|
||||||
|
- Removes incorrect `requires` functions in AbstractProcessor and AbstractGeneratorCore.
|
||||||
|
These `requires` were causing errors when running generators with any ISA other than NULL.
|
||||||
|
- Fixes the standard library's `set_se_binary_workload` function to exit on Exit Events (work items) by default.
|
||||||
|
- Connects a previously unconnected PCI port in the example SST RISC-V config to the membus.
|
||||||
|
- Updates the SST-gem5 README with the correct download links.
|
||||||
|
- Adds a `getAddrRanges` function to the `HBMCtrl`.
|
||||||
|
This ensures the XBar connected to the controller can see the address ranges covered by both pseudo channels.
|
||||||
|
- Fixes test_download_resources.py so the correct parameter is passed to the download test script.
|
||||||
|
|
||||||
# Version 22.0.0.1
|
# Version 22.0.0.1
|
||||||
|
|
||||||
**[HOTFIX]** Fixes relative import in "src/python/gem5/components/processors/simple_core.py".
|
**[HOTFIX]** Fixes relative import in "src/python/gem5/components/processors/simple_core.py".
|
||||||
|
|||||||
@@ -420,14 +420,6 @@ for variant_path in variant_paths:
|
|||||||
conf.CheckLinkFlag('-Wl,--threads')
|
conf.CheckLinkFlag('-Wl,--threads')
|
||||||
conf.CheckLinkFlag(
|
conf.CheckLinkFlag(
|
||||||
'-Wl,--thread-count=%d' % GetOption('num_jobs'))
|
'-Wl,--thread-count=%d' % GetOption('num_jobs'))
|
||||||
|
|
||||||
# Treat warnings as errors but white list some warnings that we
|
|
||||||
# want to allow (e.g., deprecation warnings).
|
|
||||||
env.Append(CCFLAGS=['-Werror',
|
|
||||||
'-Wno-error=deprecated-declarations',
|
|
||||||
'-Wno-error=deprecated',
|
|
||||||
])
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
error('\n'.join((
|
error('\n'.join((
|
||||||
"Don't know what compiler options to use for your compiler.",
|
"Don't know what compiler options to use for your compiler.",
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ See `INSTALL.md`.
|
|||||||
Downloading the built bootloader containing a Linux Kernel and a workload,
|
Downloading the built bootloader containing a Linux Kernel and a workload,
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
wget http://dist.gem5.org/dist/v22-0/misc/riscv/bbl-busybox-boot-exit
|
wget http://dist.gem5.org/dist/v22-1/misc/riscv/bbl-busybox-boot-exit
|
||||||
```
|
```
|
||||||
|
|
||||||
Running the simulation
|
Running the simulation
|
||||||
@@ -87,7 +87,7 @@ extract them under the $M5_PATH directory (make sure M5_PATH points to a valid
|
|||||||
directory):
|
directory):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
wget http://dist.gem5.org/dist/v22-0/arm/aarch-sst-20211207.tar.bz2
|
wget http://dist.gem5.org/dist/v22-1/arm/aarch-sst-20211207.tar.bz2
|
||||||
tar -xf aarch-sst-20211207.tar.bz2
|
tar -xf aarch-sst-20211207.tar.bz2
|
||||||
|
|
||||||
# copying bootloaders
|
# copying bootloaders
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ def define_defaults(defaults):
|
|||||||
os.pardir,
|
os.pardir,
|
||||||
os.pardir))
|
os.pardir))
|
||||||
defaults.result_path = os.path.join(os.getcwd(), 'testing-results')
|
defaults.result_path = os.path.join(os.getcwd(), 'testing-results')
|
||||||
defaults.resource_url = 'http://dist.gem5.org/dist/develop'
|
defaults.resource_url = 'http://dist.gem5.org/dist/v22-1'
|
||||||
defaults.resource_path = os.path.abspath(os.path.join(defaults.base_dir,
|
defaults.resource_path = os.path.abspath(os.path.join(defaults.base_dir,
|
||||||
'tests',
|
'tests',
|
||||||
'gem5',
|
'gem5',
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ PROJECT_NAME = gem5
|
|||||||
# This could be handy for archiving the generated documentation or
|
# This could be handy for archiving the generated documentation or
|
||||||
# if some version control system is used.
|
# if some version control system is used.
|
||||||
|
|
||||||
PROJECT_NUMBER = DEVELOP-FOR-22.1
|
PROJECT_NUMBER = v22.1.0.0
|
||||||
|
|
||||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||||
# base path where the generated documentation will be put.
|
# base path where the generated documentation will be put.
|
||||||
|
|||||||
@@ -32,6 +32,6 @@ namespace gem5
|
|||||||
/**
|
/**
|
||||||
* @ingroup api_base_utils
|
* @ingroup api_base_utils
|
||||||
*/
|
*/
|
||||||
const char *gem5Version = "[DEVELOP-FOR-22.1]";
|
const char *gem5Version = "22.1.0.0";
|
||||||
|
|
||||||
} // namespace gem5
|
} // namespace gem5
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ def _resources_json_version_required() -> str:
|
|||||||
"""
|
"""
|
||||||
Specifies the version of resources.json to obtain.
|
Specifies the version of resources.json to obtain.
|
||||||
"""
|
"""
|
||||||
return "develop"
|
return "22.1"
|
||||||
|
|
||||||
|
|
||||||
def _get_resources_json_uri() -> str:
|
def _get_resources_json_uri() -> str:
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ for compiler in ${images[@]}; do
|
|||||||
# targets for this test
|
# targets for this test
|
||||||
build_indices=(${build_permutation[@]:0:$builds_count})
|
build_indices=(${build_permutation[@]:0:$builds_count})
|
||||||
|
|
||||||
repo_name="${base_url}/${compiler}:latest"
|
repo_name="${base_url}/${compiler}:v22-1"
|
||||||
|
|
||||||
# Grab compiler image
|
# Grab compiler image
|
||||||
docker pull $repo_name >/dev/null
|
docker pull $repo_name >/dev/null
|
||||||
|
|||||||
@@ -37,8 +37,8 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
DOCKER_IMAGE_ALL_DEP=gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest
|
DOCKER_IMAGE_ALL_DEP=gcr.io/gem5-test/ubuntu-22.04_all-dependencies:v22-1
|
||||||
DOCKER_IMAGE_CLANG_COMPILE=gcr.io/gem5-test/clang-version-14:latest
|
DOCKER_IMAGE_CLANG_COMPILE=gcr.io/gem5-test/clang-version-14:v22-1
|
||||||
PRESUBMIT_STAGE2=tests/jenkins/presubmit-stage2.sh
|
PRESUBMIT_STAGE2=tests/jenkins/presubmit-stage2.sh
|
||||||
GEM5ART_TESTS=tests/jenkins/gem5art-tests.sh
|
GEM5ART_TESTS=tests/jenkins/gem5art-tests.sh
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ gem5_root="${dir}/.."
|
|||||||
# The per-container Docker memory limit.
|
# The per-container Docker memory limit.
|
||||||
docker_mem_limit="18g"
|
docker_mem_limit="18g"
|
||||||
|
|
||||||
|
# The docker tag to use (varies between develop, and versions on the staging
|
||||||
|
# branch)
|
||||||
|
tag="v22-1"
|
||||||
|
|
||||||
# The first argument is the number of threads to be used for compilation. If no
|
# The first argument is the number of threads to be used for compilation. If no
|
||||||
# argument is given we default to one.
|
# argument is given we default to one.
|
||||||
compile_threads=1
|
compile_threads=1
|
||||||
@@ -66,13 +70,13 @@ unit_test () {
|
|||||||
|
|
||||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
||||||
gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest \
|
gcr.io/gem5-test/ubuntu-22.04_all-dependencies:${tag} \
|
||||||
scons build/ALL/unittests.${build} -j${compile_threads} \
|
scons build/ALL/unittests.${build} -j${compile_threads} \
|
||||||
--ignore-style
|
--ignore-style
|
||||||
}
|
}
|
||||||
|
|
||||||
# Ensure we have the latest docker images.
|
# Ensure we have the latest docker images.
|
||||||
docker pull gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest
|
docker pull gcr.io/gem5-test/ubuntu-22.04_all-dependencies:${tag}
|
||||||
|
|
||||||
# Run the unit tests.
|
# Run the unit tests.
|
||||||
unit_test opt
|
unit_test opt
|
||||||
@@ -81,7 +85,7 @@ unit_test debug
|
|||||||
# Run the gem5 long tests.
|
# Run the gem5 long tests.
|
||||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}"/tests --memory="${docker_mem_limit}" --rm \
|
"${gem5_root}"/tests --memory="${docker_mem_limit}" --rm \
|
||||||
gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest \
|
gcr.io/gem5-test/ubuntu-22.04_all-dependencies:${tag} \
|
||||||
./main.py run --length long -j${compile_threads} -t${run_threads} -vv
|
./main.py run --length long -j${compile_threads} -t${run_threads} -vv
|
||||||
|
|
||||||
# Unfortunately, due docker being unable run KVM, we do so separately.
|
# Unfortunately, due docker being unable run KVM, we do so separately.
|
||||||
@@ -101,10 +105,10 @@ cd "${gem5_root}/tests"
|
|||||||
cd "${gem5_root}"
|
cd "${gem5_root}"
|
||||||
|
|
||||||
# For the GPU tests we compile and run the GPU ISA inside a gcn-gpu container.
|
# For the GPU tests we compile and run the GPU ISA inside a gcn-gpu container.
|
||||||
docker pull gcr.io/gem5-test/gcn-gpu:latest
|
docker pull gcr.io/gem5-test/gcn-gpu:${tag}
|
||||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||||
gcr.io/gem5-test/gcn-gpu:latest bash -c \
|
gcr.io/gem5-test/gcn-gpu:${tag} bash -c \
|
||||||
"scons build/${gpu_isa}/gem5.opt -j${compile_threads} --ignore-style \
|
"scons build/${gpu_isa}/gem5.opt -j${compile_threads} --ignore-style \
|
||||||
|| (rm -rf build && scons build/${gpu_isa}/gem5.opt \
|
|| (rm -rf build && scons build/${gpu_isa}/gem5.opt \
|
||||||
-j${compile_threads} --ignore-style)"
|
-j${compile_threads} --ignore-style)"
|
||||||
@@ -119,7 +123,7 @@ mkdir -p tests/testing-results
|
|||||||
# basic GPU functionality is working.
|
# basic GPU functionality is working.
|
||||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||||
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
|
gcr.io/gem5-test/gcn-gpu:${tag} build/${gpu_isa}/gem5.opt \
|
||||||
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square
|
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square
|
||||||
|
|
||||||
# get HeteroSync
|
# get HeteroSync
|
||||||
@@ -131,7 +135,7 @@ wget -qN http://dist.gem5.org/dist/develop/test-progs/heterosync/gcn3/allSyncPri
|
|||||||
# atomics are tested.
|
# atomics are tested.
|
||||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||||
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
|
gcr.io/gem5-test/gcn-gpu:${tag} build/${gpu_isa}/gem5.opt \
|
||||||
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
|
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
|
||||||
allSyncPrims-1kernel --options="sleepMutex 10 16 4"
|
allSyncPrims-1kernel --options="sleepMutex 10 16 4"
|
||||||
|
|
||||||
@@ -142,7 +146,7 @@ docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
|||||||
# atomics are tested.
|
# atomics are tested.
|
||||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||||
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
|
gcr.io/gem5-test/gcn-gpu:${tag} build/${gpu_isa}/gem5.opt \
|
||||||
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
|
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
|
||||||
allSyncPrims-1kernel --options="lfTreeBarrUniq 10 16 4"
|
allSyncPrims-1kernel --options="lfTreeBarrUniq 10 16 4"
|
||||||
|
|
||||||
@@ -153,7 +157,7 @@ build_and_run_SST () {
|
|||||||
|
|
||||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --rm --memory="${docker_mem_limit}" \
|
"${gem5_root}" --rm --memory="${docker_mem_limit}" \
|
||||||
gcr.io/gem5-test/sst-env:latest bash -c "\
|
gcr.io/gem5-test/sst-env:${tag} bash -c "\
|
||||||
scons build/${isa}/libgem5_${variant}.so -j${compile_threads} \
|
scons build/${isa}/libgem5_${variant}.so -j${compile_threads} \
|
||||||
--without-tcmalloc --ignore-style; \
|
--without-tcmalloc --ignore-style; \
|
||||||
cd ext/sst; \
|
cd ext/sst; \
|
||||||
@@ -168,7 +172,7 @@ build_and_run_systemc () {
|
|||||||
rm -rf "${gem5_root}/build/ARM"
|
rm -rf "${gem5_root}/build/ARM"
|
||||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
||||||
gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest bash -c "\
|
gcr.io/gem5-test/ubuntu-22.04_all-dependencies:${tag} bash -c "\
|
||||||
scons -j${compile_threads} --ignore-style build/ARM/gem5.opt; \
|
scons -j${compile_threads} --ignore-style build/ARM/gem5.opt; \
|
||||||
scons --with-cxx-config --without-python --without-tcmalloc USE_SYSTEMC=0 \
|
scons --with-cxx-config --without-python --without-tcmalloc USE_SYSTEMC=0 \
|
||||||
-j${compile_threads} build/ARM/libgem5_opt.so \
|
-j${compile_threads} build/ARM/libgem5_opt.so \
|
||||||
@@ -176,7 +180,7 @@ scons --with-cxx-config --without-python --without-tcmalloc USE_SYSTEMC=0 \
|
|||||||
|
|
||||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
||||||
gcr.io/gem5-test/systemc-env:latest bash -c "\
|
gcr.io/gem5-test/systemc-env:${tag} bash -c "\
|
||||||
cd util/systemc/gem5_within_systemc; \
|
cd util/systemc/gem5_within_systemc; \
|
||||||
make -j${compile_threads}; \
|
make -j${compile_threads}; \
|
||||||
../../../build/ARM/gem5.opt ../../../configs/example/se.py -c \
|
../../../build/ARM/gem5.opt ../../../configs/example/se.py -c \
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ gem5_root="${dir}/.."
|
|||||||
# The per-container Docker memory limit.
|
# The per-container Docker memory limit.
|
||||||
docker_mem_limit="24g"
|
docker_mem_limit="24g"
|
||||||
|
|
||||||
|
# The docker tag to use (varies between develop, and versions on the staging
|
||||||
|
# branch)
|
||||||
|
tag="v22-1"
|
||||||
|
|
||||||
# We assume the first two arguments are the number of threads followed by the
|
# We assume the first two arguments are the number of threads followed by the
|
||||||
# GPU ISA to test. These default to 1 and GCN3_X86 is no argument is given.
|
# GPU ISA to test. These default to 1 and GCN3_X86 is no argument is given.
|
||||||
threads=1
|
threads=1
|
||||||
@@ -59,7 +63,7 @@ fi
|
|||||||
# Run the gem5 very-long tests.
|
# Run the gem5 very-long tests.
|
||||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}"/tests --memory="${docker_mem_limit}" --rm \
|
"${gem5_root}"/tests --memory="${docker_mem_limit}" --rm \
|
||||||
gcr.io/gem5-test/ubuntu-22.04_all-dependencies:latest \
|
gcr.io/gem5-test/ubuntu-22.04_all-dependencies:${tag} \
|
||||||
./main.py run --length very-long -j${threads} -t${threads} -vv
|
./main.py run --length very-long -j${threads} -t${threads} -vv
|
||||||
|
|
||||||
mkdir -p tests/testing-results
|
mkdir -p tests/testing-results
|
||||||
@@ -68,7 +72,7 @@ mkdir -p tests/testing-results
|
|||||||
# before pulling gem5 resources, make sure it doesn't exist already
|
# before pulling gem5 resources, make sure it doesn't exist already
|
||||||
docker run --rm --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run --rm --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||||
gcr.io/gem5-test/gcn-gpu:latest bash -c \
|
gcr.io/gem5-test/gcn-gpu:${tag} bash -c \
|
||||||
"rm -rf ${gem5_root}/gem5-resources"
|
"rm -rf ${gem5_root}/gem5-resources"
|
||||||
# delete Pannotia datasets and output files in case a failed regression run left
|
# delete Pannotia datasets and output files in case a failed regression run left
|
||||||
# them around
|
# them around
|
||||||
@@ -113,7 +117,7 @@ cd "${gem5_root}"
|
|||||||
# avoid needing to set all of these, we instead build a docker for it, which
|
# avoid needing to set all of these, we instead build a docker for it, which
|
||||||
# has all these variables pre-set in its Dockerfile
|
# has all these variables pre-set in its Dockerfile
|
||||||
# To avoid compiling gem5 multiple times, all GPU benchmarks will use this
|
# To avoid compiling gem5 multiple times, all GPU benchmarks will use this
|
||||||
docker pull gcr.io/gem5-test/gcn-gpu:latest
|
docker pull gcr.io/gem5-test/gcn-gpu:${tag}
|
||||||
docker build -t hacc-test-weekly ${gem5_root}/gem5-resources/src/gpu/halo-finder
|
docker build -t hacc-test-weekly ${gem5_root}/gem5-resources/src/gpu/halo-finder
|
||||||
|
|
||||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||||
|
|||||||
@@ -5,154 +5,154 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: gcn-gpu
|
context: gcn-gpu
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/gcn-gpu
|
image: gcr.io/gem5-test/gcn-gpu:v22-1
|
||||||
gpu-fs:
|
gpu-fs:
|
||||||
build:
|
build:
|
||||||
context: gpu-fs
|
context: gpu-fs
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/gpu-fs
|
image: gcr.io/gem5-test/gpu-fs:v22-1
|
||||||
sst:
|
sst:
|
||||||
build:
|
build:
|
||||||
context: sst-11.1.0
|
context: sst-11.1.0
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/sst-env
|
image: gcr.io/gem5-test/sst-env:v22-1
|
||||||
systemc:
|
systemc:
|
||||||
build:
|
build:
|
||||||
context: systemc-2.3.3
|
context: systemc-2.3.3
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/systemc-env
|
image: gcr.io/gem5-test/systemc-env:v22-1
|
||||||
ubuntu-18.04_all-dependencies:
|
ubuntu-18.04_all-dependencies:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-18.04_all-dependencies
|
context: ubuntu-18.04_all-dependencies
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/ubuntu-18.04_all-dependencies
|
image: gcr.io/gem5-test/ubuntu-18.04_all-dependencies:v22-1
|
||||||
ubuntu-20.04_all-dependencies:
|
ubuntu-20.04_all-dependencies:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-20.04_all-dependencies
|
context: ubuntu-20.04_all-dependencies
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/ubuntu-20.04_all-dependencies
|
image: gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-1
|
||||||
ubuntu-22.04_all-dependencies:
|
ubuntu-22.04_all-dependencies:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-22.04_all-dependencies
|
context: ubuntu-22.04_all-dependencies
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/ubuntu-22.04_all-dependencies
|
image: gcr.io/gem5-test/ubuntu-22.04_all-dependencies:v22-1
|
||||||
ubuntu-22.04_min-dependencies:
|
ubuntu-22.04_min-dependencies:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-22.04_min-dependencies
|
context: ubuntu-22.04_min-dependencies
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/ubuntu-22.04_min-dependencies
|
image: gcr.io/gem5-test/ubuntu-22.04_min-dependencies:v22-1
|
||||||
gcc-7:
|
gcc-7:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-18.04_gcc-version
|
context: ubuntu-18.04_gcc-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=7
|
- version=7
|
||||||
image: gcr.io/gem5-test/gcc-version-7
|
image: gcr.io/gem5-test/gcc-version-7:v22-1
|
||||||
gcc-8:
|
gcc-8:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-18.04_gcc-version
|
context: ubuntu-18.04_gcc-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=8
|
- version=8
|
||||||
image: gcr.io/gem5-test/gcc-version-8
|
image: gcr.io/gem5-test/gcc-version-8:v22-1
|
||||||
gcc-9:
|
gcc-9:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-20.04_gcc-version
|
context: ubuntu-20.04_gcc-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=9
|
- version=9
|
||||||
image: gcr.io/gem5-test/gcc-version-9
|
image: gcr.io/gem5-test/gcc-version-9:v22-1
|
||||||
gcc-10:
|
gcc-10:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-20.04_gcc-version
|
context: ubuntu-20.04_gcc-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=10
|
- version=10
|
||||||
image: gcr.io/gem5-test/gcc-version-10
|
image: gcr.io/gem5-test/gcc-version-10:v22-1
|
||||||
gcc-11:
|
gcc-11:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-22.04_gcc-version
|
context: ubuntu-22.04_gcc-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=11
|
- version=11
|
||||||
image: gcr.io/gem5-test/gcc-version-11
|
image: gcr.io/gem5-test/gcc-version-11:v22-1
|
||||||
gcc-12:
|
gcc-12:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-22.04_gcc-version
|
context: ubuntu-22.04_gcc-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=12
|
- version=12
|
||||||
image: gcr.io/gem5-test/gcc-version-12
|
image: gcr.io/gem5-test/gcc-version-12:v22-1
|
||||||
clang-6:
|
clang-6:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-18.04_clang-version
|
context: ubuntu-18.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=6.0
|
- version=6.0
|
||||||
image: gcr.io/gem5-test/clang-version-6.0
|
image: gcr.io/gem5-test/clang-version-6.0:v22-1
|
||||||
clang-7:
|
clang-7:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-18.04_clang-version
|
context: ubuntu-18.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=7
|
- version=7
|
||||||
image: gcr.io/gem5-test/clang-version-7
|
image: gcr.io/gem5-test/clang-version-7:v22-1
|
||||||
clang-8:
|
clang-8:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-18.04_clang-version
|
context: ubuntu-18.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=8
|
- version=8
|
||||||
image: gcr.io/gem5-test/clang-version-8
|
image: gcr.io/gem5-test/clang-version-8:v22-1
|
||||||
clang-9:
|
clang-9:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-18.04_clang-version
|
context: ubuntu-18.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=9
|
- version=9
|
||||||
image: gcr.io/gem5-test/clang-version-9
|
image: gcr.io/gem5-test/clang-version-9:v22-1
|
||||||
clang-10:
|
clang-10:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-20.04_clang-version
|
context: ubuntu-20.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=10
|
- version=10
|
||||||
image: gcr.io/gem5-test/clang-version-10
|
image: gcr.io/gem5-test/clang-version-10:v22-1
|
||||||
clang-11:
|
clang-11:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-20.04_clang-version
|
context: ubuntu-20.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=11
|
- version=11
|
||||||
image: gcr.io/gem5-test/clang-version-11
|
image: gcr.io/gem5-test/clang-version-11:v22-1
|
||||||
clang-12:
|
clang-12:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-20.04_clang-version
|
context: ubuntu-20.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=12
|
- version=12
|
||||||
image: gcr.io/gem5-test/clang-version-12
|
image: gcr.io/gem5-test/clang-version-12:v22-1
|
||||||
clang-13:
|
clang-13:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-22.04_clang-version
|
context: ubuntu-22.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=13
|
- version=13
|
||||||
image: gcr.io/gem5-test/clang-version-13
|
image: gcr.io/gem5-test/clang-version-13:v22-1
|
||||||
clang-14:
|
clang-14:
|
||||||
build:
|
build:
|
||||||
context: ubuntu-22.04_clang-version
|
context: ubuntu-22.04_clang-version
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
- version=14
|
- version=14
|
||||||
image: gcr.io/gem5-test/clang-version-14
|
image: gcr.io/gem5-test/clang-version-14:v22-1
|
||||||
llvm-gnu-cross-compiler-riscv64:
|
llvm-gnu-cross-compiler-riscv64:
|
||||||
build:
|
build:
|
||||||
context: llvm-gnu-cross-compiler-riscv64
|
context: llvm-gnu-cross-compiler-riscv64
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/llvm-gnu-cross-compiler-riscv64
|
image: gcr.io/gem5-test/llvm-gnu-cross-compiler-riscv64:v22-1
|
||||||
gem5-all-min-dependencies:
|
gem5-all-min-dependencies:
|
||||||
build:
|
build:
|
||||||
context: gem5-all-min-dependencies
|
context: gem5-all-min-dependencies
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: gcr.io/gem5-test/gem5-all-min-dependencies
|
image: gcr.io/gem5-test/gem5-all-min-dependencies:v22-1
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ RUN git clone -b rocm-4.0.0 \
|
|||||||
|
|
||||||
WORKDIR /ROCclr
|
WORKDIR /ROCclr
|
||||||
# The patch allows us to avoid building blit kernels on-the-fly in gem5
|
# The patch allows us to avoid building blit kernels on-the-fly in gem5
|
||||||
RUN wget -q -O - dist.gem5.org/dist/develop/rocm_patches/ROCclr.patch | git apply -v
|
RUN wget -q -O - dist.gem5.org/dist/v22-1/rocm_patches/ROCclr.patch | git apply -v
|
||||||
|
|
||||||
WORKDIR /ROCclr/build
|
WORKDIR /ROCclr/build
|
||||||
RUN cmake -DOPENCL_DIR="/ROCm-OpenCL-Runtime" \
|
RUN cmake -DOPENCL_DIR="/ROCm-OpenCL-Runtime" \
|
||||||
|
|||||||
Reference in New Issue
Block a user