Are you managing complex software stacks, struggling with inconsistent builds, or spending too much time wrangling dependencies? Spack was built to solve exactly these challenges—and this live course will teach you how to make the most of it.

Led by John Parent, a trusted expert who uses Spack daily in real-world workflows, this course goes far beyond surface-level tutorials. You’ll gain insight into Spack’s powerful capabilities through a structured, hands-on experience that starts with the basics and progresses to advanced techniques applicable to high-performance computing, daily development, research, and production environments.

What you’ll learn:

  • When and why to use package management to improve reliability, reproducibility, and reduce development complexity
  • Spack’s functionality, from the basic to the complex, with a focus on what makes it uniquely capable of resolving your dependencies
  • How to create and manage Spack environments tailored to your development or deployment needs
  • How to integrate Spack into your development workflows and how to integrate your software into Spack
  • How to leverage Spack’s binary caches to distribute or publish your software
  • How to integrate Spack into CI/CD pipelines for faster, more consistent, and reproducible builds
  • Advanced configuration and workflow customization techniques used by software professionals at scale

Why choose this course?

  • Live instruction from a real-world expert who knows the ins and outs of Spack—no guesswork, just practical, up-to-date knowledge.
  • Walk away with strategies you can implement immediately in your software stack.
  • Save hours (or days) of troubleshooting by learning how to make Spack work for your environment and goals.
  • Future-proof your workflows with scalable, flexible package management solutions.
  • This is your chance to learn Spack the right way—from those who use it every day!

Objectives

  • Understand the value of package management and identify when and why it should be used.
  • Understand Spack’s guiding design principles.
  • Create and configure Spack and its environments.
  • Develop and customize your own Spack packages, and update existing ones.
  • Use concretization and dependency resolution tools in Spack to maintain reproducible builds across systems.
  • Integrate Spack into CI/CD pipelines to automate package builds and testing.
  • Leverage Spack’s caching and binary build capabilities to improve CI speed and reliability.
  • Troubleshoot common issues and optimize Spack workflows for performance, scalability, and ease of maintenance.
  • Apply best practices for collaborative development, including using Spack environments to support team workflows and long-term reproducibility.

Prerequisites

  • Basic understanding of C++ software and dependencies

Agenda

How long is the course? 8 Hours, 2 4-hour sessions

Session 1:

  • Introduction to package management and Spack
  • Spack basics: Philosophy, architecture, packages, specs, concretization
  • Spack Configuration
  • Spack environments
  • Building with Spack/using Spack installed packages
  • Building your software with Spack dependencies
  • Binary Mirrors

Session 2:

  • Spack package repositories
  • Incorporating your software into Spack
  • Integrating Spack into your development workflows
  • Spack Scripting
  • Software Stacks
  • Spack in CI
    • Environments and build matrices

Practical Information

Registration for training is currently closed. Please check back for future training sessions.