ODM Windows parameter max-concurrency

Hello everyone, I’m currently using the latest version of ODM for Windows (2.8.4) and I would like to know if someone could explain to me: how to properly scale the –max-concurrency parameter.
My computer settings are:

  • Processor: Xeon E5-2696 v3 (18 cores and 36 threads)
  • RAM: 32GB DDR3 1866MHz
  • Storage: 1TB m.2 NVMe SSD
  • S.O.: Windows 10
1 Like

That’s tough without knowing your typical Task size (image count), typical image size (Megapixels), and desired parameter set.

I’d say let it be as default, which should use all of your available threads.


Would add that it depends if you use the machine only for this. If you want to keep some responsivness, especially for the graphical interface of windows and the other apps set it to the max number of core minus one.


So, the biggest reason for my doubt was that in previous versions, if I’m not mistaken, the default value for --max-concurrency was 4 and in this new version it changed to 36.

  • Image count = 752 images;
  • Dimension = 4896 width x 3672 height pixels;
  • Honrizontal and Vertical resolution = 350 dpi

Parameter set:

 run C:\Users\felipe\workspace\datasets\aroazes\aroazes_02 --resize-to -1 --min-num-features 20000 --feature-type sift --feature-quality high --matcher-type flann --matcher-neighbors 8 --max-concurrency 36 --use-hybrid-bundle-adjustment --sfm-algorithm triangulation --use-3dmesh --skip-3dmodel --ignore-gsd --mesh-size 300000 --mesh-octree-depth 12 --pc-quality medium --pc-csv --pc-las --pc-copc --pc-filter 2.5 --pc-sample 0.5 --pc-tile --smrf-scalar 1.25 --smrf-slope 0.15 --smrf-threshold 0.5 --smrf-window 18 --texturing-data-term gmi --texturing-outlier-removal-type gauss_clamping --texturing-tone-mapping gamma --dtm --dsm --dem-gapfill-steps 3 --dem-resolution 10 --dem-decimation 20 --orthophoto-resolution 7 --orthophoto-png --orthophoto-kmz --orthophoto-compression DEFLATE --tiles --build-overviews --cog --copy-to C:\Users\felipe\workspace\datasets\aroazes\aroazes_02\resultados --time --split 150 --split-overlap 300
1 Like

Yes, I usually just leave the processing running. Thanks for the tip.

1 Like

I do not believe we’ve ever capped it by default. It should default to the maximum number of threads on the machine. It is possible if you ran a version under an older version of Docker or in VirtualBox you might not have allowed all the threads to be seen by the VM.

Similarly, if you ran it on a different computer with a different processor, the number of threads may well be different.

1 Like

I understand. But I only referred to the native version of Windows, based on the ODM Help, which in previous versions <= 2.8.3 had a default value of 4 and in the current version it is 36. But in relation to how things are working I cannot comment, I do not know. But, I just wanted to make it clear that it’s not a problem for me, I just wanted to understand how I could, if possible, scale that value properly, that is, if I should take into account the number of cores or threads.

1 Like