Table of Contents
Introduction
Pix4D is an advanced photogrammetry application, suited to 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 mostly done on the CPU, but some steps can utilize NVIDIA graphics cards to boost performance. Having already found which current processor is the best for Pix4D, we are now examining how much of an impact different video cards can make on Pix4D performance.
Specifically, we will look at the total processing time for various 3D Model and 3D Map projects when using high-end GeForce, Titan, and Quadro series graphics cards.
Test Hardware
The platform we tested Pix4D on is Intel's X299 chipset with the top-end Core i9 7980XE processor. Since Pix4D uses CUDA, only NVIDIA graphics cards will help speed up calculations – so we tested a spread of high-end GeForce, Titan, and Quadro series cards. All configurations included the same 64GB of memory, which was more than twice the amount our largest image set needed, and Samsung 960 Pro SSD. The chart below shows more details, including a list of the GPUs we tested and links to pages for the various components:
Testing Hardware | |||
Motherboard: | Gigabyte X299 AORUS Gaming 7 | ||
CPU: | Intel Core i9 7980XE 2.6GHz (4.2/4.4GHz Turbo) 18 Core | ||
RAM: | 4x Crucial DDR4-2666 16GB (64GB total) | ||
GPU: | NVIDIA GeForce GTX 1060 6GB NVIDIA GeForce GTX 1070 8GB NVIDIA GeForce GTX 1080 Ti 11GB |
NVIDIA Titan Xp 12GB NVIDIA Titan V 12GB |
NVIDIA Quadro P6000 24GB NVIDIA Quadro GP100 16GB |
Storage Drive: | Samsung 960 Pro M.2 PCI-E x4 NVMe SSD | ||
OS: | Windows 10 Pro 64-bit | ||
Software: | Pix4D Mapper 4.0.24 |
We also tested dual GPUs, with a pair of GTX 1080 Ti cards. Those results will be covered below and will explain why we only tested one such configuration.
Methodology
In order to be able to run multiple image sets and multiple iterations, we put together an AutoIt script that runs Pix4D from the command line. 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 up with what you'd see when using Pix4D in the desktop mode, but it removes any chance of human error altering results between runs. We did still observe variances of up to 15% on total processing time with individual hardware configurations, so we ran each test 2-4 times and selected the lowest overall result for inclusion in the charts below.
As mentioned above, we tested several different image sets: 3 each in both 3D Model and 3D Map modes. 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. Descriptions of 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, broken down by project type (3D Model vs 3D Map) and listed in order of complexity:
3D Models | ||
Eagle | Chessboard | Climber |
44 Images from Pix4D website | 78 Images taken in-house | 300 Images taken in-house |
3D Maps | ||
Village | Quarry | City |
37 Images from Sensefly website | 127 Images from Pix4D website | 2691 Images provided by Pix4D |
GeForce Results
Without further ado, here are the results for total processing time on each of the six image sets – first on GeForce cards:
As you can see, there is not a huge difference in processing time. In terms of raw graphics performance, the GTX 1080 Ti should be twice as fast as the 1060 – but in Pix4D that only translates into a 1-5% reduction in overall processing time. Part of this is because not every step utilizes the GPU, and even when it is used the CPU is still the dominant factor in calculation times. Still, with large enough image sets the GTX 1080 Ti could save half an hour or more. With smaller projects, measured in minutes instead of hours, it becomes much less noticeable.
Titan and Quadro Results
Since there wasn't a huge difference between mid-range and high-end GeForce cards, there wasn't a high expectation going into Titan and Quadro testing – but that still didn't prepare us for the actual results we saw. Here is how these video cards stacked up to the GTX 1080 Ti when processing our Chessboard image set:
Yes, you are reading that right: all four of the Titan and Quadro cards we tested took 5 times longer to process these images! When we found this, we stopped the full tests that were planned; they would have taken many days per card at this rate. We did do one full run on a Quadro GP100, though, just to get baseline data for the poor performance of these cards. Here is how it compared to the GTX 1080 Ti, in percentage rather than raw times:
Using the GP100 caused processing to take from 3 to 11 times longer than with the GTX 1080 Ti. Given their similar performance with the Chessboard image set, this should hold true for other high-end Quadro cards and the Titan series as well.
What could be causing this massive slowdown? It isn't entirely clear, but it seems – from monitoring GPU usage and listening to the fan speed on cards during processing – that these cards are simply not running under any substantial load. Presumably, then, the calculations they should be doing are running very slowly, in turn holding up the overall processing of image sets within Pix4D.
After searching online to see if anyone else had run into this, we found a thread on the Pix4D support pages about the very same thing. There, a solution had been given for Quadro cards: go into the NVIDIA Control Panel, to the Manage 3D Settings section, and select "3D App – Game Development" from the drop-down menu. Once that change is applied, Quadro cards suddenly work great. We tested this with both the Quadro GP100 and P6000, with these results (presented in the same format as the previous GP100 vs GTX 1080 Ti chart):
That is much better! However, the performance is still not better than a GTX 1080 Ti – so there is no reason to get a high-end Quadro like this, which costs several times more than cards in the GeForce series. Still, if you already have a Quadro and are suffering from poor performance in Pix4D this should help. Unfortunately, there is no equivalent setting to this for Titan cards that we have been able to find – so it is best to avoid using those cards for this application, at least until either NVIDIA or Pix4D find and implement a solution.
Dual GPU Results
If Quadro and Titan cards are not worth the added cost, what about doubling up on GeForce cards? We tossed a second GTX 1080 Ti into the mix to see how that stacked up:
It is clear that Pix4D is not able to utilize multiple GPUs at the same time. There is a small benefit (1-2%) to having a second card, likely from Pix4D being able to run on the secondary card – which isn't being used for graphics output. We have seen similar benefits when GPU-accelerated code runs on secondary video cards in some other applications, but it certainly isn't worth the many hundreds of dollars it would cost to get such a small bump in speed. So that lesson is easily learned: just one good video card is all Pix4D needs.
Conclusion
The advice for selecting a graphics card for Pix4D ends up being pretty simple:
- Just one good video card is all you need, dual GPUs doesn't help enough to be worth the price
- GeForce cards from the mid-range (GTX 1060) on up all perform well, with the faster cards saving up to 5% total processing time
- Quadro cards are okay too, as long as you adjust the 3D Settings within the NVIDIA Control Panel… but they aren't worth the added price for Pix4D alone
- Titan cards are – at least currently – much slower, and should be avoided
It is worth noting that this article focused on the impact of the video card on Pix4D processing time. The video card is also used to view and manipulate point clouds and 3D models after processing, but there was not an easy way to test that. In the process of using and learning Pix4D, though, we found anecdotally that the GTX 1060 and up handled displaying small and mid-size projects just fine. The GTX 1080 Ti felt a little smoother with really large projects like our massive City image data set. As such, the GTX 1080 Ti is our top recommendation – but for those on a budget, or working with only smaller projects, anything from the GTX 1060 on up will do well.
Puget Systems offers a range of powerful and reliable systems that are tailor-made for your unique workflow.