Merge "misc: Merge branch stable into develop branch" into develop

This commit is contained in:
Bobby Bruce
2023-01-03 22:08:08 +00:00
13 changed files with 190 additions and 57 deletions

View File

@@ -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".

View File

@@ -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.",

View File

@@ -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

View File

@@ -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',

View File

@@ -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.

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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 \

View File

@@ -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 \

View File

@@ -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

View File

@@ -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" \