Files
TheRock/rocm-libraries/shared/tensile/Tensile/Configs/miopen/convert_cfg.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

171 lines
5.0 KiB
Python

#!/usr/bin/python
################################################################################
#
# Copyright (C) 2018-2022 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.
#
################################################################################
from __future__ import print_function
import sys, argparse, re
verbose = 1
class GemmConfig:
def __init__(self, m, n ,k, tA, tB):
self.m = m
self.n = n
self.k = k
self.batchCnt = 1
self.tA = tA
self.tB = tB
#---
class TensileExactParser:
def __init__(self):
self.globalTA = False
self.globalTB = False
def printHeader(self):
None
#print "# %s%s Case" % \
# ("T" if self.globalTA else "N", "T" if self.globalTB else "N")
def parse(self,line):
line = line.lstrip()
if not line or line.startswith("#"):
return (0, None)
#m = re.search(".*Exact\w*:\w\[(.*)\]", line)
m = re.search(".*Exact.*\[(.*)\]", line)
try:
#print "match=", m.group(1)
nums = [int(x) for x in m.group(1).split(',')]
#print "nums=", nums
if len(nums) == 3:
g = GemmConfig(nums[0], nums[1], nums[2], self.globalTA, self.globalTB)
elif len(nums) == 4:
g = GemmConfig(nums[0], nums[1], nums[3], self.globalTA, self.globalTB)
g.batchCnt = nums[2]
return (1,g)
except AttributeError:
if verbose:
print("inparser ignored: ", l,)
return (0, None)
def emit(self, g):
# ignores GemmConfig
print(" - Exact: [ %u , %u , %u, %u ]" % \
(g.m, g.n, g.batchCnt, g.k))
#---
class DeepBenchGemmParser :
# m, n, k, a_t, b_t
# Example: std::make_tuple(4224, 1, 128, false, false)
def printHeader(self):
print("// m, n, k, a_t, b_t")
def parse(self,line):
line = line.lstrip()
if not line or line.startswith("//"):
return (0, None)
m = re.search("\s*std::make_tuple\((.*)\)", line)
try:
#print "match=", m.group(1)
fields = [x.strip() for x in m.group(1).split(',')]
assert(len(fields) == 5)
#print "nums=", nums
g = GemmConfig(int(fields[0]), int(fields[1]), int(fields[2]), fields[3]=='true', fields[4]=='true')
return (1,g)
except AttributeError:
if verbose:
sys.stderr.write ("inparser ignored: %s" % l)
return (0, None)
def emit(self, g):
assert (g.batchCnt==1)
print("std::make_tuple(%u, %u, %u, %s, %s)" % \
(g.m, g.n, g.k, "true" if g.tA else"false", "true" if g.tB else "false"))
#---
class CsvParser :
def printHeader(self):
print("tA, tB, m, n, k, batchCnt")
def parse(self,line):
line = line.lstrip()
if not line :
return (0, None)
try:
fields = [x.strip() for x in line.split(',')]
g = GemmConfig(int(fields[2]), int(fields[3]), int(fields[4]), fields[0]=='T', fields[1]=='T')
return (1,g)
except AttributeError:
if verbose:
sys.stderr.write ("inparser ignored: %s" % l)
return (0, None)
def emit(self, g):
print("%s, %s, %u, %u, %u, %u" % \
("T" if g.tA else "N", "T" if g.tB else "N", g.m, g.n, g.k, g.batchCnt))
g_formats = {
"tensile_exact" : TensileExactParser(),
"deepbench_gemm" : DeepBenchGemmParser(),
"csv" : CsvParser()
}
parser = argparse.ArgumentParser(description='convert between GEMM formats (Tensile, rocblas-bench, deepbench, CSV')
parser.add_argument('infile', type=argparse.FileType('r'),
help="Input file to process")
parser.add_argument('-i', '--in-format', action="store",
default="tensile_exact",
help="Input format")
parser.add_argument('-o', '--out-format', action="store",
default="csv",
help="Output format")
args = parser.parse_args(sys.argv[1:])
#print args
iformat = g_formats[args.in_format]
oformat = g_formats[args.out_format]
oformat.printHeader()
lineNum = 0
for l in args.infile:
lineNum = lineNum+1
#print "L:",l,
(valid, g) = iformat.parse(l)
if valid:
oformat.emit(g)