blob: 531249ee849ab653bbabd5703b7abcea565dd834 [file] [log] [blame]
# Copyright (c) 2021 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.
def addAmdGPUOptions(parser):
parser.add_argument(
"-u",
"--num-compute-units",
type=int,
default=4,
help="number of GPU compute units",
),
parser.add_argument(
"--num-cp",
type=int,
default=0,
help="Number of GPU Command Processors (CP)",
)
# not super important now, but to avoid putting the number 4 everywhere,
# make it an option/knob
parser.add_argument(
"--cu-per-sqc",
type=int,
default=4,
help="number of CUs sharing an SQC" " (icache, and thus icache TLB)",
)
parser.add_argument(
"--cu-per-scalar-cache",
type=int,
default=4,
help="Number of CUs sharing a scalar cache",
)
parser.add_argument(
"--simds-per-cu", type=int, default=4, help="SIMD units per CU"
)
parser.add_argument(
"--cu-per-sa",
type=int,
default=4,
help="Number of CUs per shader array. This must be a"
" multiple of options.cu-per-sqc and "
" options.cu-per-scalar",
)
parser.add_argument(
"--sa-per-complex",
type=int,
default=1,
help="Number of shader arrays per complex",
)
parser.add_argument(
"--num-gpu-complexes",
type=int,
default=1,
help="Number of GPU complexes",
)
parser.add_argument(
"--wf-size", type=int, default=64, help="Wavefront size(in workitems)"
)
parser.add_argument(
"--sp-bypass-path-length",
type=int,
default=4,
help="Number of stages of bypass path in vector ALU "
"for Single Precision ops",
)
parser.add_argument(
"--dp-bypass-path-length",
type=int,
default=4,
help="Number of stages of bypass path in vector ALU "
"for Double Precision ops",
)
# issue period per SIMD unit: number of cycles before issuing another vector
parser.add_argument(
"--issue-period",
type=int,
default=4,
help="Number of cycles per vector instruction issue" " period",
)
parser.add_argument(
"--glbmem-wr-bus-width",
type=int,
default=32,
help="VGPR to Coalescer (Global Memory) data bus width" " in bytes",
)
parser.add_argument(
"--glbmem-rd-bus-width",
type=int,
default=32,
help="Coalescer to VGPR (Global Memory) data bus width" " in bytes",
)
# Currently we only support 1 local memory pipe
parser.add_argument(
"--shr-mem-pipes-per-cu",
type=int,
default=1,
help="Number of Shared Memory pipelines per CU",
)
# Currently we only support 1 global memory pipe
parser.add_argument(
"--glb-mem-pipes-per-cu",
type=int,
default=1,
help="Number of Global Memory pipelines per CU",
)
parser.add_argument(
"--wfs-per-simd",
type=int,
default=10,
help="Number of WF slots per SIMD",
)
parser.add_argument(
"--registerManagerPolicy",
type=str,
default="static",
help="Register manager policy",
)
parser.add_argument(
"--vreg-file-size",
type=int,
default=2048,
help="number of physical vector registers per SIMD",
)
parser.add_argument(
"--vreg-min-alloc",
type=int,
default=4,
help="vector register reservation unit",
)
parser.add_argument(
"--sreg-file-size",
type=int,
default=2048,
help="number of physical scalar registers per SIMD",
)
parser.add_argument(
"--sreg-min-alloc",
type=int,
default=4,
help="scalar register reservation unit",
)
parser.add_argument(
"--bw-scalor",
type=int,
default=0,
help="bandwidth scalor for scalability analysis",
)
parser.add_argument(
"--CPUClock", type=str, default="2GHz", help="CPU clock"
)
parser.add_argument(
"--gpu-clock", type=str, default="1GHz", help="GPU clock"
)
parser.add_argument(
"--cpu-voltage",
action="store",
type=str,
default="1.0V",
help="CPU voltage domain",
)
parser.add_argument(
"--gpu-voltage",
action="store",
type=str,
default="1.0V",
help="GPU voltage domain",
)
parser.add_argument(
"--CUExecPolicy",
type=str,
default="OLDEST-FIRST",
help="WF exec policy (OLDEST-FIRST, ROUND-ROBIN)",
)
parser.add_argument(
"--LocalMemBarrier",
action="store_true",
help="Barrier does not wait for writethroughs to " " complete",
)
parser.add_argument(
"--countPages",
action="store_true",
help="Count Page Accesses and output in " " per-CU output files",
)
parser.add_argument(
"--TLB-prefetch", type=int, help="prefetch depth for" "TLBs"
)
parser.add_argument(
"--pf-type",
type=str,
help="type of prefetch: " "PF_CU, PF_WF, PF_PHASE, PF_STRIDE",
)
parser.add_argument("--pf-stride", type=int, help="set prefetch stride")
parser.add_argument(
"--numLdsBanks",
type=int,
default=32,
help="number of physical banks per LDS module",
)
parser.add_argument(
"--ldsBankConflictPenalty",
type=int,
default=1,
help="number of cycles per LDS bank conflict",
)
parser.add_argument(
"--lds-size", type=int, default=65536, help="Size of the LDS in bytes"
)
parser.add_argument(
"--num-hw-queues",
type=int,
default=10,
help="number of hw queues in packet processor",
)
parser.add_argument(
"--reg-alloc-policy",
type=str,
default="simple",
help="register allocation policy (simple/dynamic)",
)