Brussels / 3 & 4 February 2018


How compilers affect dependency resolution in Spack

Spack is a general-purpose package manager, used on machines ranging from laptops to high performance computing (HPC) clusters. It supports packages in C, C++, Fortran, as well as many other languages, and it allows users to build many different versions of packages with different compilers, build options, dependencies, patches, and target architectures.

Swapping a new compiler into a build may seem trivial, but this and other features in Spack add subtle constraints and complexities to the dependency model. We'll talk about modeling compiler runtime libraries in the DAG, compilers depending on other compilers, and how dependency resolution has to change for cross-compiling. We'll also touch on why all this is necessary for HPC environments, and how packaging has helped to enable new collaborations and software reuse across the scientific computing community.


Photo of Todd Gamblin Todd Gamblin