Skip to content

winml sys

Inspect your machine — devices, EPs, and runtime versions at a glance.

When to use this

Run winml sys before starting any export or build workflow to confirm that the required ML libraries are installed and that the target hardware is visible. It is also the first command to run when diagnosing an unexpected export failure.

Synopsis

$ winml sys [options]

Flags

Flag Short Type Default Description
--format -f text | json | compact text Output format. text renders rich tables, json emits machine-readable JSON, compact prints a single-line summary.
--list-device flag false List available compute devices (NPU, GPU, CPU) in priority order instead of showing the full system report.
--list-ep flag false List available ONNX Runtime execution providers instead of showing the full system report. Can be combined with --list-device.
--verbose -v flag false Surface additional diagnostic sections: backend availability and Export Readiness.
--help -h flag Show help and exit.

winml sys takes no --model, --device, --ep, --task, or --precision arguments. It describes the host environment, not a specific model.

How it works

winml sys queries Python's platform and importlib.metadata modules to report library versions, then probes PyTorch for CUDA availability and GPU device names. Backend availability checks use the installed runtime environment, while device enumeration queries hardware directly in NPU > GPU > CPU priority order, and EP enumeration merges the WinML EP registry with ONNX Runtime's get_available_providers(). When --format json is used the full report — including devices and EPs — is emitted as a single JSON object, making it easy to capture in CI pipelines.

Examples

# Full human-readable system report
$ winml sys
+------------------------------------+
|   winml-cli System Information     |
+------------------------------------+

Environment
  Python Version    3.11.9
  Python Executable C:\...\python.exe
  OS                Windows 11
  Machine           AMD64

ML Libraries
  Library        Version   Status
  torch          2.4.0     OK
  transformers   4.44.0    OK
  onnx           1.16.1    OK
  ...

Available Devices (priority order)
  #1  NPU   Qualcomm(R) Hexagon NPU
  #2  GPU   Qualcomm(R) Adreno GPU
  #3  CPU   Snapdragon(R) X Elite

Available Execution Providers
  QNNExecutionProvider           -> NPU/GPU
  DmlExecutionProvider           -> GPU
  CPUExecutionProvider           -> CPU
# Compact one-liner — useful for CI logs
$ winml sys --format compact
# Machine-readable JSON — pipe to jq or save for later comparison
$ winml sys --format json > env.json
# Only list devices — skip everything else
$ winml sys --list-device
# List EPs as JSON — useful for scripting EP selection
$ winml sys --list-ep --format json

Common pitfalls

  • --list-device and --list-ep suppress the full report. When either flag is present, only the requested section is printed. Omit both flags to see the complete system report.
  • --format compact omits device and EP tables. The compact format is designed for single-line log entries and does not include device or EP details. Use text or json when you need the full picture.
  • CUDA shown as unavailable on a machine with a GPU. PyTorch must be installed with CUDA support (torch+cuXXX). A CPU-only torch wheel will always report cuda_available: false.

See also