Managing HPC Software Complexity with Spack

Adam J. Stewart
Seminar

For the last couple years, LCRC has handled almost all of its software installations using the Spack package manager. We're going to have a tutorial on how to use Spack, which may be of interest to both system administrators as well as users.

Unlike other package managers, Spack allows you to install multiple configurations of the same software. For example, you can install 3 different versions of hdf5 with 4 different compilers and 3 different MPI libraries. It automatically handles dependency linking and generates module files for all installed packages. Spack can run entirely in your home directory without root privileges, making it perfect for users to manage their own dependencies.

This is a two-day tutorial. The first day is focused on using Spack:

Why use Spack?
Installing Spack
Basic usage
Configuration
External packages
Module file generation
Getting help

The second day is focused on contributing to Spack:

Writing packages
Dependency types
Build systems
Opening a pull request
Unit tests that need to pass

By the end of the second day, the goal is for everyone to open up their own pull requests adding new packages to Spack or modifying existing packages. A large chunk of time will be set aside to help you package your own software, so bring a list of software you want that isn't in Spack yet. Basic knowledge of Git and Python are helpful but not required. This is a hands-on tutorial, so please bring your laptop and make sure to create a GitHub account beforehand.

GitHub: https://github.com/LLNL/spack
Documentation: http://spack.readthedocs.io/en/latest/index.html

Speaker Biography: Adam J. Stewart is a system administrator in LCRC, as well as the second-leading contributor to Spack. If you use Blues, he is likely the person who installed your software.