Skip to content

Scale and limits

This page tells you how many parameters each method can take. D is the number of parameters and N is the sample count.

Every method has a different limit, and the limits are far apart. Two methods stop being usable at about 100 parameters. Three run at 5000 parameters in under a second. Read the table before you plan a high-dimensional study.

What each method supports

Measured on one machine. See How these numbers were measured for the setup, and read the ceiling as an order of magnitude, not an exact number.

MethodDesign cost in model runsWorks toWhat sets the limit
Morrisr(D+1)5000+Nothing yet. Analysis time is flat in D.
DGSMN Jacobians5000+Nothing yet. Cheapest method at high D.
Sobol'N(D+2), or N(2D+2) with second order5000+Memory for the design array. See The design array is the real limit.
Borgonovo deltagiven data5000Analysis time. About 25 s at D=5000.
Optimal transportgiven data5000Analysis time. About 39 s at D=5000.
PAWNgiven data5000Analysis time. About 149 s at D=5000.
KucherenkoN(2D+1)1000Design memory, and sampling time above D=1000.
PCEgiven data1000You need N>2D rows. The order drops to 1 above D100.
Shapley effectsgiven data1000Same as PCE, which is its default backend.
RS-HDMRgiven data500maxorder=2 builds D2 component functions.
eFAST4M2D(D1)100The design itself. See eFAST.
VKOGAgiven data100Greedy centre selection.
HSICgiven data10 to 30N×N kernels times n_perms. Set n_perms lower to go further.

Three of these limits move if you change a setting:

  • HSIC costs D×N2× n_perms. The default n_perms=200 is what sets the low ceiling. Lower it, or lower N, and HSIC goes further.
  • RS-HDMR costs D2 at the default maxorder=2. Set maxorder=1 and the cost becomes linear in D, but you lose every interaction term.
  • PCE reduces its own order to fit your sample budget and warns when it does. Above D100 with N=4096 it drops to order 1, which is a linear model. It then cannot see interactions at all. Give it more rows, or read the warning and accept main effects only.

Pick a method for a high-dimensional problem

  1. If your model is written in JAX and you can differentiate it, use DGSM. It ran 5000 parameters in 0.91 s and 501 MB from 1024 sample points. Nothing else comes close at high D.
  2. If you cannot differentiate the model, screen with Morris. It costs r(D+1) runs and its analysis time does not grow with D.
  3. Fix the parameters that screening says do nothing. Then spend your budget on Sobol' for the survivors.

Do not start with Sobol' at high D. The next section says why.

The design array is the real limit

The Saltelli design has N(D+2) rows of D columns. The array grows with the square of D. Analysis is not the problem. The array is.

At D=5000 with a base count of N=1024:

Size
The design array you must hold and evaluate102 GB
The outputs Y20 MB
Peak memory sobol.analyze addsabout 0

sobol.analyze is cheap at any D. It ran in 0.48 s at D=5000. The cost is holding the design and running your model on it.

This also means jaxgsa.config.set_memory_budget does not help here. That budget sizes transient arrays inside an analysis. The design array is created by sample() before any analysis starts, and you hold it, not jaxgsa.

If the design does not fit, lower the base count N. Watch what that costs you: Monte Carlo error falls with the square root of N, so a base count of 4 is not a usable answer.

eFAST grows with the square of D

eFAST needs n_per_curve >= 4*M^2*(D-1) + 1 points, and it uses one curve per parameter. The number of model runs therefore grows with D2, and the design array grows with D3.

DModel runs at M=4Design array
1057700.2 MB
100633,700236 MB
50015,968,50029.7 GB
100063,937,000238 GB

M=1 is the floor and it only divides the cost by 16. eFAST at D=500 still needs 1.9 GB there. Use eFAST below about 100 parameters. Above that, pick Sobol' or Morris.

How these numbers were measured

One sweep over D{10,50,100,500,1000,5000} for all thirteen methods.

  • Apple M1 Pro, 16 GB, CPU only, float32.
  • The model was f(x)=jxj/(j+1)+5x0x1. Parameters 0 and 1 dominate at every D. Every method that ran ranked both of them on top.
  • One scalar output. A model with many outputs or time steps costs more.
  • Given-data methods got N=max(4096, 2D) rows.
  • A method "works to" a value of D if it finished in under 300 s inside a 600 MB design budget.

Your limits will differ. Treat the table as a guide to which methods to try first, not as a specification.

Released under the BSD-3-Clause License.