[rocpd] Fix rocpd convenience scripts to accept --automerge-limit parameter (#1926)

* remove double RocpdImportData calls from execute() in each module

* formatting fix
Dieser Commit ist enthalten in:
Young Hui - AMD
2025-11-24 14:50:27 -05:00
committet von GitHub
Ursprung 1f7fc8d8a7
Commit a4f533fa92
6 geänderte Dateien mit 84 neuen und 74 gelöschten Zeilen
@@ -414,15 +414,13 @@ def write_csv(importData, config):
def execute(input, config=None, **kwargs):
importData = RocpdImportData(input)
config = (
output_config.output_config(**kwargs)
if config is None
else config.update(**kwargs)
)
write_csv(importData, config)
write_csv(input, config)
def add_args(parser):
@@ -464,7 +462,9 @@ def main(argv=None):
args = parser.parse_args(argv)
input = RocpdImportData(args.input)
input = RocpdImportData(
args.input, automerge_limit=getattr(args, "automerge_limit", None)
)
out_cfg_args = process_out_config_args(input, args)
generic_out_cfg_args = process_generic_args(input, args)
@@ -34,15 +34,13 @@ def write_otf2(importData, config):
def execute(input, config=None, **kwargs):
importData = RocpdImportData(input)
config = (
output_config.output_config(**kwargs)
if config is None
else config.update(**kwargs)
)
write_otf2(importData, config)
write_otf2(input, config)
def add_args(parser):
@@ -99,7 +97,9 @@ def main(argv=None):
args = parser.parse_args(argv)
input = RocpdImportData(args.input)
input = RocpdImportData(
args.input, automerge_limit=getattr(args, "automerge_limit", None)
)
out_cfg_args = process_out_config_args(input, args)
generic_out_cfg_args = process_generic_args(input, args)
@@ -26,7 +26,6 @@
import os
import shutil
import datetime
import yaml
import argparse
from . import output_config
@@ -96,37 +95,45 @@ def flatten_rocpd_yaml_input_file(input, **kwargs) -> list:
Returns:
list: Expanded list of database file paths.
"""
with open(yaml_path, "r") as f:
meta = yaml.safe_load(f)
rocpd_meta = meta.get("rocprofiler-sdk", {}).get("rocpd", {})
try:
import yaml
# Check version compatibility
version = rocpd_meta.get(rocpd_metadata_param_version, "0")
if version < rocpd_package_version:
print(
f"Warning: {yaml_path} is using an outdated version of rocpd package ({version})."
with open(yaml_path, "r") as f:
meta = yaml.safe_load(f)
rocpd_meta = meta.get("rocprofiler-sdk", {}).get("rocpd", {})
# Check version compatibility
version = rocpd_meta.get(rocpd_metadata_param_version, "0")
if version < rocpd_package_version:
print(
f"Warning: {yaml_path} is using an outdated version of rocpd package ({version})."
)
# Determine working directory for relative paths
cwd = (
base_dir
if base_dir is not None
else rocpd_meta.get("path", os.getcwd())
)
# Determine working directory for relative paths
cwd = (
base_dir if base_dir is not None else rocpd_meta.get("path", os.getcwd())
)
# Get database file list from YAML
dbs = rocpd_meta.get("files", [])
if isinstance(dbs, str):
dbs = [dbs]
# Get database file list from YAML
dbs = rocpd_meta.get("files", [])
if isinstance(dbs, str):
dbs = [dbs]
# Expand each database path (handle wildcards and relative paths)
files = []
for db in dbs:
db_path = os.path.join(cwd, db) if not os.path.isabs(db) else db
if _contains_wildcard(db_path):
files.extend(glob.glob(db_path))
else:
files.append(db_path)
# Expand each database path (handle wildcards and relative paths)
files = []
for db in dbs:
db_path = os.path.join(cwd, db) if not os.path.isabs(db) else db
if _contains_wildcard(db_path):
files.extend(glob.glob(db_path))
else:
files.append(db_path)
return files
return files
except Exception as e:
print(f"Error: {e}")
return None
def _contains_wildcard(path):
"""Check if path contains wildcard characters."""
@@ -354,31 +361,38 @@ def create_metadata_file(db_files, output_path=".", metadata_filename="index.yam
Returns:
str: Path to the created metadata file.
"""
# Ensure output directory exists
os.makedirs(output_path, exist_ok=True)
try:
import yaml
# Compute relative paths
rel_paths = [os.path.relpath(db_file, output_path) for db_file in db_files]
# Ensure output directory exists
os.makedirs(output_path, exist_ok=True)
# Compose the YAML structure
metadata = {
"rocprofiler-sdk": {
"rocpd": {
rocpd_metadata_param_version: rocpd_package_version,
# "source": "rocprofv3", # omitting source, not sure why we need this, and how we determine the source as rocprof-sys, for example.
"path": ".",
"files": (
rel_paths
if len(rel_paths) > 1
else (rel_paths[0] if rel_paths else "")
),
# Compute relative paths
rel_paths = [os.path.relpath(db_file, output_path) for db_file in db_files]
# Compose the YAML structure
metadata = {
"rocprofiler-sdk": {
"rocpd": {
rocpd_metadata_param_version: rocpd_package_version,
# "source": "rocprofv3", # omitting source, not sure why we need this, and how we determine the source as rocprof-sys, for example.
"path": ".",
"files": (
rel_paths
if len(rel_paths) > 1
else (rel_paths[0] if rel_paths else "")
),
}
}
}
}
metadata_path = os.path.join(output_path, metadata_filename)
with open(metadata_path, "w") as f:
yaml.safe_dump(metadata, f, default_flow_style=False)
metadata_path = os.path.join(output_path, metadata_filename)
with open(metadata_path, "w") as f:
yaml.safe_dump(metadata, f, default_flow_style=False)
except Exception as e:
print(f"Error: {e}")
return None
return metadata_path
@@ -34,15 +34,13 @@ def write_pftrace(importData, config):
def execute(input, config=None, **kwargs):
importData = RocpdImportData(input)
config = (
output_config.output_config(**kwargs)
if config is None
else config.update(**kwargs)
)
write_pftrace(importData, config)
write_pftrace(input, config)
def add_args(parser):
@@ -133,7 +131,9 @@ def main(argv=None):
process_time_window_args = add_args_time_window(parser)
args = parser.parse_args(argv)
input = RocpdImportData(args.input)
input = RocpdImportData(
args.input, automerge_limit=getattr(args, "automerge_limit", None)
)
out_cfg_args = process_out_config_args(input, args)
pftrace_args = process_pftrace_args(input, args)
@@ -456,10 +456,6 @@ def add_args(parser):
def execute(input, args, config=None, **kwargs):
importData = RocpdImportData(
input, automerge_limit=getattr(args, "automerge_limit", None)
)
config = (
output_config.output_config(**kwargs)
if config is None
@@ -470,11 +466,11 @@ def execute(input, args, config=None, **kwargs):
# read script and execute statements
with open(args.script, "r") as ifs:
for itr in ifs.read().split(";"):
importData.execute(f"{itr}")
input.execute(f"{itr}")
# Prepare parameters for export
query = args.query
db = importData
db = input
export_format = args.format
export_path = os.path.join(config.output_path, config.output_file)
@@ -541,7 +537,9 @@ def main(argv=None):
args = parser.parse_args(argv)
input = RocpdImportData(args.input)
input = RocpdImportData(
args.input, automerge_limit=getattr(args, "automerge_limit", None)
)
out_cfg_args = process_out_config_args(input, args)
generic_out_cfg_args = process_generic_args(input, args)
@@ -533,13 +533,9 @@ def add_args(parser):
def execute(input, **kwargs: Any) -> RocpdImportData:
importData = RocpdImportData(
input, automerge_limit=getattr(kwargs, "automerge_limit", None)
)
generate_all_summaries(input, **kwargs)
generate_all_summaries(importData, **kwargs)
return importData
return input
def main(argv=None) -> int:
@@ -565,7 +561,9 @@ def main(argv=None) -> int:
args = parser.parse_args(argv)
input = RocpdImportData(args.input)
input = RocpdImportData(
args.input, automerge_limit=getattr(args, "automerge_limit", None)
)
summary_args = process_summary_args(input, args)
io_args = process_outcfg_args(input, args)
@@ -574,7 +572,7 @@ def main(argv=None) -> int:
all_args = {**summary_args, **io_args}
execute(
args.input,
input,
**all_args,
)