Installation

Introduction

PSC is available from github at https:://github.com/psc-code/psc.git . The recommended build method uses Spack package manager. Spack is a package manager that targets HPC use cases. Installing with spack will automate the installation and linking of dependencies. The Legacy build method uses cmake, but the dependencies must be installed manually.

Dependencies

PSC has the following dependencies:

  • (required) cmake is used as the build system
  • (required) MPI, the Message Passing Interface library used for running the code in parallel
  • (included) googletest for testing
  • (required) HDF5, currently still the only real option for regular field / particle output
  • (optional) ADIOS2, currently the only option for checkpoint I/O
  • (optional) viscid is useful for analyzing / visualizing PSC data
  • (optional) rmm, Performance optimization, provides custom cuda allocator to reduce cudaMalloc/cudaFree overhead.
  • (optional) nvtx_pmpi MPI hooks so that all MPI calls appear on nsight systems profiler

Spack Build Instructions

  • Clone Spack
$ git clone -b releases/v0.15 https://github.com/spack/spack.git
  • Enable shell support for Spack.
# For bash/zsh users
$ export SPACK_ROOT=/path/to/spack
$ . $SPACK_ROOT/share/spack/setup-env.sh
  • Set up spack for your machine

Generally speaking, spack should be configured for your particular system, so that it uses preinstalled system software, like MPI and compilers rather than building everything from scratch.

We do provide a config for Summit, which you can use by doing

$ mkdir -p ~/.spack/linux
$ ln -s path/to/psc/spack/configs/summit/*.yaml ~/.spack/linux

Note

It’d be nice to add configurations for more systems, including an Ubuntu docker image.

  • Add the PSC package repo to Spack
$ spack repo add path/to/psc/spack/psc
==> Added repo with namespace 'psc'.
  • And finally,
$ spack install psc