Agisoft PhotoScan 1.4.1 - PCI Express ScalingWritten on April 23, 2018 by William George
PhotoScan is a photogrammetry program: an application that takes a set of images and combines them to create a 3D model or map. This article is part of a series looking at how different aspects of computer hardware affect PhotoScan performance. For more information on this software, or to see the other entries, check out our introductory article.
PhotoScan makes use of the video cards in a computer to assist with the computation of certain steps. The performance of an individual video card, or GPU, is known to impact the processing speed - but what about the connection between the video card and the rest of the computer? This interconnect is called PCI-Express and comes in a variety of speeds which are measured by the number of data lanes they provide. In this article, we will look at how PhotoScan performance scales across PCI-E 3.0 x4, x8, and x16.
Methodology and Test Hardware
PCI-Express link speeds only affect video card performance, not the CPU, so we will limit our analysis to the two primary steps in PhotoScan that are GPU accelerated: Align Photos and Build Dense Cloud. We will test these steps with two video card models, the GeForce GTX 1070 and 1080 Ti, both in single and dual card configurations and at three link speeds: PCI-E 3.0 x4, x8, and x16.
The norm for video cards is x16, and in most computers that is the speed at which a single card will operate - but when you expand to multiple GPUs, many motherboards will end up running some or all of them at slower link speeds. This is because most of the PCI-Express lanes come from the CPU... and depending on what model it is, it could provide as few as 16 lanes. Those lanes are then divided up to provide connections to each PCI-Express device in the system, with the potential for reduced performance for components like video cards in some situations.
For our investigation, we used a Gigabyte X299 Designare EX motherboard which could provide two PCI-Express slots each running with x16, x8, or x4 lanes depending on which slots on the board the video cards were installed in. GPUz was used to verify the link speeds prior to each test run. All tests were conducted with "High" quality settings. If you would like more details about the full hardware configuration we tested on, and the image sets we used within PhotoScan, simply click here to expand the following section.
|Motherboard:||Gigabyte X299 Designare|
|CPU:||Intel Core i9 7960X 2.8GHz (4.4GHz Turbo) Sixteen Core|
|RAM:||4x Crucial DDR4-2666 16GB (64GB total)|
|GPU:||NVIDIA GeForce GTX 1070 8B
NVIDIA GeForce GTX 1080 Ti 11GB
|Hard Drive:||Samsung 960 Pro 1TB M.2 PCI-E x4 NVMe SSD|
|OS:||Windows 10 Pro 64-bit|
|PSU:||EVGA SuperNova 1000W P2|
|Software:||Agisoft PhotoScan 1.4.1|
|Image Sets (from PhotoScan website)|
|Monument (32 photos)||Building (50 photos)|
Here are the results with the Monument image set:
And here are the results with the Building image set:
There is a clear relationship between PCI-Express lanes and performance in these PhotoScan steps, but it isn't huge. Align Photos shows only a second or two difference between the three tested link speeds, but the impact is a little more substantial for the Build Dense Cloud procedure. There we see a spread of anywhere from 2 to 7% depending on the video cards and image set. The delta between x16 and x8 is generally smaller than that from x8 to x4 as well, though there are exceptions.
One thing to keep in mind with the results shown above is that we did our tests at "High" quality. There is an option above that for building the dense cloud, "Ultra High", which will take substantially longer - so in some situations, the performance impact of PCI-E scaling could amount to even more time being saved. Larger image sets also take more time to process and may behave a little bit differently in terms of how much of the computation is done on the CPU vs the GPU(s). We may investigate that further in future articles.
While there is a decrease in PhotoScan performance with fewer PCI-Express lanes per video card, it does not have a huge impact. Even so, we recommend sticking with configurations that will run your video card(s) at x16 or at least x8 speeds. PCI-E x4 should be avoided, if possible, though adding an additional card at that speed is still better than not having one at all.