Table of Contents

Compiling Nimrod at NERSC

Tips for getting nimrod to compile at nersc. Compile on your login node, test and run on compute nodes (see: Running Jobs at NERSC)

Modules

Software that Nimrod needs can easily be used by loading modules. Typically needed: acml, parmetis, superlu_dist

$ module load superlu_dist $ module load parmetis $ module load acml http://www.nersc.gov/users/software/nersc-user-environment/modules/

Nersc doesn't provide these as individual modules, use

$ module swap PrgEnv-intel/6.0.3 PrgEnv-gnu
$ module load cray-tpsl gsl

and link superlu, metis, appropriately.

Make.inc

Make.inc contains machine specific definitions for compiling Nimrod. Examples are in make_includes/ . Look at any nimrod in ~/nimrodCompiled for examples of make.inc used to compile at NERSC. Go through your make.inc file and make sure everything looks sane before compiling. Default compilers on hopper are PGI.

F90= ftn
CC = cc

Environment variables can be used for various math libs:

SLUD_LIB = $(NIMHOME)/externals/lib$(SLU_LINK).a $(SUPERLU_DIST) $(PARMETIS)

Notes for Specific Nimrod Versions

Cone

Make sure to load GSL module. Switch to gnu compilers (gfortran). Use local_linux.f for local.f

 $ module load acml parmetis superlu_dist superlu gsl
 $ module swap PrgEnv-pgi PrgEnv-gnu
 $ rm local.f && ln -s local_linux.f local.f
 

NIMWSI-bootcamp / NIMWSI-Edison / NIMWSI-cori

Switch to gnu compilers (gfortran). Compile superlu, superlu-dist, metis manually and link the SOFTWARE_PATH in make.inc Compile nimsetvn and nimset-mod as well

 $ module swap PrgEnv-pgi PrgEnv-gnu
 $ make
 $ cd nimsetvn && make && cd ..
 $ cd nimset-mod && make && cd ..

More Information

http://www.nersc.gov/users/computational-systems/cori/programming/compiling-codes-on-cori/