Skip to content
Lingzhu Xiang edited this page Feb 18, 2016 · 48 revisions

Benchmark

Benchmarking setup:

  1. Report CPU and GPU models
  2. Report OS version (include kernel version if Linux), compiler version, API versions (OpenGL/CUDA/OpenCL if you can find it)
  3. Report date of testing.
  4. Build with -DENABLE_CXX11=ON
  5. Set environment variable export LIBFREENECT2_DETAILED_TIMING=1.

Benchmarking cases:

  • Linux
  1. CPU/TurboJPEG LIBVA_DRIVER_NAME=none Protonect -noviewer cpu - The pure software pipeline
  2. OpenGL/TurboJPEG LIBVA_DRIVER_NAME=none Protonect -noviewer gl - The OpenGL compatibility pipeline
  3. Intel-OpenCL/VAAPI Protonect -noviewer cl - The full Intel pipeline
  4. CUDA-OpenCL/VAAPI Protonect -noviewer cl - The how-poorly-does-Nvidia-support-OpenCL pipeline
  5. CUDA/VAAPI Protonect -noviewer cuda - The Nvidia and VAAPI mixed pipeline
  6. CUDA/TegraJPEG Protonect -noviewer cuda - The Jetson TK1 pipeline
  • Windows
  1. CPU/TurboJPEG Protonect -noviewer cpu - The pure software pipeline
  2. OpenGL/TurboJPEG Protonect -noviewer gl - The OpenGL compatibility pipeline
  3. Intel-OpenCL/TurboJPEG Protonect -noviewer cl - The full Intel pipeline
  4. CUDA/TurboJPEG Protonect -noviewer cuda - The Nvidia and VAAPI mixed pipeline
  • Mac OS X
  1. CPU/TurboJPEG Protonect -noviewer cpu - The pure software pipeline
  2. OpenGL/VT Protonect -noviewer gl - The OpenGL compatibility pipeline
  3. OpenCL/VT Protonect -noviewer cl - The OpenCL pipeline

If a particular configuration is tested but fails:

  1. If the failure is a known unsolved issue, report it.
  2. If the failure is a solved issue that can be fixed by the user, do not report it.

TODO: Maybe use -gpu=0 or -gpu=1 to select GPU?

The page is work in progress.

Platform acceleration of JPEG decoding

  • VA-API (Intel, Linux): Good
  • Intel Media SDK (Intel, Windows): possible to implement. mfx_mft_mjpgvd_64.dll 91CD2D6E-897B-4FA1-B0D7-51DC88010E0A Intel Hardware M-JPEG decoder MFT - it's probably an abstraction over DXVA/D3D11.
  • VDPAU (Nvidia): No. Does not support JPEG at all.
  • Tegra: In fact in all of Nvidia's products, only Tegra has hardware JPEG decoder (A separate tegra libjpeg decoder is being worked on).
  • AMD implements JPEG decoder with OpenCL, but we don't want it to compete with depth decoding for resources. (I evaluated GPUJPEG, and it was not good.)
  • Samsung's Exynos4 provides JPEG codec via v4l2, but this is for mobile devices.
  • I looked at mpv and ffmpeg. They have no hardware acceleration for JPEG at all.
  • Chromium uses VAAPI and V4L2.
  • On Mac a new decoder is provided by @fran6co. (@fran6co: The mac decoder is not hardware accelerated yet, if they ever decide to do it my implementation is going to have it.)
Clone this wiki locally