Puget Systems print logo
Read this article at https://www.pugetsystems.com/guides/1804
Article Thumbnail

Best Workstation PC for RealityCapture (Summer 2020)

Written on July 10, 2020 by William George


Here at Puget Systems, specifically in the Labs department, most of the content that we write falls into one of two categories: either long, fairly in-depth articles looking at the performance of various PC components in a given application or recommended system pages, with multiple configuration options aimed at different budgets and lots of supporting data drawn from the aforementioned articles. For some readers, all of that is information overload, though, and they just want a quick question answered: what is the best computer for my needs? We’re going to try answering that question more directly in a new series of short articles, like this one.

Today we are looking at RealityCapture, a photogrammetry application for reconstructing virtual versions of real-life objects and places from sequences of digital photos. It uses the CPU for most of the heavy lifting but also benefits from a CUDA-compatible graphics card, and of course, large image sets can use a lot of drive capacity (and speed) as well.

Screenshot of RealityCapture

Screenshot of RealityCapture

Good PC Configuration for RealityCapture

We'll start off with a good, solid workstation design for RealityCapture - without too high of a price tag. This application performs best with a CPU that has a combination of high clock speed and fairly high core count, which means that AMD's latest generation of Ryzen and Threadripper processors do very well here. The Ryzen 9 3900X, is a solid choice - and 64GB of memory will usually be sufficient for projects up to several thousand images and standard settings. RealityCapture also makes use of the video card, so we'll start with a mid-range NVIDIA GeForce RTX 2060 SUPER there, and a couple of fast SSDs for the boot and storage drives.

CPU AMD Ryzen 9 3900X 12-core
Video Cards NVIDIA GeForce RTX 2060 SUPER 8GB
Drives 500GB & 1TB NVMe SSDs

Better PC Configuration for RealityCapture

Stepping up from there, we can move to the Ryzen 9 3950X with a few more cores and NVIDIA's faster GeForce RTX 2080 Ti. That combination should increase performance by 10% or more over the previous design. System memory is doubled for bigger image sets, maxing out what the Ryzen processor line can handle, and we bump up the total SSD capacity slightly as well.

CPU AMD Ryzen 9 3950X 16-core
Video Cards NVIDIA GeForce RTX 2080 Ti 11GB
Drives 500GB & 2TB NVMe SSDs

Best PC Configuration for RealityCapture

For the best performance in RealityCapture, especially with larger image sets, we have to step up from the Ryzen family to AMD's Threadripper line. The 32-core 3970X tops our benchmark results, and we're also maxing out video card performance by adding a second GeForce RTX 2080 Ti. RAM is doubled again, and a hard drive is added for extra storage space (not for active projects!).

CPU AMD Threadripper 3970X 32-core
Video Cards 2x NVIDIA GeForce RTX 2080 Ti 11GB
Drives 500GB & 2TB NVMe SSDs & 4TB HDD

Depending on your exact situation, you might want even more drive capacity - but such things are entirely up to personal preference. Many of the options on the configurations above can be adjusted as you see fit, to best line up with your specific needs and budget.

It is also worth noting that disabling SMT can often increase performance slightly in RealityCapture. This is especially true for higher core count processors, like the Ryzen 9 3950X and Threadripper 3970X recommended above. Check out this article for further details.

Additional Resources

If you want to know more about RealityCapture performance, we have published several articles over the years looking at how various CPUs and video cards compare when processing different image sets. We also have public benchmarks that you can download and run on your own system to see how it stacks up with the latest hardware. And if you aren’t sure what you need, or if your workflow includes multiple applications, please feel free to call or email our consultants to get a more personalized configuration.

RealityCapture Workstations

Puget Systems offers a range of poweful and reliable systems that are tailor-made for your unique workflow.

Configure a System!

Labs Consultation Service

Our Labs team is available to provide in-depth hardware recommendations based on your workflow.

Find Out More!
Tags: Workstation, PC Workstation, PC, RealityCapture, photogrammetry

Do you guys have a sense of whether or not an Optane drive would help with the reconstruction in Reality Capture when dealing with extremely large datasets of high quality pictures?

I’m currently processing a model with 3100 images, with each one one weighing in at 61megapixels or about 35mb, for a total of about 100 GB of input files. And right now the texturing taking a day or two to process, but as best as I can tell it’s only taking this long because it spends 9/10th of the time loading images into memory. It will take like a minute to load the images, another forty seconds to load metadata from the cache file, and then it will take five seconds to process. That’s crazy, especially if I’m about to drop $2000 on a 3970x just to watch it spend 90% of its time sitting idle while it waits for the next set of images to load.

So my thinking is that an Optane drive, which from what I can tell offers significantly faster random reading capabilities, will drastically cut down on the texturing time?

Posted on 2020-07-14 19:42:26

How much system memory do you have? Normally I don't think an Optane drive would be very helpful, but if you are in a situation where there isn't enough RAM (and with that many images, this is very possible) then there will be an increased amount of swapping to / from the drive and a faster one *might* help.

Additionally, what sort of drive do you have now? Optane's big thing is IOPS, but in this situation I suspect it will be more about raw speed and not necessarily IOPS.

Posted on 2020-07-14 19:52:51
Aaron Cederberg

I’m running 40 gigs of ram right now, and more ram does help because it seems to enable processing textures in larger chunks (it was calling up max 50 images at a time with 16gb of ram, but now it’s calling up 100-200 images at a time since I upgraded top 40), but I think you would need like 512 GB or even 1TB of RAM to be maximally efficient and run the whole thing off of RAM (right now I’m dealing with 100GB of images plus 200-300GB of cache files, and I could do more).

I guess it’s just that a 1TB Optane is a just lot cheaper than 1TB of RAM, but yea, I guess the theoretically best option is to get enough RAM to contain the whole thing.

But wouldn’t IOPS be really important here? Aren’t exactly IOPS what you need if you need to efficiently sort through a random subset of a 400-500GB collection of files?

It isn’t calling up a sequential series of images. It’s spending say two minutes loading up 100-200 random images from random places on the disk, and then it goes to a different random place and grabs a random subset of the cache file. And it’s repeating this process with a new set of randomly selected data thousands of times over the course of a 24 hour reconstruction.

To me that sounds like something that will benefit greatly from a lot of IOPS and low latency such as what you get in Optane, but I don’t fully understand how all of this works.

Posted on 2020-07-14 20:42:38

IOPS tends (in my experience) to be more about tons of really small files - or small parts of a larger file (like a database) if they are accessed separately. With images, even a few thousand, those are relatively large individual files and the data for each one should be stored sequentially - so you aren't trying to get 500,000 small bits of data all over the drive as fast as possible, but rather a few hundred much larger sections of data. Even non-Optane SSDs have IOPS measured in the tens of thousands per second (or more) and would probably be plenty fast in that regard.

That is part of why I was wondering what drive(s) you are using now? If you are working off a SATA-based SSD then moving to a nice M.2 drive could be a big help - whether Optane or something like Samsung's 970 series.

Posted on 2020-07-14 20:52:41
Aaron Cederberg

Oh yea, forgot to mention it — I’m using a intel 660p 1TB M2 drive. So it’s on the low end of things as far as M.2 SSDs go, but it’s not SATA.

So based on what you’re saying I should do pretty well by just keeping it simple and upgrading to something more conventional like a Samsung EVO plus, since those are nearly twice as fast as the 660p in sequential reads. I guess it’ll take a 120 second long image load and turn it into something like a 70 second long image load.

Posted on 2020-07-14 21:55:35

I think I would give that a try, or maybe even the 970 Pro, and then also consider more RAM if you go up to the 3970X (which can support up to 256GB via 32GB modules). Maybe I'll see about testing an Optane drive someday, but I would need bigger image sets to work with than what I use now (since 64GB seems sufficient for my image sets right now, so it isn't hitting the drive all that badly).

Posted on 2020-07-14 22:03:08
Aaron Cederberg

I’d be happy to send over some of my datasets if you need something to run tests on.

Posted on 2020-07-14 22:26:58

I might take you up on that at some point! I don't think I'll have an opportunity for this sort of testing right away, but if / when I do I will message you through Disqus :)

Posted on 2020-07-16 17:27:42