miscL Merge stable branch (v22.0.0.1) into develop

Change-Id: I502c1ed209d2707ed6271cc31ab58f1e8884335b
This commit is contained in:
Bobby R. Bruce
2022-06-18 11:46:33 -04:00
14 changed files with 411 additions and 37 deletions

View File

@@ -1,3 +1,145 @@
# Version 22.0.0.1
**[HOTFIX]** Fixes relative import in "src/python/gem5/components/processors/simple_core.py".
The import `from python.gem5.utils.requires import requires` in v22.0.0.0 of gem5 is incorrect as it causes problems when executing gem5 binaries in certain directories (`python` isn't necessary included).
To resolve this, this import has been changed to `from ...utils.requires imports requires`.
This should work in all supported use-cases.
# Version 22.0.0.0
gem5 version 22.0 has been slightly delayed, but we a have a very strong release!
This release has 660 changes from 48 unique contributors.
While there are not too many big ticket features, the community has done a lot to improve the stablity and add bugfixes to gem5 over this release.
That said, we have a few cool new features like full system GPU support, a huge number of Arm improvements, and an improved HBM model.
See below for more details!
## New features
- [Arm now models DVM messages for TLBIs and DSBs accurately](https://gem5.atlassian.net/browse/GEM5-1097). This is implemented in the CHI protocol.
- EL2/EL3 support on by default in ArmSystem
- HBM controller which supports pseudo channels
- [Improved Ruby's SimpleNetwork routing](https://gem5.atlassian.net/browse/GEM5-920)
- Added x86 bare metal workload and better real mode support
- [Added round-robin arbitration when using multiple prefetchers](https://gem5.atlassian.net/browse/GEM5-1169)
- [KVM Emulation added for ARM GIGv3](https://gem5.atlassian.net/browse/GEM5-1138)
- Many improvements to the CHI protocol
## Many RISC-V instructions added
The following RISCV instructions have been added to gem5's RISC-V ISA:
* Zba instructions: add.uw, sh1add, sh1add.uw, sh2add, sh2add.uw, sh3add, sh3add.uw, slli.uw
* Zbb instructions: andn, orn, xnor, clz, clzw, ctz, ctzw, cpop, cpopw, max, maxu, min, minu, sext.b, sext.h, zext.h, rol, rolw, ror, rori, roriw, rorw, orc.b, rev8
* Zbc instructions: clmul, clmulh, clmulr
* Zbs instructions: bclr, bclri, bext, bexti, binv, binvi, bset, bseti
* Zfh instructions: flh, fsh, fmadd.h, fmsub.h, fnmsub.h, fnmadd.h, fadd.h, fsub.h, fmul.h, fdiv.h, fsqrt.h, fsgnj.h, fsgnjn.h, fsgnjx.h, fmin.h, fmax.h, fcvt.s.h, fcvt.h.s, fcvt.d.h, fcvt.h.d, fcvt.w.h, fcvt.h.w, fcvt.wu.h, fcvt.h.wu
### Improvements to the stdlib automatic resource downloader
The gem5 standard library's downloader has been re-engineered to more efficiently obtain the `resources.json` file.
It is now cached instead of retrieved on each resource retrieval.
The `resources.json` directory has been moved to a more permament URL at <http://resources.gem5.org/resources.json>.
Tests have also been added to ensure the resources module continues to function correctly.
### gem5 in SystemC support revamped
The gem5 in SystemC has been revamped to accomodate new research needs.
These changes include stability improvements and bugs fixes.
The gem5 testing suite has also been expanded to include gem5 in SystemC tests.
### Improved GPU support
Users may now simulate an AMD GPU device in full system mode using the ROCm 4.2 compute stack.
Until v21.2, gem5 only supported GPU simulation in Syscall-Emulation mode with ROCm 4.0.
See [`src/gpu-fs/README.md`](https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/gpu-fs/) in gem5-resources and example scripts in [`configs/example/gpufs/`](https://gem5.googlesource.com/public/gem5/+/refs/tags/v22.0.0.0/configs/example/gpufs/) for example scripts which run GPU full system simulations.
A [GPU Ruby random tester has been added](https://gem5-review.googlesource.com/c/public/gem5/+/59272) to help validate the correctness of the CPU and GPU Ruby coherence protocols as part of every kokoro check-in.
This helps validate the correctness of the protocols before new changes are checked in.
Currently the tester focuses on the protocols used with the GPU, but the ideas are extensible to other protocols.
The work is based on "Autonomous Data-Race-Free GPU Testing", IISWC 2019, Tuan Ta, Xianwei Zhang, Anthony Gutierrez, and Bradford M. Beckmann.
### An Arm board has been added to the gem5 Standard Library
Via [this change](https://gem5-review.googlesource.com/c/public/gem5/+/58910), an ARM Board, `ArmBoard`, has been added to the gem5 standard library.
This allows for an ARM system to be run using the gem5 stdlib components.
An example gem5 configuration script using this board can be found in `configs/example/gem5_library/arm-ubuntu-boot-exit.py`.
### `createAddrRanges` now supports NUMA configurations
When the system is configured for NUMA, it has multiple memory ranges, and each memory range is mapped to a corresponding NUMA node. For this, the change enables `createAddrRanges` to map address ranges to only a given HNFs.
Jira ticker here: https://gem5.atlassian.net/browse/GEM5-1187.
## API (user-facing) changes
### CPU model types are no longer simply the model name, but they are specialized for each ISA
For instance, the `O3CPU` is now the `X86O3CPU` and `ArmO3CPU`, etc.
This requires a number of changes if you have your own CPU models.
See https://gem5-review.googlesource.com/c/public/gem5/+/52490 for details.
Additionally, this requires changes in any configuration script which inherits from the old CPU types.
In many cases, if there is only a single ISA compiled the old name will still work.
However, this is not 100% true.
Finally, `CPU_MODELS` is no longer a parameter in `build_opts/`.
Now, if you want to compile a CPU model for a particular ISA you will have to add a new file for the CPU model in the `arch/` directory.
### Many changes in the CPU and ISA APIs
If you have any specialized CPU models or any ISAs which are not in the mainline, expect many changes when rebasing on this release.
- No longer use read/setIntReg (e.g., see https://gem5-review.googlesource.com/c/public/gem5/+/49766)
- InvalidRegClass has changed (e.g., see https://gem5-review.googlesource.com/c/public/gem5/+/49745)
- All of the register classes have changed (e.g., see https://gem5-review.googlesource.com/c/public/gem5/+/49764/)
- `initiateSpecialMemCmd` renamed to `initiateMemMgmtCmd` to generalize to other command beyond HTM (e.g., DVM/TLBI)
- `OperandDesc` class added (e.g., see https://gem5-review.googlesource.com/c/public/gem5/+/49731)
- Many cases of `TheISA` have been removed
## Bug Fixes
- [Fixed RISC-V call/ret instruction decoding](https://gem5-review.googlesource.com/c/public/gem5/+/58209). The fix adds IsReturn` and `IsCall` flags for RISC-V jump instructions by defining a new `JumpConstructor` in "standard.isa". Jira Ticket here: https://gem5.atlassian.net/browse/GEM5-1139.
- [Fixed x86 Read-Modify-Write behavior in multiple timing cores with classic caches](https://gem5-review.googlesource.com/c/public/gem5/+/55744). Jira Ticket here: https://gem5.atlassian.net/browse/GEM5-1105.
- [The circular buffer for the O3 LSQ has been fixed](https://gem5-review.googlesource.com/c/public/gem5/+/58649). This issue affected running the O3 CPU with large workloaders. Jira Ticket here: https://gem5.atlassian.net/browse/GEM5-1203.
- [Removed "memory-leak"-like error in RISC-V lr/sc implementation](https://gem5-review.googlesource.com/c/public/gem5/+/55663). Jira issue here: https://gem5.atlassian.net/browse/GEM5-1170.
- [Resolved issues with Ruby's memtest](https://gem5-review.googlesource.com/c/public/gem5/+/56811). In gem5 v21.2, If the size of the address range was smaller than the maximum number of outstandnig requests allowed downstream, the tester would get stuck trying to find a unique address. This has been resolved.
## Build-related changes
- Variable in `env` in the SConscript files now requires you to use `env['CONF']` to access them. Anywhere that `env['<VARIABLE>']` appeared should noe be `env['CONF']['<VARIABLE>']`
- Internal build files are now in a per-target `gem5.build` directory
- All build variable are per-target and there are no longer any shared variables.
## Other changes
- New bootloader is required for Arm VExpress_GEM5_Foundation platform. See https://gem5.atlassian.net/browse/GEM5-1222 for details.
- The MemCtrl interface has been updated to use more inheritance to make extending it to other memory types (e.g., HBM pseudo channels) easier.
# Version 21.2.1.1
**[HOTFIX]** In order to ensure v21 of gem5 remains compatible with future changes, the gem5 stdlib downloader has been updated to obtain the resources.json file from <https://resources.gem5.org/resources.json>.
As this domain is under the gem5 project control, unlike the previous googlesource URL, we can ensure longer-term stability.
The fix also ensures the downloader can parse plain-text JSON and base64 encoding of the resources.json file.
# Version 21.2.1.0
Version 21.2.1 is a minor gem5 release consisting of bug fixes. The 21.2.1 release:
* Fixes a bug in which [a RCV instruction is wrongly regarded as a branch](https://gem5.atlassian.net/browse/GEM5-1137).
* Removes outdated and incomplete standard library documentation.
Users wishing to learn more about the gem5 standard library should consult materials [on the gem5 website](https://www.gem5.org/documentation/gem5-stdlib/overview).
* Adds a VirtIO entropy device (VirtIORng) to RISC-V.
Without this, [RISCV Disk images can take considerable time to boot and occasionally do so in error](https://gem5.atlassian.net/browse/GEM5-1151).
* Removes the 'typing.final' decorator from the standard library.
'typing.final' was introduced in Python 3.8, but v21.2 of gem5 supports Python 3.6.
* Fixes the broken NPB stdlib example test.
# Version 21.2.0.0
## API (user-facing) changes

View File

@@ -418,13 +418,6 @@ for variant_path in variant_paths:
conf.CheckLinkFlag(
'-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:
error('\n'.join((
"Don't know what compiler options to use for your compiler.",

View File

@@ -213,7 +213,7 @@ def define_defaults(defaults):
os.pardir,
os.pardir))
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-0'
defaults.resource_path = os.path.abspath(os.path.join(defaults.base_dir,
'tests',
'gem5',

View File

@@ -31,7 +31,7 @@ PROJECT_NAME = gem5
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = DEVELOP-FOR-V22-0
PROJECT_NUMBER = v22.0.0.1
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.

View File

@@ -32,6 +32,6 @@ namespace gem5
/**
* @ingroup api_base_utils
*/
const char *gem5Version = "[DEVELOP-FOR-v22.0]";
const char *gem5Version = "22.0.0.1";
} // namespace gem5

View File

@@ -0,0 +1,48 @@
# -*- mode:python -*-
# Copyright (c) 2022 Institute of Computing Technology, Chinese
# Academy of Sciences
# All rights reserved.
#
# The license below extends only to copyright in the software and shall
# not be construed as granting a license to any other intellectual
# property including but not limited to intellectual property relating
# to a hardware implementation of the functionality of the software
# licensed hereunder. You may use the software subject to the license
# terms below provided that you ensure that this notice is replicated
# unmodified and in its entirety in all distributions of the software,
# modified or unmodified, in source code or in binary form.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met: redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer;
# redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution;
# neither the name of the copyright holders nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from m5.params import *
from m5.proxy import *
from m5.objects.VirtIO import VirtIODeviceBase
class VirtIORng(VirtIODeviceBase):
type = 'VirtIORng'
cxx_header = 'dev/virtio/rng.hh'
cxx_class = 'gem5::VirtIORng'
qSize = Param.Unsigned(16, "Request queue size")

94
src/dev/virtio/rng 2.cc Normal file
View File

@@ -0,0 +1,94 @@
/*
* Copyright (c) 2022 Institute of Computing Technology, Chinese Academy
* of Sciences
* All rights reserved
*
* The license below extends only to copyright in the software and shall
* not be construed as granting a license to any other intellectual
* property including but not limited to intellectual property relating
* to a hardware implementation of the functionality of the software
* licensed hereunder. You may use the software subject to the license
* terms below provided that you ensure that this notice is replicated
* unmodified and in its entirety in all distributions of the software,
* modified or unmodified, in source code or in binary form.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "dev/virtio/rng.hh"
#include "base/random.hh"
#include "debug/VIORng.hh"
#include "params/VirtIORng.hh"
#include "sim/system.hh"
namespace gem5
{
VirtIORng::VirtIORng(const Params &params)
: VirtIODeviceBase(params, ID_RNG, 0, 0),
qReq(params.system->physProxy, byteOrder, params.qSize, *this)
{
registerQueue(qReq);
}
VirtIORng::~VirtIORng()
{
}
VirtIORng::RngQueue::RngQueue(PortProxy &proxy, ByteOrder bo, uint16_t size,
VirtIORng &_parent)
: VirtQueue(proxy, bo, size), parent(_parent)
{
}
void
VirtIORng::readConfig(PacketPtr pkt, Addr cfgOffset)
{
// There are no configuration for RNG device
pkt->makeResponse();
}
void
VirtIORng::RngQueue::trySend()
{
DPRINTF(VIORng, "try send\n");
VirtDescriptor *d;
while ((d = consumeDescriptor())) {
DPRINTF(VIORng, "Got descriptor (len: %i)\n", d->size());
size_t len = 0;
while (len < d->size()) {
uint8_t byte = gem5::random_mt.random<uint8_t>();
d->chainWrite(len, &byte, sizeof(uint8_t));
++len;
}
// Tell the guest that we are done with this descriptor.
produceDescriptor(d, len);
parent.kick();
}
}
} // namespace gem5

97
src/dev/virtio/rng 2.hh Normal file
View File

@@ -0,0 +1,97 @@
/*
* Copyright (c) 2022 Institute of Computing Technology, Chinese Academy
* of Sciences
* All rights reserved
*
* The license below extends only to copyright in the software and shall
* not be construed as granting a license to any other intellectual
* property including but not limited to intellectual property relating
* to a hardware implementation of the functionality of the software
* licensed hereunder. You may use the software subject to the license
* terms below provided that you ensure that this notice is replicated
* unmodified and in its entirety in all distributions of the software,
* modified or unmodified, in source code or in binary form.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __DEV_VIRTIO_RNG_HH__
#define __DEV_VIRTIO_RNG_HH__
#include "base/compiler.hh"
#include "dev/virtio/base.hh"
namespace gem5
{
struct VirtIORngParams;
/**
* VirtIO Rng
*
* @see https://github.com/rustyrussell/virtio-spec
* @see http://docs.oasis-open.org/virtio/virtio/v1.0/virtio-v1.0.html
*/
class VirtIORng : public VirtIODeviceBase
{
public:
typedef VirtIORngParams Params;
VirtIORng(const Params &params);
virtual ~VirtIORng();
void readConfig(PacketPtr pkt, Addr cfgOffset);
protected:
/** VirtIO device ID */
static const DeviceId ID_RNG = 0x04;
protected:
/**
* Virtqueue for data going from the host to the guest.
*/
class RngQueue
: public VirtQueue
{
public:
RngQueue(PortProxy &proxy, ByteOrder bo, uint16_t size,
VirtIORng &_parent);
virtual ~RngQueue() {}
void onNotify() { trySend(); }
/** Try to send data pending data from the terminal. */
void trySend();
std::string name() const { return parent.name() + ".qRecv"; }
protected:
VirtIORng &parent;
};
/** Receive queue for port 0 */
RngQueue qReq;
};
} // namespace gem5
#endif // __DEV_VIRTIO_RNG_HH__

View File

@@ -25,7 +25,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from typing import Optional
from python.gem5.utils.requires import requires
from ...utils.requires import requires
from ..processors.abstract_core import AbstractCore
from .cpu_types import CPUTypes

View File

@@ -54,7 +54,7 @@ def _resources_json_version_required() -> str:
"""
Specifies the version of resources.json to obtain.
"""
return "develop"
return "22.0"
def _get_resources_json_uri() -> str:
return "https://resources.gem5.org/resources.json"

View File

@@ -103,7 +103,7 @@ for compiler in ${images[@]}; do
# targets for this test
build_indices=(${build_permutation[@]:0:$builds_count})
repo_name="${base_url}/${compiler}:latest"
repo_name="${base_url}/${compiler}:v22-0"
# Grab compiler image
docker pull $repo_name >/dev/null

View File

@@ -69,7 +69,7 @@ build_target () {
# compilation: https://gem5.atlassian.net/browse/GEM5-753
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 \
bash -c "scons build/${isa}/gem5.opt -j${compile_threads} \
|| (rm -rf build && scons build/${isa}/gem5.opt -j${compile_threads})"
}
@@ -79,12 +79,12 @@ unit_test () {
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 \
scons build/NULL/unittests.${build} -j${compile_threads}
}
# Ensure we have the latest docker images.
docker pull gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest
docker pull gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0
# Try to build the ISA targets.
build_target NULL
@@ -102,7 +102,7 @@ unit_test debug
# Run the gem5 long tests.
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}"/tests --memory="${docker_mem_limit}" --rm \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 \
./main.py run --length long -j${compile_threads} -t${run_threads} -vv
# Unfortunately, due docker being unable run KVM, we do so separately.
@@ -117,10 +117,10 @@ cd "${gem5_root}/tests"
cd "${gem5_root}"
# 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:v22-0
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" \
gcr.io/gem5-test/gcn-gpu:latest bash -c \
gcr.io/gem5-test/gcn-gpu:v22-0 bash -c \
"scons build/${gpu_isa}/gem5.opt -j${compile_threads} \
|| (rm -rf build && scons build/${gpu_isa}/gem5.opt -j${compile_threads})"
@@ -134,7 +134,7 @@ mkdir -p tests/testing-results
# basic GPU functionality is working.
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" \
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
gcr.io/gem5-test/gcn-gpu:v22-0 build/${gpu_isa}/gem5.opt \
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square
# get HeteroSync
@@ -146,7 +146,7 @@ wget -qN http://dist.gem5.org/dist/develop/test-progs/heterosync/gcn3/allSyncPri
# atomics are tested.
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" \
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
gcr.io/gem5-test/gcn-gpu:v22-0 build/${gpu_isa}/gem5.opt \
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
allSyncPrims-1kernel --options="sleepMutex 10 16 4"
@@ -157,7 +157,7 @@ docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
# atomics are tested.
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" \
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
gcr.io/gem5-test/gcn-gpu:v22-0 build/${gpu_isa}/gem5.opt \
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
allSyncPrims-1kernel --options="lfTreeBarrUniq 10 16 4"
@@ -168,7 +168,7 @@ build_and_run_SST () {
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --rm --memory="${docker_mem_limit}" \
gcr.io/gem5-test/sst-env:latest bash -c "\
gcr.io/gem5-test/sst-env:v22-0 bash -c "\
scons build/${isa}/libgem5_${variant}.so -j${compile_threads} --without-tcmalloc; \
cd ext/sst; \
make clean; make -j ${compile_threads}; \
@@ -182,7 +182,7 @@ build_and_run_systemc () {
rm -rf "${gem5_root}/build/ARM"
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest bash -c "\
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 bash -c "\
scons -j${compile_threads} build/ARM/gem5.opt; \
scons --with-cxx-config --without-python --without-tcmalloc USE_SYSTEMC=0 \
-j${compile_threads} build/ARM/libgem5_opt.so \
@@ -190,7 +190,7 @@ scons --with-cxx-config --without-python --without-tcmalloc USE_SYSTEMC=0 \
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
gcr.io/gem5-test/systemc-env:latest bash -c "\
gcr.io/gem5-test/systemc-env:v22-0 bash -c "\
cd util/systemc/gem5_within_systemc; \
make -j${compile_threads}; \
../../../build/ARM/gem5.opt ../../../configs/example/se.py -c \

View File

@@ -59,7 +59,7 @@ fi
# Run the gem5 very-long tests.
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}"/tests --memory="${docker_mem_limit}" --rm \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 \
./main.py run --length very-long -j${threads} -t${threads} -vv
mkdir -p tests/testing-results
@@ -68,7 +68,7 @@ mkdir -p tests/testing-results
# before pulling gem5 resources, make sure it doesn't exist already
docker run --rm --volume "${gem5_root}":"${gem5_root}" -w \
"${gem5_root}" --memory="${docker_mem_limit}" \
gcr.io/gem5-test/gcn-gpu:latest bash -c \
gcr.io/gem5-test/gcn-gpu:v22-0 bash -c \
"rm -rf ${gem5_root}/gem5-resources"
# delete Pannotia datasets and output files in case a failed regression run left
# them around
@@ -100,12 +100,12 @@ git clone https://gem5.googlesource.com/public/gem5-resources \
cd "${gem5_root}/gem5-resources"
git checkout develop
#version_tag=$(git tag | grep "v21.2")
#
#if [[ ${version_tag} != "" ]]; then
# git checkout "${version_tag}"
#fi
#
version_tag=$(git tag | grep "v22.0")
if [[ ${version_tag} != "" ]]; then
git checkout "${version_tag}"
fi
cd "${gem5_root}"
# For the GPU tests we compile and run the GPU ISA inside a gcn-gpu container.
@@ -113,7 +113,7 @@ cd "${gem5_root}"
# avoid needing to set all of these, we instead build a docker for it, which
# has all these variables pre-set in its Dockerfile
# 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:v22-0
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 \
@@ -240,7 +240,7 @@ docker run --rm -v ${PWD}:${PWD} \
"export GEM5_PATH=${gem5_root} ; make gem5-fusion"
# # get input dataset for BC test
wget http://dist.gem5.org/dist/develop/datasets/pannotia/bc/1k_128k.gr
wget http://dist.gem5.org/dist/v22-0/datasets/pannotia/bc/1k_128k.gr
# run BC
docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
--memory="${docker_mem_limit}" hacc-test-weekly \
@@ -317,7 +317,7 @@ docker run --rm -v ${gem5_root}:${gem5_root} -w \
"export GEM5_PATH=${gem5_root} ; make gem5-fusion"
# get PageRank input dataset
wget http://dist.gem5.org/dist/develop/datasets/pannotia/pagerank/coAuthorsDBLP.graph
wget http://dist.gem5.org/dist/v22-0/datasets/pannotia/pagerank/coAuthorsDBLP.graph
# run PageRank (Default)
docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
--memory="${docker_mem_limit}" hacc-test-weekly \

View File

@@ -69,7 +69,7 @@ RUN git clone -b rocm-4.0.0 \
WORKDIR /ROCclr
# 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-0/rocm_patches/ROCclr.patch | git apply -v
WORKDIR /ROCclr/build
RUN cmake -DOPENCL_DIR="/ROCm-OpenCL-Runtime" \