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
74 lines
2.0 KiB
Python
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()
|