Jump to content

CUDA ISP API performance

From RidgeRun Developer Wiki

Follow us on: YouTube Twitter LinkedIn Email Share this page

Share This Page


Previous: Examples/GStreamer usage Index Next: Performance/GStreamer






Library API performance

To measure the CUDA ISP API performance, we built a simple example (provided upon request) that iterates over the Apply methods for each algorithm and records performance metrics for each iteration. We measured the duration of each algorithm's Apply method. We also measured CPU, CPU RAM, GPU, and GPU RAM usage for the complete processing pipeline iterating at 30fps. We ran the experiments on both 1080p and 4K buffers. We also ran the experiments on the Jetson Orin Nano, Jetson Orin NX, Jetson Thor T5000, and Jetson AGX Orin.

Software performance measurement tools

  • We measured the duration of each Apply method separately using the chrono library.
  • We mainly used sys/times.h library to obtain the CPU usage. However, we used the proc/status file to obtain a secondary verification measure.
  • We read the /proc/self/status file to obtain the CPU RAM usage.
  • We used tegrastats to obtain the GPU usage.
  • We used cudaMemGetInfo from CUDA to measure GPU RAM usage.

Every measurement is averaged over 100 iterations. The iterations are timed to run at 30 iterations per second.

Hardware setup

Platform JetPack Version Power Mode GPU Frequencies CUDA Version
Thor T5000 7.2 MAXN Performance (NVP Model 0) 1575000000 13.0
AGX Orin 32G 6.2 MAXN Performance (NVP model 3) 1300500000 12.6
Orin Nx 16GB 6.2 MAXN Performance (NVP model 0) 918000000 12.6
Orin Nano 8GB 6.2 MAXN_SUPER Mode (NVP model 2) 1020000000 12.6

For each system, we also used jetson_clocks to maximise the device clock frequency and thus the performance.

Results

The following table summarises CUDA ISP's performance results.

Algorithm Jetson Thor T5000 Jetson AGX Orin Jetson Orin NX Jetson Orin Nano
Buffer size 1080p 4K 1080p 4K 1080p 4K 1080p 4K
Duration (ms) Kernel Launch -> Synchronize
CudaShift 0.27 0.52 0.42 0.78 0.66 2.08 0.62 2.30
CudaDebayer 0.29 0.44 0.39 0.68 0.60 1.44 0.57 2.03
CudaWhiteBalancer (Gray World Algorithm) 0.34 0.70 0.46 0.78 0.67 1.41 0.63 2.06
CudaWhiteBalancer (Histogram Stretch Algorithm) 0.38 0.72 0.50 0.97 0.81 1.60 0.77 3.03
Framerate (fps)
CudaShift 3496 1908 2375 1282 1522 550 1607 434
CudaDebayer 3424 2247 2570 1481 1647 469 1754 491
CudaWhiteBalancer (Gray World Algorithm) 2967 1430 2188 1283 1503 451 1592 485
CudaWhiteBalancer (Histogram Stretch Algorithm) 2631 1388 1984 1029 1218 368 1300 330
CPU usage (%)
CudaShift 0.512 0.519 0.124 0.228 0.321 0.407 0.428 1.28
CudaDebayer 0.507 0.519 0.136 0.254 0.339 0.416 0.438 1.23
CudaWhiteBalancer (Gray World Algorithm) 0.507 0.512 0.140 0.182 0.224 0.634 0.290 0.76
CudaWhiteBalancer (Histogram Stretch Algorithm) 0.519 0.514 0.142 0.191 0.227 0.730 0.315 0.80
CPU RAM (MB)
CudaShift 111.8 111.8 42.1 42.1 42.8 42.1 133.5 211.6
CudaDebayer 96.7 96.8 30.6 30.7 31.2 35.3 117.8 183,8
CudaWhiteBalancer (Gray World Algorithm) 102.6 102.6 34.6 34.7 35.4 31.1 123.7 187,7
CudaWhiteBalancer (Histogram Stretch Algorithm) 111.1 111.1 53.3 41.4 42.1 42.6 130,5 206.3
GPU usage (%) **
CudaShift+CudaDebayer+CudaWhiteBalancer 1.48 6.72 1.15 4.07 2.73 10.38 2.50 9.51
GPU RAM (MB)
CudaShift 112.7* 142.7* 13.9 11.1 11.3 9.2 15.6 11.8
CudaDebayer 110.7* 134.7* 0.97 1.0 1.2 3.6 1.2 1.1
CudaWhiteBalancer (Gray World Algorithm) 118.7* 154.7* 3.1 4.0 3.5 1.4 9.6 3.8
CudaWhiteBalancer (Histogram Stretch Algorithm) 118.7* 154.7* 19.9 11.6 11.1 11.9 15.1 20

*: On the Jetson Thor T5000, RAM usage is consistently reported above 100 MB when GPU acceleration is used. GPU utilization on the Thor T5000 is collected using NVML, while on the other evaluated platforms it is obtained from the filesystem-based GPU load metrics.

**: Using Nsight Systems (nsys), GPU usage is calculated by adding the execution time of the CUDA GPU kernels and dividing the resulting total by the target period at 30 FPS framerate.



Previous: Examples/GStreamer usage Index Next: Performance/GStreamer



Cookies help us deliver our services. By using our services, you agree to our use of cookies.