Compiling and Installing Rayleigh

A detailed explanation of the installation process may be found in the root directory of the code repository at:

Rayleigh/INSTALL.

We provide an abbreviated version of those instructions here.

Third-Party Dependencies

In order to compile Rayleigh, you will need to have MPI (Message Passing Interface) installed along with a Fortran 2003-compliant compiler. Rayleigh has been successfully compiled with GNU, Intel, and IBM compilers (PGI has not been tested yet). Rayleigh’s configure script provides native support for the Intel and GNU compilers. See Rayleigh/INSTALL for an example of configuration using the IBM compiler.

Rayleigh depends on the following third party libraries:

  1. BLAS (Basic Linear Algebra Subprograms)

  2. LAPACK (Linear Algebra PACKage)

  3. FFTW 3.x (Fastest Fourier Transform in the West)

You will need to install these libraries before compiling Rayleigh. If you plan to run Rayleigh on Intel processors, we suggest installing Intel’s Math Kernel Library (MKL) in lieu of installing these libraries individually. The Math Kernel Library provides optimized versions of BLAS, LAPACK, and FFTW. It has been tuned, by Intel, for optimal performance on Intel processors. At the time of this writing, MKL is provided free of charge. You may find it here.

Compilation

Rayleigh is compiled using the standard Linux installation scheme of configure/make/make-install. From within the Rayleigh directory, run these commands:

  1. ./configure – See Rayleigh/INSTALL or run ./configure –help to see relevant options.

  2. make – This produces the code. You can run make -j to build several files in parallel and speed up the build this way.

  3. make install – This places the Rayleigh executables in Rayleigh/bin. If you would like to place them in (say) /home/my_rayleigh, run configure as: ./configure –prefix=/home/my_rayleigh.

For most builds, two executables will be created: rayleigh.opt and rayleigh.dbg. Use them as follows:

  1. When running production jobs, use rayleigh.opt.

  2. If you encounter an unexpected crash and would like to report the error, rerun the job with rayleigh.dbg. This version of the code is compiled with debugging symbols. It will (usually) produce meaningful error messages in place of the gibberish that is output when rayleigh.opt crashes.

If configure detects the Intel compiler, you will be presented with a number of choices for the vectorization option. If you select all, rayleigh.opt will not be created. Instead, rayleigh.sse, rayleigh.avx, etc. will be placed in Rayleigh/bin. This is useful if running on a machine with heterogeneous node architectures (e.g., Pleiades). If you are not running on such a machine, pick the appropriate vectorization level, and rayleigh.opt will be compiled using that vectorization level.

Verifying Your Installation

Rayleigh comes with a benchmarking mode that helps you verify that the installation is performing correctly. If you are running Rayleigh for the first time, or running on a new machine, follow along with the example in §Running a Benchmark, that you receive an accurate benchmark report before running a custom model.