# Operator Performance Comparison Skill Configuration

# Default benchmark parameters
benchmark:
  iterations: 100
  dtypes:
    - float32
    - float16
    - bfloat16
  input_mode: "random"  # random or file

# msprof configuration
msprof:
  # msprof command (use full path if not in PATH)
  command: "msprof"

  # Output directory for profiling results
  output_dir: "./profiling_results"

  # Additional msprof arguments
  args:
    - "--aic-metrics=ai_core_utilization,memory_usage"
    - "--system-metrics=cpu_usage,memory_usage"

  # Timeout for msprof execution (seconds)
  timeout: 300

# Performance metrics to collect
metrics:
  - execution_time_ms
  - npu_utilization_percent
  - memory_usage_mb
  - throughput_ops_per_sec
  - power_consumption_w  # if supported

# Operator discovery
discovery:
  # Directories to search for operators
  directories:
    aclnn: "mindspeed_ops/api/aclnn"
    tilelang: "mindspeed_ops/api/tilelang"
    triton: "mindspeed_ops/api/triton"

  # File patterns to match
  patterns:
    - "*.py"
    - "*_op.py"
    - "op_*.py"

# Optional parameters defaults
optional_params:
  # Default parameters for each implementation
  aclnn: {}
  triton: {}
  tilelang: {}

# Report generation
report:
  # Default output format
  default_format: "text"

  # Available output formats
  formats:
    - text
    - json
    - table

  # Report templates
  templates:
    text: "templates/report.txt.j2"
    json: "templates/report.json.j2"

# Visualization
visualization:
  # Enable/disable charts
  enabled: true

  # Chart types
  charts:
    - bar
    - line
    - scatter

  # Chart style
  style: "seaborn"

  # Output format for charts
  output_format: "png"

  # Chart dimensions
  width: 12
  height: 8

# Error handling
error_handling:
  # Continue on error
  continue_on_error: false

  # Log level
  log_level: "INFO"

  # Maximum retries
  max_retries: 3

  # Retry delay (seconds)
  retry_delay: 5

# Cache configuration
cache:
  # Enable caching
  enabled: true

  # Cache directory
  directory: "./.operator_performance_cache"

  # Cache expiration (seconds)
  expiration: 3600  # 1 hour

# Testing
testing:
  # Test shapes for validation
  test_shapes:
    small: [32, 32]
    medium: [256, 256]
    large: [1024, 1024]

  # Test operators
  test_operators:
    - add
    - matmul
    - conv2d

  # Test data types
  test_dtypes:
    - float32
    - float16

# Integration
integration:
  # CI/CD integration
  ci:
    enabled: false
    output_file: "performance_report.json"
    fail_threshold_ms: 1000  # Fail if any operator takes > 1000ms

  # Jupyter notebook integration
  jupyter:
    enabled: true
    widgets: true

  # API server
  api:
    enabled: false
    host: "localhost"
    port: 8080

# Advanced settings
advanced:
  # GPU synchronization
  sync_gpu: true

  # Memory pinning
  pin_memory: false

  # Benchmark mode
  benchmark_mode: "wall_time"  # wall_time, cpu_time, cuda_time

  # Precision
  precision: "high"  # high, medium, low

  # Random seed
  random_seed: 42