Files
TheRock/rocm-libraries/projects/hipblaslt/utilities/geko/scripts/mi_designer.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

74 lines
2.0 KiB
Python

#!/usr/bin/env python3
# Copyright Advanced Micro Devices, Inc., or its affiliates.
# SPDX-License-Identifier: MIT
"""CLI entry point for the MI designer.
Usage:
python3 mi_designer.py config.yaml -o ./MatInst | tee configGen.log
"""
import argparse
import logging
import os
import sys
from pathlib import Path
from geko.config_generator.load_input_config import load_prepared_config_from_yaml
from geko.config_generator.mi_designer import MIDesign
from geko.config_generator.sizes import get_sizes
def parse_args() -> argparse.Namespace:
"""Parse CLI arguments for the MI designer."""
argParser = argparse.ArgumentParser(
description="Generate MatrixInstruction configurations for GEMM tuning",
)
argParser.add_argument(
"config",
type=str,
default='./config.yaml',
help="path to the input config file",
)
argParser.add_argument(
"--outputfile", "-o",
type=str,
default='./MatInst',
help="Output file/directory. It can take absolute/relative path.",
)
argParser.add_argument(
"--verbose", "-v",
action="store_true",
help="enable debug logging",
)
return argParser.parse_args()
def main() -> None:
"""CLI entry point: load config, iterate over sizes, call generate_for_size."""
args = parse_args()
logging.basicConfig(
level=logging.DEBUG if args.verbose else logging.INFO,
format="%(levelname)s: %(message)s",
stream=sys.stdout,
)
config = load_prepared_config_from_yaml(args.config)
mi_finder_log_path = os.path.join(args.outputfile, "MI_finder_log")
Path(mi_finder_log_path).mkdir(parents=True, exist_ok=True)
mi_designer = MIDesign(mi_finder_log_path, config)
sizes = get_sizes(config)
for size in sizes:
M, N, B, K = size
groups = mi_designer.generate_for_size(tuple(size))
print(f"Size ({M}, {N}, {B}, {K}): {len(groups)} MI groups generated")
if __name__ == "__main__":
main()