Files
TheRock/rocm-libraries/projects/hipblaslt/tensilelite/Tensile/TensileCreateLibrary/ParseArguments.py
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

239 lines
8.4 KiB
Python

################################################################################
#
# Copyright (C) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
################################################################################
import os
import re
from argparse import ArgumentParser
from typing import Any, Dict, List, Optional
from Tensile.Common import coVersionMap, printExit
from Tensile.Common.Architectures import architectureMap
from Tensile.Toolchain.Validators import ToolchainDefaults
def parseArguments(input: Optional[List[str]] = None) -> Dict[str, Any]:
"""Parse command line arguments for TensileCreateLibrary.
Args:
input: List of strings representing command line arguments used when
calling parseArguments prgrammatically e.g. in testing.
Returns:
A dictionary containing the keys representing options and their values.
"""
argParser = ArgumentParser(
description="TensileCreateLibrary generates libraries and code object files "
"for a set of supplied logic files.",
)
argParser.add_argument("LogicPath", help="Path to LibraryLogic.yaml files.")
argParser.add_argument("OutputPath", help="Where to write library files?")
argParser.add_argument(
"RuntimeLanguage", help="Which runtime language?", choices=["OCL", "HIP", "HSA"]
)
argParser.add_argument(
"--cxx-compiler",
dest="CxxCompiler",
action="store",
default=ToolchainDefaults.CXX_COMPILER,
help=f"Default: {ToolchainDefaults.CXX_COMPILER}",
)
argParser.add_argument(
"--c-compiler", dest="CCompiler", action="store", default=ToolchainDefaults.C_COMPILER
)
argParser.add_argument("--cmake-cxx-compiler", dest="CmakeCxxCompiler", action="store")
argParser.add_argument(
"--offload-bundler",
dest="OffloadBundler",
action="store",
default=ToolchainDefaults.OFFLOAD_BUNDLER,
)
argParser.add_argument(
"--assembler", dest="Assembler", action="store", default=ToolchainDefaults.ASSEMBLER
)
argParser.add_argument(
"--code-object-version",
dest="CodeObjectVersion",
choices=["4", "5", "V4", "V5", "default"],
default="4",
action="store",
)
argParser.add_argument(
"--architecture",
dest="Architecture",
type=str,
action="store",
default="all",
help="Supported archs: " + " ".join(architectureMap.keys()),
)
argParser.add_argument(
"--no-compress",
dest="NoCompress",
action="store_true",
help="Don't compress assembly code objects.",
)
argParser.add_argument(
"--experimental",
dest="Experimental",
action="store_true",
help="Include logic files in directories named 'Experimental'.",
)
argParser.add_argument(
"--no-enumerate", action="store_true", help="Do not run rocm_agent_enumerator."
)
argParser.add_argument("--version", help="Version string to embed into library file.")
argParser.add_argument(
"--logic-format",
dest="LogicFormat",
choices=["yaml", "json"],
action="store",
default="yaml",
help="select which logic format to use",
)
argParser.add_argument(
"--library-format",
dest="LibraryFormat",
choices=["yaml", "msgpack"],
action="store",
default="msgpack",
help="select which library format to use",
)
argParser.add_argument(
"--jobs",
"-j",
dest="CpuThreads",
type=int,
default=-1,
help="Number of parallel jobs to launch.",
)
argParser.add_argument(
"--verbose",
"-v",
dest="PrintLevel",
type=int,
default=1,
help="Set printout verbosity level.",
)
argParser.add_argument(
"--no-lazy-library-loading",
dest="LazyLibraryLoading",
action="store_false",
default=True,
help="Disable building for lazy library loading.",
)
argParser.add_argument(
"--enable-marker",
dest="EnableMarker",
action="store_true",
default=False,
help="Enable marker in Tensile.",
)
argParser.add_argument(
"--no-generate-solution-table",
dest="GenSolTable",
action="store_false",
default=True,
help="Skip generating solution-yaml matching table",
)
argParser.add_argument(
"--asm-debug",
dest="AsmDebug",
action="store_true",
default=False,
help="Keep debug information for built code objects",
)
argParser.add_argument("--build-id", dest="BuildIdKind", action="store", default="sha1")
argParser.add_argument(
"--address-sanitizer",
dest="AsanBuild",
action="store_true",
default=False,
help="Enable ASAN build.",
)
argParser.add_argument(
"--keep-build-tmp",
dest="KeepBuildTmp",
action="store_true",
default=False,
help="Do not remove the temporary build directory (may required hundreds of GBs of space)",
)
argParser.add_argument(
"--logic-filter",
dest="LogicFilter",
action="store",
default="*",
type=str,
help="Cutomsized logic filter, default is *, i.e. all logics."
" Example: gfx942/Equality/* for building equality of gfx942 only",
)
argParser.add_argument(
"--disable-asm-comments",
dest="DisableAsmComments",
action="store_true",
default=False,
help="Disable assembly comments in generated assembly code"
)
argParser.add_argument(
"--emit-mainloop-trace-marker",
dest="EmitMainloopTraceMarker",
action="store_true",
default=False,
help="Emit s_ttracedata mainloop iteration markers for SQTT/trace decoders "
"(subtile kernels only; adds 2 instructions per iteration)"
)
args = argParser.parse_args()
arguments = {}
arguments["RuntimeLanguage"] = args.RuntimeLanguage
arguments["CodeObjectVersion"] = coVersionMap[args.CodeObjectVersion]
arguments["Architecture"] = args.Architecture
arguments["LazyLibraryLoading"] = args.LazyLibraryLoading
arguments["EnableMarker"] = args.EnableMarker
arguments["DisableAsmComments"] = args.DisableAsmComments
arguments["EmitMainloopTraceMarker"] = args.EmitMainloopTraceMarker
if args.CmakeCxxCompiler:
os.environ["CMAKE_CXX_COMPILER"] = args.CmakeCxxCompiler
arguments["LogicFormat"] = args.LogicFormat
arguments["LibraryFormat"] = args.LibraryFormat
arguments["CpuThreads"] = args.CpuThreads
arguments["PrintLevel"] = args.PrintLevel
arguments["AsmDebug"] = args.AsmDebug
arguments["BuildIdKind"] = args.BuildIdKind
arguments["KeepBuildTmp"] = args.KeepBuildTmp
arguments["AsanBuild"] = args.AsanBuild
arguments["UseCompression"] = not args.NoCompress
arguments["CxxCompiler"] = args.CxxCompiler
arguments["CCompiler"] = args.CCompiler
arguments["OffloadBundler"] = args.OffloadBundler
arguments["Assembler"] = args.Assembler
arguments["LogicPath"] = args.LogicPath
arguments["LogicFilter"] = args.LogicFilter
arguments["OutputPath"] = args.OutputPath
arguments["Experimental"] = args.Experimental
arguments["GenSolTable"] = args.GenSolTable
return arguments