Managing HPC Software Complexity with Spack
Event Type
Performance Analysis and Optimization
Programming Models & Languages
Scientific Software Development
System Software & Runtime Systems
TimeSunday, June 16th9am - 1pm
DescriptionThe modern scientific software stack includes thousands of packages, from C, C++, and Fortran libraries, to packages written in interpreted languages like Python and R. HPC applications may depend on hundreds of packages spanning all of these ecosystems. To achieve high performance, they must also leverage low-level and difficult-to-build libraries such as MPI, BLAS, and LAPACK. Integrating this stack is extremely challenging. The complexity can be an obstacle to deployment at HPC sites and deters developers from building on each others’ work.

Spack is an open source tool for HPC package management that simplifies building, installing, customizing, and sharing HPC software stacks. In the past few years, its adoption has grown rapidly: by end-users, by HPC developers, and by the world’s largest HPC centers. Spack provides a powerful and flexible dependency model, a simple Python syntax for writing package build recipes, and a repository of over 3,200 community-maintained packages. This half-day tutorial provides an introduction to Spack’s capabilities: basic usage, installing and authoring packages, and previews of more advanced features such as module generation and virtual environments. Attendees will leave with skills for using Spack to automate day-to-day tasks, along with the foundation they need to take on more advanced use cases.
Content Level 50% Introductory, 25% Intermediate, 25% Advanced
Target AudienceThis tutorial targets a broad audience, including users who simply want to install and run packages, developers who plan to author their own packages and automate their dependency management, and HPC facility staff who want to deploy large software stacks with packages and custom modules.
PrerequisitesAttendees should have basic familiarity with compiling and running programs. Basic Python and shell skills are a plus. No knowledge of package managers or build systems is required.
Computer Scientist
Computer Scientist
Software Developer - HPC Specialist
Postdoctoral Researcher