Difference between revisions of "CUDA ISP for NVIDIA Jetson/Performance/Library"

From RidgeRun Developer Connection
Jump to: navigation, search
Line 75: Line 75:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 1.66
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 86: Line 86:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 1.91
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 97: Line 97:
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 1.60
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 133: Line 133:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 603
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 144: Line 144:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 522
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 155: Line 155:
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 623
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 191: Line 191:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 0.098
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 202: Line 202:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 0.099
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 213: Line 213:
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 0.071
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 249: Line 249:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 99.1
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 260: Line 260:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 99.3
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 271: Line 271:
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 44.3
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 307: Line 307:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 19.27
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 318: Line 318:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 24.42
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 329: Line 329:
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 9.14
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 365: Line 365:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Gray World Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 32.7
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 376: Line 376:
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="text-align:left; font-weight:bold;" | CudaWhiteBalancer (Histogram Stretch Algorithm)
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 33.4
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
Line 387: Line 387:
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="text-align:left; font-weight:bold;" | CudaColorSpaceConverter
 
| style="background-color:#ffd6a5;" |
 
| style="background-color:#ffd6a5;" |
| style="background-color:#ffd6a5;" |
+
| style="background-color:#ffd6a5;" | 6.0
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |
 
| style="background-color:#ffadad;" |

Revision as of 09:28, 13 April 2023


  Index  






This page is still under development. Please, do not take the performance data as definitive.

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 Nano, Jetson Xavier NX, Jetson Xavier AGX, and Jetson AGX Orin.

  • We measured the duration of each Apply method separately using the chrono library.
  • We used the sys/times.h library to obtain the CPU usage.
  • We read the /proc/self/status file to obtain the CPU RAM usage.
  • We used jtop to measure GPU usage on the Jetson Nano and Jetson Xavier NX. We use jetson-stats to measure GPU usage on the Jetson Xavier AGX and the Jetson AGX Orin.
  • We used cudaMemGetInfo from CUDA to measure GPU RAM usage.

This is the hardware setup we used:

  • On the Jetson Nano, we used Jetpack 4.5.3 and MAXN Power Mode (NVP model 0)
  • On the Jetson Xavier NX, we used Jetpack 4.5.3 and 20W 6 Core Power Mode (NVP model 8)
  • On the Jetson Xavier AGX, we used Jetpack 4.5.1 and 30W 8 Core Power Mode (NVP model 3)
  • On the Jetson AGX Orin, we used Jetpack 5.0.2 and MAXN Power Mode (NVP model 0)

The following table summarizes CUDA ISP's performance results. The values in parenthesis next to each processing time is the corresponding theoretical framerate calculated as the inverse of the time.

Platform Jetson AGX Orin Jetson Xavier AGX Jetson Xavier NX Jetson Nano
Buffer size 1080p 4K 1080p 4K 1080p 4K 1080p 4K
Duration (ms)
CudaShift 1.52
CudaDebayer 1.30
CudaWhiteBalancer (Gray World Algorithm) 1.66
CudaWhiteBalancer (Histogram Stretch Algorithm) 1.91
CudaColorSpaceConverter 1.60
Framerate (fps)
CudaShift 660
CudaDebayer 771
CudaWhiteBalancer (Gray World Algorithm) 603
CudaWhiteBalancer (Histogram Stretch Algorithm) 522
CudaColorSpaceConverter 623
CPU usage (%)
CudaShift 0.077
CudaDebayer 0.057
CudaWhiteBalancer (Gray World Algorithm) 0.098
CudaWhiteBalancer (Histogram Stretch Algorithm) 0.099
CudaColorSpaceConverter 0.071
CPU RAM (MB)
CudaShift 90.8
CudaDebayer 44.5
CudaWhiteBalancer (Gray World Algorithm) 99.1
CudaWhiteBalancer (Histogram Stretch Algorithm) 99.3
CudaColorSpaceConverter 44.3
GPU usage (%)
CudaShift 7.81
CudaDebayer 13.04
CudaWhiteBalancer (Gray World Algorithm) 19.27
CudaWhiteBalancer (Histogram Stretch Algorithm) 24.42
CudaColorSpaceConverter 9.14
GPU RAM (MB)
CudaShift 28.4
CudaDebayer 6.1
CudaWhiteBalancer (Gray World Algorithm) 32.7
CudaWhiteBalancer (Histogram Stretch Algorithm) 33.4
CudaColorSpaceConverter 6.0



  Index