Matthew Poremba has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/54083 )

Change subject: tests: Add tests for Vega [WIP]
......................................................................

tests: Add tests for Vega [WIP]

Here are some "easy to reproduce" tests for VEGA_X86. It is quite
literally the weekly/nightly tests after a find/replace of GCN3_X86 to
VEGA_X86.

Change-Id: Ifedcdea5d7c1c8e9994559a20aea5e1954180772
---
A tests/weekly_vega.sh
A tests/nightly_vega.sh
2 files changed, 481 insertions(+), 0 deletions(-)



diff --git a/tests/nightly_vega.sh b/tests/nightly_vega.sh
new file mode 100755
index 0000000..1d55976
--- /dev/null
+++ b/tests/nightly_vega.sh
@@ -0,0 +1,146 @@
+#!/bin/bash
+
+# Copyright (c) 2021 The Regents of the University of California
+# All Rights Reserved.
+#
+# 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.
+
+set -e
+set -x
+
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+gem5_root="${dir}/.."
+
+# The first argument is the number of threads to be used for compilation. If no
+# argument is given we default to one.
+compile_threads=1
+if [[ $# -gt 0 ]]; then
+    compile_threads=$1
+fi
+
+# The second argument is the number of threads used to run gem5 (one gem5
+# instance per thread). If no argument is given we default to one.
+run_threads=1
+if [[ $# -gt 1 ]]; then
+    run_threads=$2
+fi
+
+build_target () {
+    isa=$1
+
+    # Try to build. If not, delete the build directory and try again.
+    # SCons is not perfect, and occasionally does not catch a necessary
+    # compilation: https://gem5.atlassian.net/browse/GEM5-753
+    docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}" --rm gcr.io/gem5-test/ubuntu-20.04_all-dependencies \
+            bash -c "scons build/${isa}/gem5.opt -j${compile_threads} \
+ || (rm -rf build && scons build/${isa}/gem5.opt -j${compile_threads})"
+}
+
+unit_test () {
+    build=$1
+
+    docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}" --rm gcr.io/gem5-test/ubuntu-20.04_all-dependencies \
+            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
+
+# Try to build the ISA targets.
+build_target NULL
+build_target RISCV
+build_target X86
+build_target ARM
+build_target SPARC
+build_target MIPS
+build_target POWER
+
+# Run the unit tests.
+unit_test opt
+unit_test debug
+
+# Run the gem5 long tests.
+docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}"/tests --rm gcr.io/gem5-test/ubuntu-20.04_all-dependencies \ + ./main.py run --length long -j${compile_threads} -t${run_threads} -vv
+
+# Run the GPU tests.
+# For the GPU tests we compile and run VEGA_X86 inside a gcn-gpu container.
+docker pull gcr.io/gem5-test/gcn-gpu:latest
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+    "${gem5_root}" gcr.io/gem5-test/gcn-gpu:latest bash -c \
+    "scons build/VEGA_X86/gem5.opt -j${compile_threads} \
+ || (rm -rf build && scons build/VEGA_X86/gem5.opt -j${compile_threads})"
+
+# get square
+wget -qN http://dist.gem5.org/dist/develop/test-progs/square/square
+
+mkdir -p tests/testing-results
+
+# Square is the simplest, fastest, more heavily tested GPU application
+# Thus, we always want to run this in the nightly regressions to make sure
+# basic GPU functionality is working.
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}" gcr.io/gem5-test/gcn-gpu:latest build/VEGA_X86/gem5.opt \
+    configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square
+
+# get HeteroSync
+wget -qN http://dist.gem5.org/dist/develop/test-progs/heterosync/gcn3/allSyncPrims-1kernel
+
+# run HeteroSync sleepMutex -- 16 WGs (4 per CU in default config), each doing +# 10 Ld/St per thread and 4 iterations of the critical section is a reasonable +# moderate contention case for the default 4 CU GPU config and help ensure GPU
+# atomics are tested.
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}" gcr.io/gem5-test/gcn-gpu:latest build/VEGA_X86/gem5.opt \
+    configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
+    allSyncPrims-1kernel --options="sleepMutex 10 16 4"
+
+# run HeteroSync LFBarr -- similar setup to sleepMutex above -- 16 WGs
+# accessing unique data and then joining a lock-free barrier, 10 Ld/St per
+# thread, 4 iterations of critical section. Again this is representative of a +# moderate contention case for the default 4 CU GPU config and help ensure GPU
+# atomics are tested.
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}" gcr.io/gem5-test/gcn-gpu:latest build/VEGA_X86/gem5.opt \
+    configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
+    allSyncPrims-1kernel --options="lfTreeBarrUniq 10 16 4"
+
+# Run an SST test.
+build_and_run_SST () {
+    isa=$1
+    variant=$2
+
+    docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+        "${gem5_root}" --rm gcr.io/gem5-test/sst-env \
+            bash -c "\
+scons build/${isa}/libgem5_${variant}.so -j${compile_threads} --without-tcmalloc; \
+cd ext/sst; \
+make clean; make -j ${compile_threads}; \
+sst --add-lib-path=./ sst/example.py; \
+"
+}
+build_and_run_SST RISCV opt
diff --git a/tests/weekly_vega.sh b/tests/weekly_vega.sh
new file mode 100644
index 0000000..e270aa4
--- /dev/null
+++ b/tests/weekly_vega.sh
@@ -0,0 +1,322 @@
+#!/bin/bash
+
+# Copyright (c) 2021 The Regents of the University of California
+# All Rights Reserved.
+#
+# 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.
+
+set -e
+set -x
+
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+gem5_root="${dir}/.."
+
+# We assume the lone argument is the number of threads. If no argument is
+# given we default to one.
+threads=1
+if [[ $# -gt 0 ]]; then
+    threads=$1
+fi
+
+# Run the gem5 very-long tests.
+docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}"/tests --rm gcr.io/gem5-test/ubuntu-20.04_all-dependencies \
+        ./main.py run --length very-long -j${threads} -t${threads} -vv
+
+mkdir -p tests/testing-results
+
+# GPU weekly tests start here
+# before pulling gem5 resources, make sure it doesn't exist already
+docker run --rm --volume "${gem5_root}":"${gem5_root}" -w \
+       "${gem5_root}" gcr.io/gem5-test/gcn-gpu:latest bash -c \
+       "rm -rf ${gem5_root}/gem5-resources"
+# delete Pannotia datasets and output files in case a failed regression run left
+# them around
+rm -f coAuthorsDBLP.graph 1k_128k.gr result.out
+
+# Pull gem5 resources to the root of the gem5 directory -- currently the
+# pre-built binares for LULESH are out-of-date and won't run correctly with
+# ROCm 4.0. In the meantime, we can build the binary as part of this script.
+# Moreover, DNNMark builds a library and thus doesn't have a binary, so we
+# need to build it before we run it.
+# Need to pull this first because HACC's docker requires this path to exist
+git clone -b develop https://gem5.googlesource.com/public/gem5-resources \
+    "${gem5_root}/gem5-resources"
+
+# For the GPU tests we compile and run VEGA_X86 inside a gcn-gpu container.
+# HACC requires setting numerous environment variables to run correctly. To +# 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 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 \
+    "${gem5_root}" hacc-test-weekly bash -c \
+    "scons build/VEGA_X86/gem5.opt -j${threads} \
+        || rm -rf build && scons build/VEGA_X86/gem5.opt -j${threads}"
+
+# Some of the apps we test use m5ops (and x86), so compile them for x86
+# Note: setting TERM in the environment is necessary as scons fails for m5ops if
+# it is not set.
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+    "${gem5_root}/util/m5" hacc-test-weekly bash -c \
+    "export TERM=xterm-256color ; scons build/x86/out/m5"
+
+# test LULESH
+# build LULESH
+docker run --rm --volume "${gem5_root}":"${gem5_root}" -w \
+       "${gem5_root}/gem5-resources/src/gpu/lulesh" \
+       -u $UID:$GID hacc-test-weekly bash -c \
+       "make"
+
+# LULESH is heavily used in the HPC community on GPUs, and does a good job of
+# stressing several GPU compute and memory components
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+    "${gem5_root}" hacc-test-weekly build/VEGA_X86/gem5.opt \
+ configs/example/apu_se.py -n3 --mem-size=8GB --reg-alloc-policy=dynamic \ + --benchmark-root="${gem5_root}/gem5-resources/src/gpu/lulesh/bin" -c lulesh
+
+# test DNNMark
+# setup cmake for DNNMark
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+     "${gem5_root}/gem5-resources/src/gpu/DNNMark" \
+     hacc-test-weekly bash -c "./setup.sh HIP"
+
+# make the DNNMark library
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+    "${gem5_root}/gem5-resources/src/gpu/DNNMark/build" \
+    hacc-test-weekly bash -c "make -j${threads}"
+
+# generate cachefiles -- since we are testing gfx801 and 4 CUs (default config)
+# in tester, we want cachefiles for this setup
+docker run --rm --volume "${gem5_root}":"${gem5_root}" -w \
+    "${gem5_root}/gem5-resources/src/gpu/DNNMark" \
+ "-v${gem5_root}/gem5-resources/src/gpu/DNNMark/cachefiles:/root/.cache/miopen/2.9.0" \
+    hacc-test-weekly bash -c \
+    "python3 generate_cachefiles.py cachefiles.csv --gfx-version=gfx801 \
+    --num-cus=4"
+
+# generate mmap data for DNNMark (makes simulation much faster)
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}/gem5-resources/src/gpu/DNNMark" hacc-test-weekly bash -c \
+    "g++ -std=c++0x generate_rand_data.cpp -o generate_rand_data"
+
+docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
+ "${gem5_root}/gem5-resources/src/gpu/DNNMark" hacc-test-weekly bash -c \
+    "./generate_rand_data"
+
+# now we can run DNNMark!
+# DNNMark is representative of several simple (fast) layers within ML
+# applications, which are heavily used in modern GPU applications. So, we want +# to make sure support for these applications are tested. Run three variants: +# fwd_softmax, bwd_bn, fwd_pool; these tests ensure we run a variety of ML kernels,
+# including both inference and training
+docker run --rm --volume "${gem5_root}":"${gem5_root}" -v \
+ "${gem5_root}/gem5-resources/src/gpu/DNNMark/cachefiles:/root/.cache/miopen/2.9.0" \
+       -w "${gem5_root}/gem5-resources/src/gpu/DNNMark" hacc-test-weekly \
+ "${gem5_root}/build/VEGA_X86/gem5.opt" "${gem5_root}/configs/example/apu_se.py" -n3 \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root="${gem5_root}/gem5-resources/src/gpu/DNNMark/build/benchmarks/test_fwd_softmax" \
+       -c dnnmark_test_fwd_softmax \
+ --options="-config ${gem5_root}/gem5-resources/src/gpu/DNNMark/config_example/softmax_config.dnnmark \
+       -mmap ${gem5_root}/gem5-resources/src/gpu/DNNMark/mmap.bin"
+
+docker run --rm --volume "${gem5_root}":"${gem5_root}" -v \
+ "${gem5_root}/gem5-resources/src/gpu/DNNMark/cachefiles:/root/.cache/miopen/2.9.0" \
+       -w "${gem5_root}/gem5-resources/src/gpu/DNNMark" hacc-test-weekly \
+ "${gem5_root}/build/VEGA_X86/gem5.opt" "${gem5_root}/configs/example/apu_se.py" -n3 \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root="${gem5_root}/gem5-resources/src/gpu/DNNMark/build/benchmarks/test_fwd_pool" \
+       -c dnnmark_test_fwd_pool \
+ --options="-config ${gem5_root}/gem5-resources/src/gpu/DNNMark/config_example/pool_config.dnnmark \
+       -mmap ${gem5_root}/gem5-resources/src/gpu/DNNMark/mmap.bin"
+
+docker run --rm --volume "${gem5_root}":"${gem5_root}" -v \
+ "${gem5_root}/gem5-resources/src/gpu/DNNMark/cachefiles:/root/.cache/miopen/2.9.0" \
+       -w "${gem5_root}/gem5-resources/src/gpu/DNNMark" hacc-test-weekly \
+ "${gem5_root}/build/VEGA_X86/gem5.opt" "${gem5_root}/configs/example/apu_se.py" -n3 \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root="${gem5_root}/gem5-resources/src/gpu/DNNMark/build/benchmarks/test_bwd_bn" \
+       -c dnnmark_test_bwd_bn \
+ --options="-config ${gem5_root}/gem5-resources/src/gpu/DNNMark/config_example/bn_config.dnnmark \
+       -mmap ${gem5_root}/gem5-resources/src/gpu/DNNMark/mmap.bin"
+
+# test HACC
+# build HACC
+docker run --rm -v ${PWD}:${PWD} -w \
+       "${gem5_root}/gem5-resources/src/gpu/halo-finder/src" -u $UID:$GID \
+       hacc-test-weekly make hip/ForceTreeTest
+
+# Like LULESH, HACC is heavily used in the HPC community and is used to stress
+# the GPU memory system
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+ ${gem5_root}/configs/example/apu_se.py -n3 --reg-alloc-policy=dynamic \ + --benchmark-root=${gem5_root}/gem5-resources/src/gpu/halo-finder/src/hip \
+       -c ForceTreeTest --options="0.5 0.1 64 0.1 1 N 12 rcb"
+
+# test Pannotia
+# Pannotia has 6 different benchmarks (BC, Color, FW, MIS, PageRank, SSSP), of +# which 3 (Color, PageRank, SSSP) have 2 different variants. Since they are
+# useful for testing irregular GPU application behavior, we test each.
+
+# build BC
+docker run --rm -v ${PWD}:${PWD} \
+       -w ${gem5_root}/gem5-resources/src/gpu/pannotia/bc -u $UID:$GID \
+       hacc-test-weekly bash -c \
+       "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
+# run BC
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+       --benchmark-root=gem5-resources/src/gpu/pannotia/bc/bin -c bc.gem5 \
+       --options="1k_128k.gr"
+
+# build Color Max
+docker run --rm -v ${gem5_root}:${gem5_root} -w \
+       ${gem5_root}/gem5-resources/src/gpu/pannotia/color -u $UID:$GID \
+       hacc-test-weekly bash -c \
+       "export GEM5_PATH=${gem5_root} ; make gem5-fusion"
+
+# run Color (Max) (use same input dataset as BC for faster testing)
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root=${gem5_root}/gem5-resources/src/gpu/pannotia/color/bin \
+       -c color_max.gem5 --options="1k_128k.gr 0"
+
+# build Color (MaxMin)
+docker run --rm -v ${gem5_root}:${gem5_root} -w \
+       ${gem5_root}/gem5-resources/src/gpu/pannotia/color -u $UID:$GID \
+       hacc-test-weekly bash -c \
+ "export GEM5_PATH=${gem5_root} ; export VARIANT=MAXMIN ; make gem5-fusion"
+
+# run Color (MaxMin) (use same input dataset as BC for faster testing)
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root=${gem5_root}/gem5-resources/src/gpu/pannotia/color/bin \
+       -c color_maxmin.gem5 --options="1k_128k.gr 0"
+
+# build FW
+docker run --rm -v ${gem5_root}:${gem5_root} -w \
+       ${gem5_root}/gem5-resources/src/gpu/pannotia/fw -u $UID:$GID \
+       hacc-test-weekly bash -c \
+       "export GEM5_PATH=${gem5_root} ; make gem5-fusion"
+
+# run FW (use same input dataset as BC for faster testing)
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root=${gem5_root}/gem5-resources/src/gpu/pannotia/fw/bin \
+       -c fw_hip.gem5 --options="1k_128k.gr"
+
+# build MIS
+docker run --rm -v ${gem5_root}:${gem5_root} -w \
+       ${gem5_root}/gem5-resources/src/gpu/pannotia/mis -u $UID:$GID \
+       hacc-test-weekly bash -c \
+       "export GEM5_PATH=${gem5_root} ; make gem5-fusion"
+
+# run MIS (use same input dataset as BC for faster testing)
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root=${gem5_root}/gem5-resources/src/gpu/pannotia/mis/bin \
+       -c mis_hip.gem5 --options="1k_128k.gr 0"
+
+# build Pagerank Default variant
+docker run --rm -v ${gem5_root}:${gem5_root} -w \
+       ${gem5_root}/gem5-resources/src/gpu/pannotia/pagerank -u $UID:$GID \
+       hacc-test-weekly bash -c \
+       "export GEM5_PATH=${gem5_root} ; make gem5-fusion"
+
+# get PageRank input dataset
+wget http://dist.gem5.org/dist/develop/datasets/pannotia/pagerank/coAuthorsDBLP.graph
+# run PageRank (Default)
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root=${gem5_root}/gem5-resources/src/gpu/pannotia/pagerank/bin \
+       -c pagerank.gem5 --options="coAuthorsDBLP.graph 1"
+
+# build PageRank SPMV variant
+docker run --rm -v ${gem5_root}:${gem5_root} -w \
+       ${gem5_root}/gem5-resources/src/gpu/pannotia/pagerank -u $UID:$GID \
+       hacc-test-weekly bash -c \
+ "export GEM5_PATH=${gem5_root} ; export VARIANT=SPMV ; make gem5-fusion"
+
+# run PageRank (SPMV)
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root=${gem5_root}/gem5-resources/src/gpu/pannotia/pagerank/bin \
+       -c pagerank_spmv.gem5 --options="coAuthorsDBLP.graph 1"
+
+# build SSSP CSR variant
+docker run --rm -v ${gem5_root}:${gem5_root} -w \
+       ${gem5_root}/gem5-resources/src/gpu/pannotia/sssp -u $UID:$GID \
+       hacc-test-weekly bash -c \
+       "export GEM5_PATH=${gem5_root} ; make gem5-fusion"
+
+# run SSSP (CSR) (use same input dataset as BC for faster testing)
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root=${gem5_root}/gem5-resources/src/gpu/pannotia/sssp/bin \
+       -c sssp.gem5 --options="1k_128k.gr 0"
+
+# build SSSP ELL variant
+docker run --rm -v ${gem5_root}:${gem5_root} -w \
+       ${gem5_root}/gem5-resources/src/gpu/pannotia/sssp -u $UID:$GID \
+       hacc-test-weekly bash -c \
+ "export GEM5_PATH=${gem5_root} ; export VARIANT=ELL ; make gem5-fusion"
+
+# run SSSP (ELL) (use same input dataset as BC for faster testing)
+docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
+       hacc-test-weekly ${gem5_root}/build/VEGA_X86/gem5.opt \
+       ${gem5_root}/configs/example/apu_se.py -n3 --mem-size=8GB \
+       --reg-alloc-policy=dynamic \
+ --benchmark-root=${gem5_root}/gem5-resources/src/gpu/pannotia/sssp/bin \
+       -c sssp_ell.gem5 --options="1k_128k.gr 0"
+
+# Delete the gem5 resources repo we created -- need to do in docker because of
+# cachefiles DNNMark creates
+docker run --rm --volume "${gem5_root}":"${gem5_root}" -w \
+       "${gem5_root}" hacc-test-weekly bash -c \
+       "rm -rf ${gem5_root}/gem5-resources"
+
+# delete Pannotia datasets we downloaded and output files it created
+rm -f coAuthorsDBLP.graph 1k_128k.gr result.out

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/54083
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v21-2
Gerrit-Change-Id: Ifedcdea5d7c1c8e9994559a20aea5e1954180772
Gerrit-Change-Number: 54083
Gerrit-PatchSet: 1
Gerrit-Owner: Matthew Poremba <matthew.pore...@amd.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to