gem5-dev@gem5.org

The gem5 Developer List

View all threads

[L] Change in gem5/gem5[release-staging-v23-0]: configs: Create base GPUFS vega config and atomic config

BB
Bobby Bruce (Gerrit)
Thu, Jul 6, 2023 1:10 PM

Bobby Bruce has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/72078?usp=email )

Change subject: configs: Create base GPUFS vega config and atomic config
......................................................................

configs: Create base GPUFS vega config and atomic config

Move the Vega KVM script code to a common base file and add scripts for
KVM and atomic. Since atomic is now possible in GPUFS this gives a way
to run it without editing the current scripts.

Change-Id: I094bc4d4df856563535c28c1f6d6cc045d6734cd
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/71939
Tested-by: kokoro noreply+kokoro@google.com
Reviewed-by: Matt Sinclair mattdsinclair@gmail.com
Maintainer: Matt Sinclair mattdsinclair@gmail.com
(cherry picked from commit 05ffa354268301821518fd430d069cd23049527d)

A configs/example/gpufs/vega10.py
A configs/example/gpufs/vega10_atomic.py
M configs/example/gpufs/vega10_kvm.py
3 files changed, 188 insertions(+), 124 deletions(-)

diff --git a/configs/example/gpufs/vega10.py
b/configs/example/gpufs/vega10.py
new file mode 100644
index 0000000..9eff5a2
--- /dev/null
+++ b/configs/example/gpufs/vega10.py
@@ -0,0 +1,153 @@
+# Copyright (c) 2022-2023 Advanced Micro Devices, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. 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.
+#
+# 3. Neither the name of the copyright holder 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 HOLDER 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.
+
+import m5
+import runfs
+import base64
+import tempfile
+import argparse
+import sys
+import os
+
+from amd import AmdGPUOptions
+from common import Options
+from common import GPUTLBOptions
+from ruby import Ruby
+
+
+demo_runscript_without_checkpoint = """
+export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
+export HSA_ENABLE_INTERRUPT=0
+dmesg -n8
+dd if=/root/roms/vega10.rom of=/dev/mem bs=1k seek=768 count=128
+if [ ! -f /lib/modules/uname -r/updates/dkms/amdgpu.ko ]; then

  • echo "ERROR: Missing DKMS package for kernel uname -r. Exiting gem5."
  • /sbin/m5 exit
    +fi
    +modprobe -v amdgpu ip_block_mask=0xff ppfeaturemask=0 dpm=0 audio=0
    +echo "Running {} {}"
    +echo "{}" | base64 -d > myapp
    +chmod +x myapp
    +./myapp {}
    +/sbin/m5 exit
    +"""

+demo_runscript_with_checkpoint = """
+export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
+export HSA_ENABLE_INTERRUPT=0
+dmesg -n8
+dd if=/root/roms/vega10.rom of=/dev/mem bs=1k seek=768 count=128
+if [ ! -f /lib/modules/uname -r/updates/dkms/amdgpu.ko ]; then

  • echo "ERROR: Missing DKMS package for kernel uname -r. Exiting gem5."
  • /sbin/m5 exit
    +fi
    +modprobe -v amdgpu ip_block_mask=0xff ppfeaturemask=0 dpm=0 audio=0
    +echo "Running {} {}"
    +echo "{}" | base64 -d > myapp
    +chmod +x myapp
    +/sbin/m5 checkpoint
    +./myapp {}
    +/sbin/m5 exit
    +"""

+def addDemoOptions(parser):

  • parser.add_argument(
  •    "-a", "--app", default=None, help="GPU application to run"
    
  • )
  • parser.add_argument(
  •    "-o", "--opts", default="", help="GPU application arguments"
    
  • )

+def runVegaGPUFS(cpu_type):

  • parser = argparse.ArgumentParser()
  • runfs.addRunFSOptions(parser)
  • Options.addCommonOptions(parser)
  • AmdGPUOptions.addAmdGPUOptions(parser)
  • Ruby.define_options(parser)
  • GPUTLBOptions.tlb_options(parser)
  • addDemoOptions(parser)
  • Parse now so we can override options

  • args = parser.parse_args()
  • demo_runscript = ""
  • Create temp script to run application

  • if args.app is None:
  •    print(f"No application given. Use {sys.argv[0]} -a <app>")
    
  •    sys.exit(1)
    
  • elif args.kernel is None:
  •    print(f"No kernel path given. Use {sys.argv[0]} --kernel  
    

<vmlinux>")

  •    sys.exit(1)
    
  • elif args.disk_image is None:
  •    print(f"No disk path given. Use {sys.argv[0]} --disk-image  
    

<linux>")

  •    sys.exit(1)
    
  • elif args.gpu_mmio_trace is None:
  •    print(f"No MMIO trace path. Use {sys.argv[0]} --gpu-mmio-trace  
    

<path>")

  •    sys.exit(1)
    
  • elif not os.path.isfile(args.app):
  •    print("Could not find applcation", args.app)
    
  •    sys.exit(1)
    
  • Choose runscript Based on whether any checkpointing args are set

  • if args.checkpoint_dir is not None:
  •    demo_runscript = demo_runscript_with_checkpoint
    
  • else:
  •    demo_runscript = demo_runscript_without_checkpoint
    
  • with open(os.path.abspath(args.app), "rb") as binfile:
  •    encodedBin = base64.b64encode(binfile.read()).decode()
    
  • _, tempRunscript = tempfile.mkstemp()
  • with open(tempRunscript, "w") as b64file:
  •    runscriptStr = demo_runscript.format(
    
  •        args.app, args.opts, encodedBin, args.opts
    
  •    )
    
  •    b64file.write(runscriptStr)
    
  • if args.second_disk == None:
  •    args.second_disk = args.disk_image
    
  • Defaults for Vega10

  • args.ruby = True
  • args.cpu_type = cpu_type
  • args.num_cpus = 1
  • args.mem_size = "3GB"
  • args.dgpu = True
  • args.dgpu_mem_size = "16GB"
  • args.dgpu_start = "0GB"
  • args.checkpoint_restore = 0
  • args.disjoint = True
  • args.timing_gpu = True
  • args.script = tempRunscript
  • args.dgpu_xor_low_bit = 0
  • Run gem5

  • runfs.runGpuFSSystem(args)
    diff --git a/configs/example/gpufs/vega10_atomic.py
    b/configs/example/gpufs/vega10_atomic.py
    new file mode 100644
    index 0000000..4ff2cc2
    --- /dev/null
    +++ b/configs/example/gpufs/vega10_atomic.py
    @@ -0,0 +1,32 @@
    +# Copyright (c) 2023 Advanced Micro Devices, Inc.
    +# All rights reserved.
    +#
    +# Redistribution and use in source and binary forms, with or without
    +# modification, are permitted provided that the following conditions are
    met:
    +#
    +# 1. Redistributions of source code must retain the above copyright notice,
    +# this list of conditions and the following disclaimer.
    +#
    +# 2. 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.
    +#
    +# 3. Neither the name of the copyright holder 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 HOLDER 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.

+import vega10
+
+vega10.runVegaGPUFS("AtomicSimpleCPU")
diff --git a/configs/example/gpufs/vega10_kvm.py
b/configs/example/gpufs/vega10_kvm.py
index 11f9fe2..39dc5e0 100644
--- a/configs/example/gpufs/vega10_kvm.py
+++ b/configs/example/gpufs/vega10_kvm.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2022 Advanced Micro Devices, Inc.
+# Copyright (c) 2022-2023 Advanced Micro Devices, Inc.

All rights reserved.

Redistribution and use in source and binary forms, with or without

@@ -27,127 +27,6 @@

ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF

THE

POSSIBILITY OF SUCH DAMAGE.

-import m5
-import runfs
-import base64
-import tempfile
-import argparse
-import sys
-import os
+import vega10

-from amd import AmdGPUOptions
-from common import Options
-from common import GPUTLBOptions
-from ruby import Ruby

-demo_runscript_without_checkpoint = """
-export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
-export HSA_ENABLE_INTERRUPT=0
-dmesg -n8
-dd if=/root/roms/vega10.rom of=/dev/mem bs=1k seek=768 count=128
-if [ ! -f /lib/modules/uname -r/updates/dkms/amdgpu.ko ]; then

  • echo "ERROR: Missing DKMS package for kernel uname -r. Exiting gem5."
  • /sbin/m5 exit
    -fi
    -modprobe -v amdgpu ip_block_mask=0xff ppfeaturemask=0 dpm=0 audio=0
    -echo "Running {} {}"
    -echo "{}" | base64 -d > myapp
    -chmod +x myapp
    -./myapp {}
    -/sbin/m5 exit
    -"""

-demo_runscript_with_checkpoint = """
-export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
-export HSA_ENABLE_INTERRUPT=0
-dmesg -n8
-dd if=/root/roms/vega10.rom of=/dev/mem bs=1k seek=768 count=128
-if [ ! -f /lib/modules/uname -r/updates/dkms/amdgpu.ko ]; then

  • echo "ERROR: Missing DKMS package for kernel uname -r. Exiting gem5."
  • /sbin/m5 exit
    -fi
    -modprobe -v amdgpu ip_block_mask=0xff ppfeaturemask=0 dpm=0 audio=0
    -echo "Running {} {}"
    -echo "{}" | base64 -d > myapp
    -chmod +x myapp
    -/sbin/m5 checkpoint
    -./myapp {}
    -/sbin/m5 exit
    -"""

-def addDemoOptions(parser):

  • parser.add_argument(
  •    "-a", "--app", default=None, help="GPU application to run"
    
  • )
  • parser.add_argument(
  •    "-o", "--opts", default="", help="GPU application arguments"
    
  • )

-if name == "m5_main":

  • parser = argparse.ArgumentParser()
  • runfs.addRunFSOptions(parser)
  • Options.addCommonOptions(parser)
  • AmdGPUOptions.addAmdGPUOptions(parser)
  • Ruby.define_options(parser)
  • GPUTLBOptions.tlb_options(parser)
  • addDemoOptions(parser)
  • Parse now so we can override options

  • args = parser.parse_args()
  • demo_runscript = ""
  • Create temp script to run application

  • if args.app is None:
  •    print(f"No application given. Use {sys.argv[0]} -a <app>")
    
  •    sys.exit(1)
    
  • elif args.kernel is None:
  •    print(f"No kernel path given. Use {sys.argv[0]} --kernel  
    

<vmlinux>")

  •    sys.exit(1)
    
  • elif args.disk_image is None:
  •    print(f"No disk path given. Use {sys.argv[0]} --disk-image  
    

<linux>")

  •    sys.exit(1)
    
  • elif args.gpu_mmio_trace is None:
  •    print(f"No MMIO trace path. Use {sys.argv[0]} --gpu-mmio-trace  
    

<path>")

  •    sys.exit(1)
    
  • elif not os.path.isfile(args.app):
  •    print("Could not find applcation", args.app)
    
  •    sys.exit(1)
    
  • Choose runscript Based on whether any checkpointing args are set

  • if args.checkpoint_dir is not None:
  •    demo_runscript = demo_runscript_with_checkpoint
    
  • else:
  •    demo_runscript = demo_runscript_without_checkpoint
    
  • with open(os.path.abspath(args.app), "rb") as binfile:
  •    encodedBin = base64.b64encode(binfile.read()).decode()
    
  • _, tempRunscript = tempfile.mkstemp()
  • with open(tempRunscript, "w") as b64file:
  •    runscriptStr = demo_runscript.format(
    
  •        args.app, args.opts, encodedBin, args.opts
    
  •    )
    
  •    b64file.write(runscriptStr)
    
  • if args.second_disk == None:
  •    args.second_disk = args.disk_image
    
  • Defaults for Vega10

  • args.ruby = True
  • args.cpu_type = "X86KvmCPU"
  • args.num_cpus = 1
  • args.mem_size = "3GB"
  • args.dgpu = True
  • args.dgpu_mem_size = "16GB"
  • args.dgpu_start = "0GB"
  • args.checkpoint_restore = 0
  • args.disjoint = True
  • args.timing_gpu = True
  • args.script = tempRunscript
  • args.dgpu_xor_low_bit = 0
  • Run gem5

  • runfs.runGpuFSSystem(args)
    +vega10.runVegaGPUFS("X86KvmCPU")

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

Gerrit-MessageType: newchange
Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v23-0
Gerrit-Change-Id: I094bc4d4df856563535c28c1f6d6cc045d6734cd
Gerrit-Change-Number: 72078
Gerrit-PatchSet: 1
Gerrit-Owner: Bobby Bruce bbruce@ucdavis.edu
Gerrit-CC: Matthew Poremba matthew.poremba@amd.com

Bobby Bruce has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/72078?usp=email ) Change subject: configs: Create base GPUFS vega config and atomic config ...................................................................... configs: Create base GPUFS vega config and atomic config Move the Vega KVM script code to a common base file and add scripts for KVM and atomic. Since atomic is now possible in GPUFS this gives a way to run it without editing the current scripts. Change-Id: I094bc4d4df856563535c28c1f6d6cc045d6734cd Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/71939 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com> Maintainer: Matt Sinclair <mattdsinclair@gmail.com> (cherry picked from commit 05ffa354268301821518fd430d069cd23049527d) --- A configs/example/gpufs/vega10.py A configs/example/gpufs/vega10_atomic.py M configs/example/gpufs/vega10_kvm.py 3 files changed, 188 insertions(+), 124 deletions(-) diff --git a/configs/example/gpufs/vega10.py b/configs/example/gpufs/vega10.py new file mode 100644 index 0000000..9eff5a2 --- /dev/null +++ b/configs/example/gpufs/vega10.py @@ -0,0 +1,153 @@ +# Copyright (c) 2022-2023 Advanced Micro Devices, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# 2. 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. +# +# 3. Neither the name of the copyright holder 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 HOLDER 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. + +import m5 +import runfs +import base64 +import tempfile +import argparse +import sys +import os + +from amd import AmdGPUOptions +from common import Options +from common import GPUTLBOptions +from ruby import Ruby + + +demo_runscript_without_checkpoint = """\ +export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH +export HSA_ENABLE_INTERRUPT=0 +dmesg -n8 +dd if=/root/roms/vega10.rom of=/dev/mem bs=1k seek=768 count=128 +if [ ! -f /lib/modules/`uname -r`/updates/dkms/amdgpu.ko ]; then + echo "ERROR: Missing DKMS package for kernel `uname -r`. Exiting gem5." + /sbin/m5 exit +fi +modprobe -v amdgpu ip_block_mask=0xff ppfeaturemask=0 dpm=0 audio=0 +echo "Running {} {}" +echo "{}" | base64 -d > myapp +chmod +x myapp +./myapp {} +/sbin/m5 exit +""" + +demo_runscript_with_checkpoint = """\ +export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH +export HSA_ENABLE_INTERRUPT=0 +dmesg -n8 +dd if=/root/roms/vega10.rom of=/dev/mem bs=1k seek=768 count=128 +if [ ! -f /lib/modules/`uname -r`/updates/dkms/amdgpu.ko ]; then + echo "ERROR: Missing DKMS package for kernel `uname -r`. Exiting gem5." + /sbin/m5 exit +fi +modprobe -v amdgpu ip_block_mask=0xff ppfeaturemask=0 dpm=0 audio=0 +echo "Running {} {}" +echo "{}" | base64 -d > myapp +chmod +x myapp +/sbin/m5 checkpoint +./myapp {} +/sbin/m5 exit +""" + + +def addDemoOptions(parser): + parser.add_argument( + "-a", "--app", default=None, help="GPU application to run" + ) + parser.add_argument( + "-o", "--opts", default="", help="GPU application arguments" + ) + + +def runVegaGPUFS(cpu_type): + parser = argparse.ArgumentParser() + runfs.addRunFSOptions(parser) + Options.addCommonOptions(parser) + AmdGPUOptions.addAmdGPUOptions(parser) + Ruby.define_options(parser) + GPUTLBOptions.tlb_options(parser) + addDemoOptions(parser) + + # Parse now so we can override options + args = parser.parse_args() + demo_runscript = "" + + # Create temp script to run application + if args.app is None: + print(f"No application given. Use {sys.argv[0]} -a <app>") + sys.exit(1) + elif args.kernel is None: + print(f"No kernel path given. Use {sys.argv[0]} --kernel <vmlinux>") + sys.exit(1) + elif args.disk_image is None: + print(f"No disk path given. Use {sys.argv[0]} --disk-image <linux>") + sys.exit(1) + elif args.gpu_mmio_trace is None: + print(f"No MMIO trace path. Use {sys.argv[0]} --gpu-mmio-trace <path>") + sys.exit(1) + elif not os.path.isfile(args.app): + print("Could not find applcation", args.app) + sys.exit(1) + + # Choose runscript Based on whether any checkpointing args are set + if args.checkpoint_dir is not None: + demo_runscript = demo_runscript_with_checkpoint + else: + demo_runscript = demo_runscript_without_checkpoint + + with open(os.path.abspath(args.app), "rb") as binfile: + encodedBin = base64.b64encode(binfile.read()).decode() + + _, tempRunscript = tempfile.mkstemp() + with open(tempRunscript, "w") as b64file: + runscriptStr = demo_runscript.format( + args.app, args.opts, encodedBin, args.opts + ) + b64file.write(runscriptStr) + + if args.second_disk == None: + args.second_disk = args.disk_image + + # Defaults for Vega10 + args.ruby = True + args.cpu_type = cpu_type + args.num_cpus = 1 + args.mem_size = "3GB" + args.dgpu = True + args.dgpu_mem_size = "16GB" + args.dgpu_start = "0GB" + args.checkpoint_restore = 0 + args.disjoint = True + args.timing_gpu = True + args.script = tempRunscript + args.dgpu_xor_low_bit = 0 + + # Run gem5 + runfs.runGpuFSSystem(args) diff --git a/configs/example/gpufs/vega10_atomic.py b/configs/example/gpufs/vega10_atomic.py new file mode 100644 index 0000000..4ff2cc2 --- /dev/null +++ b/configs/example/gpufs/vega10_atomic.py @@ -0,0 +1,32 @@ +# Copyright (c) 2023 Advanced Micro Devices, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# 2. 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. +# +# 3. Neither the name of the copyright holder 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 HOLDER 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. + +import vega10 + +vega10.runVegaGPUFS("AtomicSimpleCPU") diff --git a/configs/example/gpufs/vega10_kvm.py b/configs/example/gpufs/vega10_kvm.py index 11f9fe2..39dc5e0 100644 --- a/configs/example/gpufs/vega10_kvm.py +++ b/configs/example/gpufs/vega10_kvm.py @@ -1,4 +1,4 @@ -# Copyright (c) 2022 Advanced Micro Devices, Inc. +# Copyright (c) 2022-2023 Advanced Micro Devices, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -27,127 +27,6 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -import m5 -import runfs -import base64 -import tempfile -import argparse -import sys -import os +import vega10 -from amd import AmdGPUOptions -from common import Options -from common import GPUTLBOptions -from ruby import Ruby - - -demo_runscript_without_checkpoint = """\ -export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH -export HSA_ENABLE_INTERRUPT=0 -dmesg -n8 -dd if=/root/roms/vega10.rom of=/dev/mem bs=1k seek=768 count=128 -if [ ! -f /lib/modules/`uname -r`/updates/dkms/amdgpu.ko ]; then - echo "ERROR: Missing DKMS package for kernel `uname -r`. Exiting gem5." - /sbin/m5 exit -fi -modprobe -v amdgpu ip_block_mask=0xff ppfeaturemask=0 dpm=0 audio=0 -echo "Running {} {}" -echo "{}" | base64 -d > myapp -chmod +x myapp -./myapp {} -/sbin/m5 exit -""" - -demo_runscript_with_checkpoint = """\ -export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH -export HSA_ENABLE_INTERRUPT=0 -dmesg -n8 -dd if=/root/roms/vega10.rom of=/dev/mem bs=1k seek=768 count=128 -if [ ! -f /lib/modules/`uname -r`/updates/dkms/amdgpu.ko ]; then - echo "ERROR: Missing DKMS package for kernel `uname -r`. Exiting gem5." - /sbin/m5 exit -fi -modprobe -v amdgpu ip_block_mask=0xff ppfeaturemask=0 dpm=0 audio=0 -echo "Running {} {}" -echo "{}" | base64 -d > myapp -chmod +x myapp -/sbin/m5 checkpoint -./myapp {} -/sbin/m5 exit -""" - - -def addDemoOptions(parser): - parser.add_argument( - "-a", "--app", default=None, help="GPU application to run" - ) - parser.add_argument( - "-o", "--opts", default="", help="GPU application arguments" - ) - - -if __name__ == "__m5_main__": - parser = argparse.ArgumentParser() - runfs.addRunFSOptions(parser) - Options.addCommonOptions(parser) - AmdGPUOptions.addAmdGPUOptions(parser) - Ruby.define_options(parser) - GPUTLBOptions.tlb_options(parser) - addDemoOptions(parser) - - # Parse now so we can override options - args = parser.parse_args() - demo_runscript = "" - - # Create temp script to run application - if args.app is None: - print(f"No application given. Use {sys.argv[0]} -a <app>") - sys.exit(1) - elif args.kernel is None: - print(f"No kernel path given. Use {sys.argv[0]} --kernel <vmlinux>") - sys.exit(1) - elif args.disk_image is None: - print(f"No disk path given. Use {sys.argv[0]} --disk-image <linux>") - sys.exit(1) - elif args.gpu_mmio_trace is None: - print(f"No MMIO trace path. Use {sys.argv[0]} --gpu-mmio-trace <path>") - sys.exit(1) - elif not os.path.isfile(args.app): - print("Could not find applcation", args.app) - sys.exit(1) - - # Choose runscript Based on whether any checkpointing args are set - if args.checkpoint_dir is not None: - demo_runscript = demo_runscript_with_checkpoint - else: - demo_runscript = demo_runscript_without_checkpoint - - with open(os.path.abspath(args.app), "rb") as binfile: - encodedBin = base64.b64encode(binfile.read()).decode() - - _, tempRunscript = tempfile.mkstemp() - with open(tempRunscript, "w") as b64file: - runscriptStr = demo_runscript.format( - args.app, args.opts, encodedBin, args.opts - ) - b64file.write(runscriptStr) - - if args.second_disk == None: - args.second_disk = args.disk_image - - # Defaults for Vega10 - args.ruby = True - args.cpu_type = "X86KvmCPU" - args.num_cpus = 1 - args.mem_size = "3GB" - args.dgpu = True - args.dgpu_mem_size = "16GB" - args.dgpu_start = "0GB" - args.checkpoint_restore = 0 - args.disjoint = True - args.timing_gpu = True - args.script = tempRunscript - args.dgpu_xor_low_bit = 0 - - # Run gem5 - runfs.runGpuFSSystem(args) +vega10.runVegaGPUFS("X86KvmCPU") -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/72078?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: release-staging-v23-0 Gerrit-Change-Id: I094bc4d4df856563535c28c1f6d6cc045d6734cd Gerrit-Change-Number: 72078 Gerrit-PatchSet: 1 Gerrit-Owner: Bobby Bruce <bbruce@ucdavis.edu> Gerrit-CC: Matthew Poremba <matthew.poremba@amd.com>