Docs
{{ g.name }} {{ pg.name }}
Docs/Benchmarks/IQ-8275: iQS-Streampipe Multi-stream Inference

Multi-stream inference status on Jetson Orin NX and Qualcomm IQ-8275

BenchmarkiQS-StreampipeIQ-8275Jetson Orin NX 16GBMulti-stream

This topic describes a multi-stream inference benchmark for the iQS-Streampipe application on the NVIDIA Jetson Orin NX 16GB and the Qualcomm Dragonwing IQ-8275 platform. The purpose is to observe execution behavior as the number of channels and the video resolution increase. The results are not intended to be a general hardware performance ranking.

  • Application: iQS-Streampipe
  • Task: object detection with an INT8 model
  • Input: 720p, 1080p, 2K, and 4K, 30 FPS H.264 video streams
  • Platforms: NVIDIA Jetson Orin NX 16GB, Qualcomm Dragonwing IQ-8275
  • Metrics:
    • Output average end-to-end FPS per channel
    • Average CPU loading (%)
    • Average CPU memory usage (%)
    • Power (W) and FPS/Watt
    • Output end-to-end FPS percentiles (P95, P75, P50, P25)
  • Channel counts: 1, 4, 9, and 16 at 720p and 1080p; 1, 4, and 9 at 2K; 1 and 4 at 4K
Note: Qualcomm specifies the video decode of the IQ-8275 as 2× 4K60, 4× 4K30, 8× 1080p60, and 16× 1080p30 (formats: AV1, H.264, H.265/HEVC, VP9, and MPEG-2).

Hardware

The benchmark uses two edge AI platforms with the configurations shown below.

PlatformNVIDIA Jetson Orin NX 16GBIQ-8275
SoM / SoCNVIDIA Jetson Orin NX 16GBQualcomm Dragonwing IQ-8275
Power planMAXNNormal
Processor cores8 (8× Cortex-A78AE)8 (4× Cortex-A78C + 4× Cortex-A55)
AI acceleratorGPUNPU (Qualcomm Hexagon)
AI runtimeTensorRT 10.3.0.30TFLite 2.16.1 (QNN 2.50)
AI performance50 TOPS (INT8, dense)Up to 40 TOPS (INT8, dense)
BSP / SDKL4T R36.4.3
Linux kernel5.15.148-tegra (PREEMPT)6.18.44-gb6e015a3cb19-dirty (PREEMPT)

AI model

ArchitectureNumerical precisionParametersInput sizeModel sizeModel formatDatasetClasses
YOLO26nINT82.38 M640 × 6402.60 MiBTFLiteInnodisk PPE5

Videos

The results in this report were measured with four videos, one for each resolution.

File typeResolutionFrame rateCodecBitrateFile sizeLength
MP4720p30 FPSH.2641733 kb/s6.20 MiB30 s
MP41080p30 FPSH.2643922 kb/s14.03 MiB30 s
MP42K30 FPSH.2646982 kb/s24.97 MiB30 s
MP44K30 FPSH.26415416 kb/s55.15 MiB30 s

The four videos were made from one licensed stock video from Envato, and they are not distributed with iQ-Studio. To reproduce the results, license a video and prepare your own copies at each resolution. The video must be H.264 in an MP4 file.

Note: Results with a different video differ from this report, because the content, the bitrate, and the length of the video are different. To test the other resolutions, prepare your own videos and give them to the script with --video (see How to Use).

Results

Measurement method

  • Each run starts after the platform has cooled down, then warms up for 300 seconds. The measurement window is the following 120 seconds.
  • FPS and CPU values come from the measurement window. FPS is the end-to-end output rate of each channel.
  • The videos are described in the Videos section. Every channel plays the same video.
  • Power (W) is the reading of a power meter on the wall socket, read by hand during the measurement window. The benchmark script does not measure it. It covers the platform only and includes the power adapter loss. FPS/Watt = channels × output average E2E FPS per channel ÷ Power (W).

720P@30FPS

PlatformChannelsCoresWarm-up (s)Power modeCPU loading (%)Average CPU memory (%)Power (W)FPS/WattOutput average E2E FPS/channelP95 (E2E FPS)P75 (E2E FPS)P50 (E2E FPS)P25 (E2E FPS)
IQ-827518300Normal40.08.38.543.4529.4442.5733.9930.0526.86
IQ-827548300Normal72.712.611.5710.1829.4545.2534.0729.9626.77
IQ-827598300Normal94.121.513.7316.5325.2157.2635.8327.4521.26
IQ-8275168300Normal99.331.013.8815.1213.1245.4223.3615.4010.45
NVIDIA Jetson Orin NX 16GB18300MAXN29.625.017.531.6729.3450.7833.7129.0526.20
NVIDIA Jetson Orin NX 16GB48300MAXN54.527.127.254.2228.7551.1134.9729.7425.77
NVIDIA Jetson Orin NX 16GB98300MAXN67.931.328.702.708.6114.9810.628.727.42
NVIDIA Jetson Orin NX 16GB168300MAXN82.234.730.232.364.466.305.144.574.07
720p fps per channel
720p cpu loading
720p cpu memory

1080P@30FPS

PlatformChannelsCoresWarm-up (s)Power modeCPU loading (%)Average CPU memory (%)Power (W)FPS/WattOutput average E2E FPS/channelP95 (E2E FPS)P75 (E2E FPS)P50 (E2E FPS)P25 (E2E FPS)
IQ-827518300Normal40.18.48.723.3729.3839.5533.0929.9627.49
IQ-827548300Normal86.115.112.228.5326.0583.9039.6426.7320.25
IQ-827598300Normal99.428.912.627.3310.2850.0323.6713.587.88
IQ-8275168300Normal99.640.513.049.107.4232.7614.238.675.76
NVIDIA Jetson Orin NX 16GB18300MAXN24.821.918.031.6329.3440.6931.0229.8628.52
NVIDIA Jetson Orin NX 16GB48300MAXN62.525.529.553.6627.0461.4936.1928.5623.01
NVIDIA Jetson Orin NX 16GB98300MAXN82.830.830.442.327.8614.669.617.986.84
NVIDIA Jetson Orin NX 16GB168300MAXN94.439.531.431.933.795.224.373.903.47
1080p fps per channel
1080p cpu loading
1080p cpu memory

2K@30FPS

PlatformChannelsCoresWarm-up (s)Power modeCPU loading (%)Average CPU memory (%)Power (W)FPS/WattOutput average E2E FPS/channelP95 (E2E FPS)P75 (E2E FPS)P50 (E2E FPS)P25 (E2E FPS)
IQ-827518300Normal48.911.19.542.9928.4969.0637.5829.6723.93
IQ-827548300Normal95.321.612.705.6417.9265.4535.2622.1713.30
IQ-827598300Normal99.336.513.025.618.1138.6417.3210.236.19
NVIDIA Jetson Orin NX 16GB18300MAXN36.226.019.141.5329.3151.7334.9029.7525.86
NVIDIA Jetson Orin NX 16GB48300MAXN71.931.530.663.1724.3360.9734.7826.1320.09
NVIDIA Jetson Orin NX 16GB98300MAXN91.541.531.552.107.3713.859.207.596.35
2k fps per channel
2k cpu loading
2k cpu memory

4K@30FPS

PlatformChannelsCoresWarm-up (s)Power modeCPU loading (%)Average CPU memory (%)Power (W)FPS/WattOutput average E2E FPS/channelP95 (E2E FPS)P75 (E2E FPS)P50 (E2E FPS)P25 (E2E FPS)
IQ-827518300Normal45.713.810.051.8918.9733.4621.7119.1717.31
IQ-827548300Normal97.036.012.673.3710.6835.1819.7713.068.52
NVIDIA Jetson Orin NX 16GB18300MAXN29.028.619.551.1221.8329.4324.1422.3420.72
NVIDIA Jetson Orin NX 16GB48300MAXN78.242.030.022.4418.3237.0323.8719.1415.63
4k fps per channel
4k cpu loading
4k cpu memory

Observations

  • In the multi-channel cases at 720p and 1080p, the IQ-8275 delivers a higher per-channel FPS than the Jetson Orin NX. At 720p, the 9- and 16-channel cases reach about 25.2 and 13.1 FPS, and at 1080p, about 10.3 and 7.4 FPS.
  • The IQ-8275 draws up to 13.9 W over the whole test range, while the Jetson Orin NX draws up to 31.6 W.
  • The Jetson Orin NX has 8× Cortex-A78AE cores, and the IQ-8275 has 4× Cortex-A78C + 4× Cortex-A55 cores. The four efficiency cores of the IQ-8275 reach high utilization first, so its overall CPU loading is higher than that of the Jetson Orin NX.

Conclusion

Both platforms follow the same pattern: per-channel FPS stays near the source rate at low channel counts, then drops as the number of channels increases. Because the CPU of the IQ-8275 is less capable (four of its eight cores are efficiency cores), its per-channel FPS is lower at high resolutions (4K, and 2K with 4 channels). But in the multi-channel cases, it still performs at a good level: at 720p, 9 channels keep 25.2 FPS and 16 channels reach 13.1 FPS, and at 1080p, 9 and 16 channels reach 10.3 and 7.4 FPS, with a lower power consumption.

How to Use

Below is an overview of how we conduct platform benchmark testing.

IQ-8275 procedure

  1. 1
    Install iQ-Studio:
    {{ mc1.fname }}bash
    $ git clone https://github.com/InnoIPA/iQ-Studio.git
    $ cd iQ-Studio
    $ ./install.sh
  2. 2
    From the repository root, change to the benchmark directory:
    {{ mc2.fname }}bash
    $ cd benchmarks/iq-8275/multi-stream/iqs-streampipe
  3. 3
    Edit config.json so that the streams array contains 1, 4, 9, or 16 entries, depending on the channel count being tested. The file contains 9 streams of the YOLO26n model and the 1080p videos that come with the Docker image.
  4. 4
    Run the benchmark script with the Qualcomm platform selected:
    {{ mc3.fname }}bash
    $ ./scripts/auto_benchmark.sh \
        --platform qcom \
        --test_time 420 \
        --warmup_time 300 \
        --output ./logs/qcom_9ch.txt
    On the first run, iqs-launcher pulls the iqs-streampipe Docker image, so the board needs network access.
    The results are saved in the file given by --output. The file starts with the test settings (channels, video, warm-up, and test time), followed by the average CPU loading and memory usage, and the inference time and FPS tables. Use a different file name for each run, because the file is overwritten.

NVIDIA Jetson Orin NX 16GB procedure

  1. 1
    Go to the benchmark directory of the iQ-Studio repository and download the archive:
    {{ mc4.fname }}bash
    $ cd benchmarks/iq-8275/multi-stream/iqs-streampipe
    $ wget https://github.com/InnoIPA/iQ-Studio/releases/download/v0.0.13/benchmark_orinnx_sources.tar.gz
  2. 2
    In the same directory, extract the NVIDIA benchmark archive and check its contents:
    {{ mc5.fname }}bash
    $ tar xzf benchmark_orinnx_sources.tar.gz --strip-components=1
    $ ls -1 config_nv.json nvidia/* videos/*
    The output should list these files:
    {{ mc6.fname }}text
    config_nv.json            # stream configuration template
    nvidia/model_int8.engine  # TensorRT engine
    nvidia/streampipe_nv      # streampipe executable for the NVIDIA platform
    videos/japan_walk.mp4     # included 1080p video
  3. 3
    Set the power mode to MAXN and check it:
    {{ mc7.fname }}bash
    $ sudo nvpmodel -m 0
    $ nvpmodel -q
    The output should be:
    {{ mc8.fname }}text
    NV Power Mode: MAXN
    0
  4. 4
    Install the Python virtual environment package if it is missing. The script uses it to keep its Python packages separate from the system (the first run also downloads them, so it needs network access):
    {{ mc9.fname }}bash
    $ sudo apt install python3-venv
  5. 5
    From a desktop session on the Jetson, run the benchmark script with the NVIDIA platform selected:
    {{ mc10.fname }}bash
    $ ./scripts/auto_benchmark.sh \
        --platform nv \
        --channels 9 \
        --test_time 420 \
        --warmup_time 300 \
        --output ./logs/nv_1080p_9ch.txt \
        --video <your video path>   # replace with the path of your own video
    Without --channels and --video, it runs config_nv.json as is, which is 1 channel of videos/japan_walk.mp4.
    The results are saved in the file given by --output. The file starts with the test settings (channels, video, warm-up, and test time), followed by the average CPU loading and memory usage, and the inference time and FPS tables. Use a different file name for each run, because the file is overwritten.
You are here {{ railNum }}/ {{ railTotal }} {{ railPct }}