Agisoft PhotoScan 1.4.1 - CPU and GPU PreferencesWritten on May 3, 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 both the CPU and video cards in a computer, during different steps of the photogrammetry workflow. One of the configuration options within the application also allows the CPU to be utilized during steps that are primarily performed on the GPU (video card) - and this is enabled by default. My assumption going into this was that having the CPU at work would improve performance, and so we tested both with it enabled and disabled to see how big the improvement was - and how much impact the model of CPU and number of GPUs would have. However, what we found surprised us.
Methodology and Test Hardware
To get to the option this article is looking at, run PhotoScan and go to the Tools -> Preferences menu. Then select the GPU tab. This is what it looks like with the setting enabled (checked) and disabled - it is at the bottom of the dialog window:
To make sure we have a wide range of data points to pull results from, we used three platforms covering high clock speed (courtesy of Intel's Core i7 8700K), high core count (via Intel's Core i9 7960X), and a maximum number of GPUs (available on AMD's Threadripper 1950X). On each platform, we tested every supported video card quantity, with the top-performing GeForce GTX 1080 Ti as the graphics card of choice. In keeping with the rest of this series, all tests were conducted with "High" quality settings.
If you would like more details about the full hardware configurations we tested on, and the image sets we used within PhotoScan, simply click here to expand the following section.
|Motherboard:||Gigabyte Z370 AORUS 5||Gigabyte X299 Designare||Gigabyte X399 AORUS 7|
|CPU:||Intel Core i7 8700K 3.7GHz (4.7GHz Turbo) Six Core||Intel Core i9 7960X 2.8GHz (4.4GHz Turbo) Sixteen Core||AMD Threadripper 1950X 3.4GHz (4GHz Boost) Sixteen Core|
|RAM:||4x Crucial DDR4-2666 16GB (64GB total)||8x Crucial DDR4-2666 16GB (128GB total)|
|GPU:||1 - 4 x NVIDIA GeForce GTX 1080 Ti 11GB
1 x GeForce GTX 1060 6GB
|Hard Drive:||Samsung 960 Pro 1TB M.2 PCI-E x4 NVMe SSD|
|OS:||Windows 10 Pro 64-bit|
|PSU:||Antec HPC Platinum 1000||EVGA SuperNova 1000W P2||EVGA SuperNova 1600W P2|
|Software:||Agisoft PhotoScan 1.4.1|
|Image Sets (from PhotoScan website)|
|Monument (32 photos)||Building (50 photos)|
Here are results for 1 - 2 GPUs on the Z370 platform, with an Intel Core i7 8700K processor:
And here are results for 1 - 3 GPUs on the X299 platform, with Intel's Core i9 7960X:
And finally, here are the results for 1 - 4 GPUs on the X399 platform, using AMD's Threadripper 1950X processor:
In five of the six charts above, having the "Use CPU when performing GPU accelerated processing" option turned off (de-selected) actually improved performance! That is rather unintuitive, especially since that option is enabled (selected) by default. The one exception was the Monument image set with the Core i7 8700K processor, which has the fewest cores but highest clock speed of the processors we tested.
To see if the GPU itself, not just the GPU quantity, had an impact we did one more test - this time using a single GTX 1060 as the video card. That is about the lowest-end card we would recommend using for PhotoScan, and we kept it with the i7 8700K since that is where we saw the closest results. Here is how it came out:
Once again, the Monument image set is a little faster with the CPU option enabled - and now the Building image set resulted in a tie. It seems, then, that with a slower GPU the CPU can be more beneficial.
Another 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. Many users might also work with larger image sets, which also take more processing time. We already saw some differences between the two small image sets we use, so your mileage may vary even more with either larger image sets or different quality options.
So what does all this mean? Assuming you are using a higher-end CPU and video card combination, it looks like turning the "Use CPU when performing GPU accelerated processing" OFF (by un-checking it) is most likely to perform the best. With a lower-end video card, probably just leave it enabled. If you have a chance, though, it would be ideal to test your own hardware setup and image sets to see which way gives you the best performance. Either way, it is a good lesson not to assume that default settings are the best.
Please feel free to report any results you find in the comments below, along with any questions or other input you may have.