Running a Benchmark

Rayleigh has been programmed with internal testing suite so that its results may be compared against benchmarks described in Christensen et al. (2001) [CAC+01] and Jones et al. (2011) [JBB+11]

We recommend running a benchmark whenever running Rayleigh on a new machine for the first time, or after recompiling the code. The Christensen et al. (2001) [CAC+01] reference describes two Boussinesq tests that Rayleigh’s results may be compared against. The Jones et al. (2011) [JBB+11] reference describes anelastic tests. Rayleigh has been tested successfully against two benchmarks from each of these papers. Input files for these different tests are enumerated in Table table_benchmark below. In addition to the input files listed in Table table_benchmark, input examples appropriate for use as a template for new runs are provided with the _input suffix (as opposed to the minimal suffix. These input files still have benchmark_mode active. Be sure to turn this flag off if not running a benchmark.

Important: If you are not running a benchmark, but only wish to modify an existing benchmark-input file, delete the line containing the text “benchmark_mode=X.” When benchmark mode is active, custom inputs, such as Rayleigh number, are overridden and reset to their benchmark-appropriate values.

We suggest using the c2001_case0_minimal input file for installation verification. Algorithmically, there is little difference between the MHD, non-MHD, Boussinesq, and anelastic modes of Rayleigh. As a result, when installing the code on a new machine, it is normally sufficient to run the cheapest benchmark, case 0 from Christensen 2001 [CAC+01].

To run this benchmark, create a directory from within which to run your benchmark, and follow along with the commands below. Modify the directory structure a each step as appropriate:

  1. mkdir path_to_my_sim

  2. cd path_to_my_sim

  3. cp path_to_rayleigh/Rayleigh/input_examples/c2001_case0_minimal   main_input

  4. cp path_to_rayleigh/Rayleigh/bin/rayleigh.opt   rayleigh.opt (or use ln -s in lieu of cp)

  5. mpiexec -np N ./rayleigh.opt -nprow X -npcol Y -nr R -ntheta T

For the value N, select the number of cores you wish to run with. For this short test, 32 cores is more than sufficient. Even with only four cores, the lower-resolution test suggested below will only take around half an hour. The values X and Y are integers that describe the process grid. They should both be at least 2, and must satisfy the expression

\[N=X \times Y.\]

Some suggested combinations are {N,X,Y} = {32,4,8}, {16,4,4}, {8,2,4}, {4,2,2}. The values R and T denote the number of radial and latitudinal collocation points respectively. Select either {R,T}={48,64} or {R,T}={64,96}. The lower-resolution case takes about 3 minutes to run on 32 Intel Haswell cores. The higher-resolution case takes about 12 minutes to run on 32 Intel Haswell cores.

Once your simulation has run, examine the file path_to_my_sim/Benchmark_Reports/00025000. You should see output similar to that presented in Tables table_benchmark_low or table_benchmark_high . Your numbers may differ slightly, but all values should have a % difference of less than 1. If this condition is satisfied, your installation is working correctly.

Table. Benchmark.

Benchmark-input examples useful for verifying Rayleigh’s installation. Those from Christensen et al. (2001) [CAC+01] are Boussinesq. Those from Jones et al. (2011) [JBB+11] are anelastic. Examples are found in the directory: Rayleigh/input_examples/

Paper

Benchmark

Input File

Specify in the main_input file

Christensen et al.

Case 0

c2001_case0_minimal

benchmark_mode = 1

Christensen et al.

Case 1(MHD)

c2001_case1_minimal

benchmark_mode = 2

Jones et al. 2011

Steady Hydro

j2011_steady_hydro_minimal

benchmark_mode = 3

Jones et al. 2011

Steady MHD

j2011_steady_MHD_minimal

benchmark_mode = 4

Table. Benchmark Low.

Rayleigh benchmark report for Christensen et al. (2001) [CAC+01] case 0 when run with nr=48 and ntheta=64. Run time was approximately 3 minutes when run on 32 Intel Haswell cores.

Run command:

mpiexec -np 32 ./rayleigh.opt -nprow 4 -npcol 8 -nr 48 -ntheta 64

Observable

Measured

Suggested

% Difference

Std. Dev.

Kinetic Energy

58.347827

58.348000

-0.000297

0.000000

Temperature

0.427416

0.428120

-0.164525

0.000090

Vphi

-10.118053

-10.157100

-0.384434

0.012386

Drift Frequency

0.183272

0.182400

0.477962

0.007073

Table. Benchmark High.

Rayleigh benchmark report for Christensen et al. (2001) [CAC+01] case 0 when run with nr=64 and ntheta=96. Run time was approximately 12 minutes when run on 32 Intel Haswell cores.

Run command:

mpiexec -np 32 ./rayleigh.opt -nprow 4 -npcol 8 -nr 64 -ntheta 96

Observable

Measured

Suggested

% Difference

Std. Dev.

Kinetic Energy

58.347829

58.348000

-0.000294

0.000000

Temperature

0.427786

0.428120

-0.077927

0.000043

Vphi

-10.140183

-10.157100

-0.166551

0.005891

Drift Frequency

0.182276

0.182400

-0.067994

0.004877