Hardware GUI Tips & Tricks

Why doesn’t OS use all available memory and cores when optimizing or tolerancing?

Relating to: Tolerance Optimization and Operands

The number of cores and memory utilized by OpticStudio is dependent on many factors. Their usage is based on which operands are used in the Merit Function, the number of variables in the system, and the overall design complexity. OpticStudio will make a number of efficiency decisions as it utilizes memory and spins up cores for optimization or tolerancing. For this reason, it is very common that OpticStudio may not use all memory or cores available.

When you specify the # of Cores (for a number of OpticStudio tools), you are telling OpticStudio to request that number of cores. This does not mean that OpticStudio will be given the number of cores requested. The cores allocated to any program is controlled by Windows. Depending on the needs of the operating system and other applications, this number of cores may or may not be made available for the optimization and tolerance.

It is also important to note that specifically with optimization. OpticStudio will only use as many cores as there are variables defined in your system. For each of these cores, it will create a copy of your system into memory, and depending on its size and complexity, especially if there is CAD included, the amount of memory can limit the number of cores utilized.

Sometimes the calculations can be bottlenecked by a single-threaded computation. Many of OpticStudio’s tools and analyses are multi-threaded; however, some are not. When the Merit Function includes a single-threaded operand or computation, the overall core usage will be limited. In general, we recommend using the Optimization Wizard when appropriate, because the resultant Merit Functions are highly optimized to run well on many cores in a multi-threaded calculation.