microsoft / microsoft/winml-cli

P1-FEATURE-013: Profiling Integration — IHV Tools (QC / Intel / AMD)

Open
#158 0 comments 0 reactions 2 assignees View on GitHub

@tezheng is already working on this.

Since Mar 31, 2026.

feature scale hardware P1 triaged
Dominant language
Python
Stars
40
Forks
11
Avg merge
1d 8h
Merged PRs (30d)
50

Description

Summary

Integrate ModelKit with IHV-specific profiling tools from Qualcomm, Intel, and AMD to enable operator-level performance analysis on hardware NPUs/GPUs.

Context

IHV profiling tools provide deep insights into hardware execution that generic ONNX Runtime profiling cannot — e.g., which NPU ops caused stalls, memory bandwidth bottlenecks, or kernel dispatch overhead. This integration is needed to make performance optimization actionable.

From plans/release/0501_release_plan/P0_CHECKLIST.md (P1-FEATURE-013). Builds on the base profiling work in #402.

Target tools:

  • Qualcomm: QNN profiling API (HTP backend profiling output)
  • Intel: OpenVINO Performance Analysis tool / VTune
  • AMD: ROCm profiler / Ryzen AI profiler

Current State

  • Base profiling implemented (#402) — measures E2E inference latency
  • No IHV-specific profiling tool integration
  • No operator-level profiling data from hardware backends

Desired State

  • wmk perf --profile enables IHV profiling output for supported EPs
  • Profiling data consumed from QNN/OpenVINO/AMD tools
  • Bottleneck analysis: identify top-N slowest operators per EP
  • Output: profiling summary in artifacts/profiling_report.json

Acceptance Criteria

  • QNN profiling output integrated (EP session profiling via QNN SDK)
  • OpenVINO profiling output integrated (per-layer timing via IE API)
  • AMD profiling output integrated (best-effort — if SDK available)
  • Bottleneck analysis: report top-N slowest ops per EP
  • artifacts/profiling_report.json generated with operator-level timing
  • Works on at least 5 P0 built-in models × 2 EPs (QNN + OpenVINO NPU)

Technical Notes

  • QNN SDK profiling: enable via session option qnn_context_enable_graphs_profiling
  • OpenVINO profiling: InferRequest.get_profiling_info() method
  • AMD Ryzen AI profiling: available via Ryzen AI SDK; check access with hardware team
  • Normalize profiling output to a common schema across all IHV tools

Related Files

  • plans/release/0501_release_plan/P0_CHECKLIST.md — P1-FEATURE-013
  • plans/release/0501_release_plan/feature-scale.md
  • #402 — base profiling implementation

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.