Metashape 1.6.1: Running Simultaneous InstancesWritten on April 29, 2020 by William George
In our past testing of Metashape, we have found that it only effectively uses around 8-16 cores. More than that doesn't help, and so the focus for best performance is on high clock speeds within that range. What if you were running multiple photogrammetry jobs at the same time, though? Would that end up better utilizing a high core count processor? We did just that to find out.
As a first foray into running multiple instances of an application in our testing, we started small on the software side but big on the CPU - using AMD's Threadripper 3990X. This 64-core beast certainly has enough threads to run two (and maybe more) instances of Metashape at the same time, and also supports enough RAM to make sure that we weren't limiting performance on that side.
Here is a list of the hardware components that made up the test configuration, along with the OS and application versions we used:
|CPU||AMD Threadripper 3990X|
|CPU Cooler||Noctua NH-U14S TR4-SP3|
|Motherboard||Gigabyte TRX40 AORUS Pro WiFi|
|RAM||8x DDR4-2933 16GB (128GB total)|
|Video Card||2x NVIDIA GeForce RTX 2080 Ti 11GB|
|Hard Drive||Samsung 970 Pro 1TB|
|Software||Windows 10 Pro 64-bit
Windows 10 Pro for Workstations 64-bit
For testing photogrammetry applications we now have four image sets that we own the rights to, covering both smaller and larger size Model and Map projects. All of these image sets are available in our public Metashape benchmarks, split up to allow quick or extended tests, which you can download and run if you want to compare your system's performance to what we measured for this article.
- Rock Model - A small model project taken with a smartphone camera at 20 megapixels
- School Map - A small drone mapping project using photos that are 18 megapixels each
- School Model - A medium size model using images that are each 18 megapixels
- Park Map - A large drone-captured map project with photos that are 18 megapixels each
Given the focus of this article, however, I opted to use only the larger two image sets. I wanted the processing time to be long enough to ensure good results, and to really demonstrate whether this attempt to improve performance is effective. I found that the public version of our benchmark, available at the link above, worked better with two instances going at the same time than our internal tool. That test was run in two configurations:
- One instance by itself, with the full power of the system available to it (all 64 cores, with SMT disabled as it doesn't help this application, 128GB of RAM, and dual GPUs)
- Two instances running at the same time, but sharing system resources (each instance of Metashape was specifically assigned one of the two video cards in the Preferences -> GPU menu)
Here is a gallery showing the results, in seconds, for processing each image set by itself ("single project") as well as the longer of the two times from our concurrent testing ("parallel"). I also included a third result, which is just the single project time doubled up to show how long it would have taken to process it twice back to back ("serial") instead of at the same time.
Here is the same info, but shown as a percentage of time taken compared to the single project by itself:
The results speak for themselves, and are quite impressive! Yes, it takes 10-26% longer to process two projects simultaneously on this system compared to one by itself... but if you have multiple projects to work on, that is a much more efficient approach than processing them just one at a time. This may well extend further, beyond just two instances of Metashape - but multitasking like this would eventually be limited by either the CPU core count, RAM capacity, or number of video cards within a single workstation.
Can you run multiple instances of Metashape at the same time?
Yes, you can - at least with the Metashape Professional license we have access to. It is worth noting that you cannot control how many CPU cores or how much RAM Metashape will use, at least from within the application, but you can select which GPU(s) are to be used. Out of an abundance of caution, and until I can test things further, I would advise setting each instance to run on a different GPU.
Is running multiple instances of Metashape a good idea?
That depends on your hardware and workflow. If you have a lot of projects that you could process at the same time, and a system with >16 cores, at least twice the amount of RAM you need for a single project, and multiple video cards - then yes, this is a way to improve overall performance. If you don't have a backlog of projects, though, or if your PC isn't that powerful, then I would stick to one at a time.
Despite this experiment having been quite a success, I am not sure how widespread the need for running multiple photogrammetry projects at the same time really is. Our recommended systems are still set up with the expectation that folks will be processing one image set at a time, but if you know that you want to push beyond that just call or email our consultants and they can help tailor a more powerful system to your exact needs.
I would also love to hear in the comments below if this is something you have tried, or are interested in! If enough users want to go this direction, we could easily add a recommended system built for this - and potentially even do expanded testing on 3 or 4 instances at the same time.
Looking for a Metashape Workstation?
Puget Systems offers a range of poweful and reliable systems that are tailor-made for your unique workflow.