Puget Systems print logo

https://www.pugetsystems.com

Read this article at https://www.pugetsystems.com/guides/1279
Article Thumbnail

Pix4D 4.3 Multi-GPU Scaling and NVLink

Written on November 7, 2018 by William George
Share:

Introduction

Pix4D is an advanced photogrammetry application, suited to a wide range of uses, with a focus on handling images captured by drone cameras. Processing of those images into point clouds and 3D meshes/textures is time-consuming, making heavy use of both the central processing unit (CPU) and graphics processor (GPU / video card) in a computer.

We are in the midst of testing a wide range of CPUs and GPUs in Pix4D 4.3, and as part of that, we wanted to check multi-GPU performance. This is particularly pertinent right now because NVIDIA has added NVLink functionality to some of their new GeForce RTX series cards. With proper software support, this allows high-speed communication between two video cards - potentially improving the performance or enabling things like memory space sharing.

Pix4D Logo

So does Pix4D benefit from NVLink at all, or from multiple video cards in general? Let's find out!

Test Hardware

To compare processing speed with one and two video cards, as well as those two paired together with NVLink, we needed to use a CPU and motherboard that would fit multiple cards and have the right spacing to use an NVLink bridge. We also wanted to ensure that the CPU wouldn't be holding back GPU performance. Based on past testing we went with Intel's Core i9 7980XE as one of the fastest processors for this application, and in order to have NVLink capability, we opted to use GeForce RTX 2080 8GB cards for the GPUs. We also included 128GB of memory and a Samsung 960 Pro SSD, to ensure that those components were not going to slow anything down. If you want to see full details, with links to the various part pages, .

Methodology

In order to run multiple image sets and multiple iterations, we put together an AutoIt script that runs Pix4D without manual input. Because of the automation we used, all steps were performed back-to-back with no editing in-between to clean up point clouds. That means these results may not perfectly match what you'd see when using Pix4D in a real-world workflow, but it removes any chance of human error altering results between runs. We did still observe small variances on total processing time with each image set, so we ran them three times and selected the lowest overall result for each image set to be included in the charts below.

As mentioned above, we tested a few different image sets: two on the 3D Models preset and one on the 3D Map mode. These are the most demanding of the processing methods in Pix4D, hence our focus on them over the various other options available. No settings were altered from the defaults. Info about the image sets we used, and what processing mode they were used with, are available below.

Image Sets

Here is information about the image sets we used, including project type (3D Model vs 3D Map) and listed in order of complexity:

Eagle Model
Eagle Statue Photo Set Point Cloud44 Images from Pix4D website

Building Map
Building Map Photo Set Point Cloud36 Images from Pix4D website

Wolf Model
Wolf Statue Photo Set Point Cloud100 Images provided by Pix4D

Results

Without further ado, here are the results for total processing time on each of these image sets, with 1-2 video cards as well as NVLink:

Pix4D 4.3 Performance with 1 and 2 GeForce RTX 2080 8GB Video Cards and NVLink

Another way to look at this data is performance relative to a single RTX 2080, where we can more easily see that dual GPUs don't help:

Pix4D 4.3 Performance with 1 and 2 GeForce RTX 2080 8GB Video Cards and NVLink as Percentages of Single Card Performance

And for those who want all the details, here are the times (in seconds) broken out into a plain data chart. Smaller numbers are better:

Pix4D 4.3 Performance Chart with 1 and 2 GeForce RTX 2080 8GB Video Cards and NVLink

Does Pix4D 4.3 Benefit From Dual GPUs or NVLink?

No: as of Pix4D 4.3.27, multiple video cards do not benefit performance at all. If anything, performance is slightly lower (1-3%) with a second video card, and enabling NVLink does not change that. For Pix4D, your money would be better spent on a faster processor - and we will have a performance roundup of CPUs in this application soon.

Stay tuned to our articles page, or our Twitter and Facebook feeds, to see when we publish more articles and benchmark comparisons.

Is Pix4D Even Detecting the Second GPU or NVLink?

Pix4D puts out a lot of detailed information in the log files generated during each run, which is where we pull the processing times from in our benchmark. You can also see in those logs what GPUs are detected and when they are being utilized, and looking over that data it does look like both of the RTX 2080 cards in this system were found by Pix4D and difference parts of the processing workload were sent to each one. However, based on the time results, that does not seem to have helped performance.

That changes with NVLink, though. When that is enabled, the second GPU does not show up at all in the Pix4D log files. This mirrors the situation we have seen with other applications, like DaVinci Resolve, where the second GPU effectively disappears when NVLink is in use. This is why programs have be written specifically to utilize NVLink: simply turning it on does not help if the software isn't built for it.

Workstations for Pix4D

Compact Workstation

For Small Projects & Portable

Configure

Tower Workstation

Large Projects & More RAM

Configure

Tags: Pix4D, Version, 4.3, Performance, NVIDIA, GeForce, RTX, 2080, Dual, Multi, GPU, Scaling, NVLink, Photogrammetry