# QHAS Profiling

Brief

QHAS profiling has been enabled for SNPE workflow in HTP runtime. To enable, give the profiling level
as qhas in `snpe-dlc-graph-prepare` to create a schematic bin, and give `--profiling_level qhas`
during `snpe-net-run` execution to generate QHAS artifacts in the current working directory in a folder
named `profilelogs`.

SNPE Workflow

snpe-dlc-graph-prepare --input_dlc inception_v3_quantized.dlc --output_dlc inception_v3_quantized_cache.dlc --htp_socs sm8750 --profiling_level qhas
    Copy to clipboard

From the above command we get `[MODEL]_schematic.bin` — this is the schematic file generated in the current
working directory (required for chrometrace generation).

snpe-net-run --container inception_v3_quantized_cache.dlc --input_list input_list.txt --profiling_level qhas --use_dsp
    Copy to clipboard

The above command (profiling\_level as qhas) will generate QHAS artifacts in the current working directory in a folder called
“profilelogs”

Chrometrace Generation

To generate the chrometrace, run `qnn-profile-viewer` on the device with the `libQnnHtpOptraceProfilingReader`
reader library.

qnn-profile-viewer --config [PATH_TO]/config.json --reader [SDK_PATH]/lib/[TARGET]/libQnnHtpOptraceProfilingReader.so --input_log ./profilelogs/qnn-profiling-data.log --schematic ./[MODEL]_schematic.bin --output ./chrometrace.json
    Copy to clipboard

Config Options

The `config.json` file provides parameters beyond the ones covered in the command line arguments, such as:

- `enable_input_output_flow_events` - Adds flow events to `chrometrace.json`, showing input-output dependencies between operations. Requires using the legacy UI to open chrometrace.
- `enable_sequencer_flow_events` - Adds flow events to `chrometrace.json`, showing ordering dependencies between operations, imposed by the sequencer. Requires using the legacy UI to open chrometrace.
- `htp_json` - Dumps a `[NAME]_htp.json` file containing the topology and op-by-op information about the HTP graph. Default is on.
- `runtrace` - Adds Runtrace execution and preemption events (if available) at the bottom of each core in the output chrometrace. Default is on.
- `memory_info` - Adds memory bandwidth and allocation graphs (if available) at the bottom of each core in the output chrometrace. Default is on.
- `traceback` - Adds trace back to source framework in the output chrometrace. Default is on.
- `qhas_schema` - Dumps a `qhas_schema.json` that can be used to validate the QHAS JSON file. Default is off.
- `qhas_json` - Dumps a `[model]_qnn_htp_analysis_summary.json`. Default is off.

Sample config.json

{
      "features": {
        "enable_input_output_flow_events": true,
        "enable_sequencer_flow_events": true,
        "htp_json": true,
        "runtrace": true,
        "memory_info": true,
        "traceback": true,
        "qhas_schema": true,
        "qhas_json": true
      }
    }
    Copy to clipboard

References

For more information please look into HTP Optrace profiling in QNN -&gt; Backend -&gt; HTP and section QNN HTP Optrace Profiling.

Last Published: Jun 04, 2026

[Previous Topic
Linting Profile](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/linting_profile.md) [Next Topic
MobilenetSSD Benchmarking](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/benchmark_mobilenet_ssd.md)