NERSCPowering Scientific Discovery Since 1974

Programming

Compiling Codes on Cori

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 Cori. Read More »

Save and restore programming environment versions

The default programming environment on Cori changes over time. Usually the Cray Developer Toolkit (CDT) version is upgraded about every six months on Cori so that users can get benefit from the enhanced software features and performance. However, if you need to compile a code with a specific version of CDT which is not  the default version anymore, or if your code works best with a mix of default and non-default software modules and you want to recompile with the same set of modules, then you… Read More »

Programming models

Parallel programming models at NERSC Since the transition from vector to distributed memory (MPP) supercomputer architectures, the majority of HPC applications deployed on NERSC resources have evolved to use MPI as their sole means of expressing parallelism. As single processor core compute nodes on MPP architectures gave way to multicore processors, applying the same abstraction (processes passing messages) to each available core remained an attractive alternative - no code changes were… Read More »