NERSCPowering Scientific Discovery Since 1974

Programming

Compiling Codes on Hopper

Cray provides a convenient set of wrapper commands that should be used in almost all cases for compiling and linking parallel programs. Invoking the wrappers will automatically link codes with the MPI libraries and other Cray system software libraries. All the MPI and Cray system include directories are also transparently imported. This page shows examples of how to compile codes on Franklin and Hopper. Read More »

Shared and Dynamic Libraries

By default the Hopper system runs a limited OS kernel which does not support shared and dynamic libraries. However, users can set an environment variable and compile applications with the -dynamic flag to enable shared and dynamic library applications to run on the Hopper compute nodes. Cray-supported libraries such as SciLib, Portals, MPI, pthreads, and many others are available as dynamic shared objects (DSOs), and you can define and use your own DSOs, too. Shell and python scripts can also run on the compute nodes. Read More »

Combining OpenMP and MPI

Combining MPI and OpenMP is becoming a more common practice among NERSC users. While the performance of hybrid MPI/OpenMP codes may not be substantially different than pure MPI codes, using OpenMP can significantly reduce memory usage for some applications. This page describes how to combine MPI and OpenMP on the Hopper and Franklin systems. Read More »

Interlanguage Programming

This page provides examples of compilation and running scripts when mixing C/C++ with Fortran codes. Read More »

Programming Tuning Options

Tips for tuning performance on the Hopper system including linking against huge memory pages and using the I/O buffering library. Read More »

Using Math Libraries LibSci and ACML

Cray's Scientific Library package LibSci includes BLAS, LAPACK, ScaLAPACK, BLACS and SuperLU. It is automatically linked to your application when the Cray compiler wrappers are used. The ACML library is also supported on Hopper and Franklin. Read More »

PGAS Language Codes (UPC, Coarray Fortran)

PGAS languages such as UPC and Coarray Fortran are available with the Cray compilers. Read More »