Todd Gamblin (LLNL); Gregory Becker (LLNL); Peter Scheibel (LLNL); Matt Legendre (LLNL); Mario Melara (LBL)
HPC software is becoming increasingly complex. The largest applications require over 100 dependency libraries, and they combine interpreted languages like Python with C, C++, and Fortran libraries. To achieve good performance, developers tune for multiple compilers, build options, and implementations of depen- dency libraries like MPI, BLAS, and LAPACK. The space of possible build configurations is combinatorial, and developers waste countless hours rebuilding software instead of producing new scientific results. This tutorial focuses on Spack, an open-source tool for HPC package management. Spack uses concise package recipes written in Python to automate builds of applications with hundreds of dependencies. Spack can build with arbitrary combinations of compilers, MPI versions, and dependency libraries. Spack allows users to build and install over 2,900 community-maintained packages, developers can quickly build on others’ work, and HPC center staff can deploy many versions of software for thousands of users. This tutorial provides a thorough introduction to Spack’s capabilities: basic software installation, creating new packages, using Spack for HPC software development, and advanced multi-user deployment. We provide detailed use cases from our experiences in production HPC environments. Most sessions involve hands-on demonstrations, so attendees should bring a laptop computer.