SlideShare a Scribd company logo
1 of 21
Download to read offline
Spack: A Package Manager for
Supercomputers, Linux and MacOS
Massimiliano Culpo
SCITAS - EPFL
The complexity of scientific software threatens productivity
Scientific software must be easy to deploy and use.
● Developers, users and facilities spend a lot of time building and porting scientific software
● Not much standardization in HPC: we are prone to trade portability for performance!
● Target machines may be very different from one another
● Applications need to be tested against different dependencies / compilers to ensure portability
lots of combinations to deploy or test!
# of compilers
# of programming models
MPI, LAPACK, BLAS, ...
# of versions of each
package
# of applications # of software packages
# of target architectures
Xeon, Power, Nvidia, KNL, ...
What can we do at HPC sites when software is easy to deploy?
To reach these goals, we need more automation.
Provide to developers:
● Multiple options for the same service (OpenMPI,
MVAPICH2, IntelMPI, ...)
● A more extensive choice of compilers
● Easy ways to set-up development environments
Provide to end-users:
● The best tuning of scientific applications
● Convenient ways to use them
And as cluster maintainers:
● We struggle less with installations
● We can explore a broader range of possibilities
before deciding what to install for users
● We can easily reproduce a software stack
How do we automate things then?
Spack: a package manager for Supercomputers
github.com/LLNL/spack
1. Get Spack:
2. Set it up:
3. Install a package:
$ git clone https://github.com/LLNL/spack
$ . spack/share/spack/setup-env.sh
$ spack install hdf5
Hdf5 and all of its dependencies are downloaded, built and installed within spack
directory
What is a package manager?
Spack is a “package manager”:
● Drives build systems, but does not
replace them
● Manages dependency DAGs
● Ensures consistent builds
Packages within Spack:
● Can have any build system they want
● Don’t need sources to be modified in any
way (pristine sources)
Figuring out configure options takes time:
● Spack is a cache of recipes
● The effort is shared across teams
● Manages dependencies
● Drives package-level:
○ build systems
○ binary installs
Package
Manager
● CMake, Autotools
● Handles library abstractions
● Generates Makefile, etc.
High Level
Build System
● Make, Ninja
● Drives build systems
● Drives binary installs
Low Level
Build System
What makes Spack different from other similar tools?
Spack handles combinatorial software complexity
spack/opt/
linux-x86_64/
gcc-4.7.2/
mpileaks-1.1-0f54bf34cadk/
intel-14.1/
hdf5-1.8.15-lkf14aq3nqiz/
bgq/
xl-12.1/
hdf5-1-8.16-fqb3a15abrwx/
...
Hash
Dependency DAG
Installation Layout
Each graph of dependencies:
● Represents a unique configuration
● Can be mapped to a unique hash
Each configuration:
● Is installed in a unique directory
● The hash of the graph is appended to
the each prefix
Installed packages:
● Have RPATHs embedded in binaries
● No need to set LD_LIBRARY_PATH or
similar for Spack built packages
● Things work the way they were built
Spack can retrieve the full configuration of installed packages
$ spack find callpath
==> 2 installed packages.
-- linux-x86_64 / clang@3.4 ---- -- linux-x86_64 / gcc@4.9.2 -------------
callpath@1.0.2 callpath@1.0.2
$ spack find -dl callpath
==> 2 installed packages.
-- linux-x86_64 / clang@3.4 ----------- -- linux-x86_64 / gcc@4.9.2 -----------
xv2clz2 callpath@1.0.2 udltshs callpath@1.0.2
ckjazss ^adept-utils@1.0.1 rfsu7fb ^adept-utils@1.0.1
3ws43m4 ^boost@1.59.0 ybet64y ^boost@1.55.0
ft7znm6 ^mpich@3.1.4 aa4ar6i ^mpich@3.1.4
qqnuet3 ^dyninst@8.2.1 tmnnge5 ^dyninst@8.2.1
3ws43m4 ^boost@1.59.0 ybet64y ^boost@1.55.0
g65rdud ^libdwarf@20130729 g2mxrl2 ^libdwarf@20130729
cj5p5fk ^libelf@0.8.13 ynpai3j ^libelf@0.8.13
cj5p5fk ^libelf@0.8.13 ynpai3j ^libelf@0.8.13
g65rdud ^libdwarf@20130729 g2mxrl2 ^libdwarf@20130729
cj5p5fk ^libelf@0.8.13 ynpai3j ^libelf@0.8.13
cj5p5fk ^libelf@0.8.13 ynpai3j ^libelf@0.8.13
ft7znm6 ^mpich@3.1.4 aa4ar6i ^mpich@3.1.4
Spack stores the information on installed packages in a DB, and can query it at any
time
Spack provides a spec syntax to describe DAG configurations
$ spack install mpileaks
$ spack install mpileaks@3.3
$ spack install mpileaks@3.3 %gcc@5.3.0
$ spack install mpileaks@3.3 %gcc@5.3.0 +threads
$ spack install mpileaks@3.3 cppflags=”-O3”
$ spack install mpileaks@3.3 target=haswell
$ spack install mpileaks@3.3 ^mpich@3.2 %gcc@5.3.0
Each expression is a spec for a particular configuration:
● Clauses represent constraints to the spec
● Constraints are optional, and you can specify only what you really need
● Installations can be customized on the command line
Spec syntax is recursive and gives full control over the combinatorial build space
Spack can constrain versions and options of dependencies
$ spack install mpileaks %intel@12.1 ^libelf@0.8.12
Spack ensures one configuration of each library per DAG
● Ensures ABI consistency
● Users do not need to know the DAG structure, only the dependency names
● Builds use the same compiler by default, but you can mix them
Spack handles ABI-incompatible, versioned interfaces like MPI
$ spack install mpileaks ^mvapich@1.9 $ spack install mpileaks ^mpi@2
Spack permits you to specify an implementation of a virtual dependency, or just the
version of its interface
Spack fills in the details when the user is not explicit
mpileaks
callpath@1.0
+debug
mpileaks ^callpath@1.0 +debug ^libelf@0.8.11
dyninstmpi
libdwarf
libelf@0.8.11
Normalize
mpileaks@2.3
%gcc@4.7.3
=linux-ppc64
callpath@1.0
%gcc@4.7.3+debug
=linux-ppc64
dyninst@8.1.2
%gcc@4.7.3
=linux-ppc64
mpich@3.0.4
%gcc@4.7.3
=linux-ppc64
libdwarf@20130729
%gcc@4.7.3
=linux-ppc64
libelf@0.8.11
%gcc@4.7.3
=linux-ppc64
Concretize
The user inputs an abstract spec with some constraints, Spack fully constrains it and
passes the concrete configuration to install
Spack builds each package in its own compilation environment
do_install()
Install dep 1 Install dep 2 ...
Spack
process
Set up environment
CC = spack/env/gcc
SPACK_CC = /usr/bin/gcc
CXX = spack/env/g++
...
PKG_CONFIG_PATH = …
CMAKE_PREFIX_PATH = …
PATH = ...
Build
process
Fork
install() configure make make install
gcc
Compiler wrappers
● Add include and libs search paths
● Add RPATH flags
● Ensure dependencies are found
● Load Cray modules
● Injects compiler flags on demand
g++ gfortran
Forked build process isolates the environment
for each build.
Compiler wrappers hide part of the complexity.
Spack packages are simple Python scripts
Metadata
Versions
and URLs
Patches, variants
(not shown)
Dependencies
Commands for
installation
Spack integrates well into different workflows
Spack generates module files or local views to ease the use of installed software.
$ spack module refresh -m tcl
Spack integrates well into different workflows
Spack generates module files or local views to ease the use of installed software.
$ spack view symlink <path> <spec>
${HOME}/local_view/
├── bin
...
└── x86_64-pc-linux-gnu-gfortran -> .../gcc-4.8/gcc-6.3.0-mkau7f7p/bin/x86_64-pc-linux-gnu-gfortran
├── doc
├── include
├── ansidecl.h -> spack/opt/spack/linux-ubuntu14-x86_64/gcc-4.8/binutils-2.27-l7va7nysnq/include/ansidecl.h
...
├── boost
└── zlib.h -> spack/opt/spack/linux-ubuntu14-x86_64/gcc-6.3.0/zlib-1.2.10-riqxnllm4s/include/zlib.h
├── lib
├── engines
...
├── libz.so.1.2.10 -> spack/opt/spack/linux-ubuntu14-x86_64/gcc-6.3.0/zlib-1.2.10-riqxnllm4s/lib/libz.so.1.2.10
└── pkgconfig
├── lib64
├── libexec
├── man
├── share
└── x86_64-pc-linux-gnu
How can people contribute?
Spack is sustained by its community
Spack is hosted on Github:
● LLNL people are extremely open to new
contributions
● More than 30 organizations, more than
100 contributors
Spack is already used in production:
● LLNL, ANL, EPFL
● ...
Github permits to manage contributions:
● Gitflow-like development
● Continuous integration, code coverage
● Fork and pull-requests
● Code-reviews, discussions on features
Contributions to Spack have grown rapidly after SC15
Spack is well documented
Readthedocs:
● Generate docs using Sphinx
● Keeps docs in sync
● Old versions are kept
Questions?

More Related Content

What's hot

Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCKernel TLV
 
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...Databricks
 
Docker interview Questions-3.pdf
Docker interview Questions-3.pdfDocker interview Questions-3.pdf
Docker interview Questions-3.pdfYogeshwaran R
 
BPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabBPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabTaeung Song
 
Linux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringLinux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringGeorg Schönberger
 
iptables 101- bottom-up
iptables 101- bottom-upiptables 101- bottom-up
iptables 101- bottom-upHungWei Chiu
 
Getting The Most Out Of Your Flash/SSDs
Getting The Most Out Of Your Flash/SSDsGetting The Most Out Of Your Flash/SSDs
Getting The Most Out Of Your Flash/SSDsAerospike, Inc.
 
Comparison between OCFS2 and GFS2
Comparison between OCFS2 and GFS2Comparison between OCFS2 and GFS2
Comparison between OCFS2 and GFS2Gang He
 
Linux basic commands
Linux basic commandsLinux basic commands
Linux basic commandsSagar Kumar
 
Spark Performance Tuning .pdf
Spark Performance Tuning .pdfSpark Performance Tuning .pdf
Spark Performance Tuning .pdfAmit Raj
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0sprdd
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDKKernel TLV
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and ToolsBrendan Gregg
 
Architecture Of The Linux Kernel
Architecture Of The Linux KernelArchitecture Of The Linux Kernel
Architecture Of The Linux Kernelguest547d74
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/CoreShay Cohen
 
Apache BookKeeper: A High Performance and Low Latency Storage Service
Apache BookKeeper: A High Performance and Low Latency Storage ServiceApache BookKeeper: A High Performance and Low Latency Storage Service
Apache BookKeeper: A High Performance and Low Latency Storage ServiceSijie Guo
 
Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Seung-Hoon Baek
 
Chips alliance omni xtend overview
Chips alliance omni xtend overviewChips alliance omni xtend overview
Chips alliance omni xtend overviewRISC-V International
 

What's hot (20)

Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
 
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
 
Docker interview Questions-3.pdf
Docker interview Questions-3.pdfDocker interview Questions-3.pdf
Docker interview Questions-3.pdf
 
eBPF/XDP
eBPF/XDP eBPF/XDP
eBPF/XDP
 
BPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabBPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLab
 
Linux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringLinux Performance Profiling and Monitoring
Linux Performance Profiling and Monitoring
 
iptables 101- bottom-up
iptables 101- bottom-upiptables 101- bottom-up
iptables 101- bottom-up
 
Getting The Most Out Of Your Flash/SSDs
Getting The Most Out Of Your Flash/SSDsGetting The Most Out Of Your Flash/SSDs
Getting The Most Out Of Your Flash/SSDs
 
Comparison between OCFS2 and GFS2
Comparison between OCFS2 and GFS2Comparison between OCFS2 and GFS2
Comparison between OCFS2 and GFS2
 
Linux basic commands
Linux basic commandsLinux basic commands
Linux basic commands
 
Spark Performance Tuning .pdf
Spark Performance Tuning .pdfSpark Performance Tuning .pdf
Spark Performance Tuning .pdf
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDK
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
 
Architecture Of The Linux Kernel
Architecture Of The Linux KernelArchitecture Of The Linux Kernel
Architecture Of The Linux Kernel
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
 
Apache BookKeeper: A High Performance and Low Latency Storage Service
Apache BookKeeper: A High Performance and Low Latency Storage ServiceApache BookKeeper: A High Performance and Low Latency Storage Service
Apache BookKeeper: A High Performance and Low Latency Storage Service
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조
 
Chips alliance omni xtend overview
Chips alliance omni xtend overviewChips alliance omni xtend overview
Chips alliance omni xtend overview
 

Similar to SPACK: A Package Manager for Supercomputers, Linux, and MacOS

Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
Tutorial to setup OpenStreetMap tileserver with customized boundaries of India
Tutorial to setup OpenStreetMap tileserver with customized boundaries of IndiaTutorial to setup OpenStreetMap tileserver with customized boundaries of India
Tutorial to setup OpenStreetMap tileserver with customized boundaries of IndiaArun Ganesh
 
CD in kubernetes using helm and ksonnet. Stas Kolenkin
CD in kubernetes using helm and ksonnet. Stas KolenkinCD in kubernetes using helm and ksonnet. Stas Kolenkin
CD in kubernetes using helm and ksonnet. Stas KolenkinDataArt
 
Automating Mendix application deployments with Nix
Automating Mendix application deployments with NixAutomating Mendix application deployments with Nix
Automating Mendix application deployments with NixSander van der Burg
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using SwiftDiego Freniche Brito
 
Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Ricardo Amaro
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)Jooho Lee
 
Using R on High Performance Computers
Using R on High Performance ComputersUsing R on High Performance Computers
Using R on High Performance ComputersDave Hiltbrand
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developerPaul Czarkowski
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'acorehard_by
 
Arch Linux Package 的前世今生
Arch Linux Package 的前世今生Arch Linux Package 的前世今生
Arch Linux Package 的前世今生yan12125
 
Developing with-devstack
Developing with-devstackDeveloping with-devstack
Developing with-devstackDeepak Garg
 
Container & kubernetes
Container & kubernetesContainer & kubernetes
Container & kubernetesTed Jung
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to KubernetesPaul Czarkowski
 
maXbox Starter87
maXbox Starter87maXbox Starter87
maXbox Starter87Max Kleiner
 
Package Management via Spack on SJTU π Supercomputer
Package Management via Spack on SJTU π SupercomputerPackage Management via Spack on SJTU π Supercomputer
Package Management via Spack on SJTU π SupercomputerJianwen Wei
 
Cloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep DiveCloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep DiveKazuto Kusama
 

Similar to SPACK: A Package Manager for Supercomputers, Linux, and MacOS (20)

Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Tutorial to setup OpenStreetMap tileserver with customized boundaries of India
Tutorial to setup OpenStreetMap tileserver with customized boundaries of IndiaTutorial to setup OpenStreetMap tileserver with customized boundaries of India
Tutorial to setup OpenStreetMap tileserver with customized boundaries of India
 
CD in kubernetes using helm and ksonnet. Stas Kolenkin
CD in kubernetes using helm and ksonnet. Stas KolenkinCD in kubernetes using helm and ksonnet. Stas Kolenkin
CD in kubernetes using helm and ksonnet. Stas Kolenkin
 
Automating Mendix application deployments with Nix
Automating Mendix application deployments with NixAutomating Mendix application deployments with Nix
Automating Mendix application deployments with Nix
 
Autotools
AutotoolsAutotools
Autotools
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
 
Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)
 
Using R on High Performance Computers
Using R on High Performance ComputersUsing R on High Performance Computers
Using R on High Performance Computers
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developer
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
Arch Linux Package 的前世今生
Arch Linux Package 的前世今生Arch Linux Package 的前世今生
Arch Linux Package 的前世今生
 
Developing with-devstack
Developing with-devstackDeveloping with-devstack
Developing with-devstack
 
Container & kubernetes
Container & kubernetesContainer & kubernetes
Container & kubernetes
 
Autotools
AutotoolsAutotools
Autotools
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
 
maXbox Starter87
maXbox Starter87maXbox Starter87
maXbox Starter87
 
Package Management via Spack on SJTU π Supercomputer
Package Management via Spack on SJTU π SupercomputerPackage Management via Spack on SJTU π Supercomputer
Package Management via Spack on SJTU π Supercomputer
 
App container rkt
App container rktApp container rkt
App container rkt
 
Cloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep DiveCloud Foundry V2 | Intermediate Deep Dive
Cloud Foundry V2 | Intermediate Deep Dive
 

More from inside-BigData.com

Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...inside-BigData.com
 
Transforming Private 5G Networks
Transforming Private 5G NetworksTransforming Private 5G Networks
Transforming Private 5G Networksinside-BigData.com
 
The Incorporation of Machine Learning into Scientific Simulations at Lawrence...
The Incorporation of Machine Learning into Scientific Simulations at Lawrence...The Incorporation of Machine Learning into Scientific Simulations at Lawrence...
The Incorporation of Machine Learning into Scientific Simulations at Lawrence...inside-BigData.com
 
How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...
How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...
How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...inside-BigData.com
 
Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...
Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...
Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...inside-BigData.com
 
HPC Impact: EDA Telemetry Neural Networks
HPC Impact: EDA Telemetry Neural NetworksHPC Impact: EDA Telemetry Neural Networks
HPC Impact: EDA Telemetry Neural Networksinside-BigData.com
 
Biohybrid Robotic Jellyfish for Future Applications in Ocean Monitoring
Biohybrid Robotic Jellyfish for Future Applications in Ocean MonitoringBiohybrid Robotic Jellyfish for Future Applications in Ocean Monitoring
Biohybrid Robotic Jellyfish for Future Applications in Ocean Monitoringinside-BigData.com
 
Machine Learning for Weather Forecasts
Machine Learning for Weather ForecastsMachine Learning for Weather Forecasts
Machine Learning for Weather Forecastsinside-BigData.com
 
HPC AI Advisory Council Update
HPC AI Advisory Council UpdateHPC AI Advisory Council Update
HPC AI Advisory Council Updateinside-BigData.com
 
Fugaku Supercomputer joins fight against COVID-19
Fugaku Supercomputer joins fight against COVID-19Fugaku Supercomputer joins fight against COVID-19
Fugaku Supercomputer joins fight against COVID-19inside-BigData.com
 
Energy Efficient Computing using Dynamic Tuning
Energy Efficient Computing using Dynamic TuningEnergy Efficient Computing using Dynamic Tuning
Energy Efficient Computing using Dynamic Tuninginside-BigData.com
 
HPC at Scale Enabled by DDN A3i and NVIDIA SuperPOD
HPC at Scale Enabled by DDN A3i and NVIDIA SuperPODHPC at Scale Enabled by DDN A3i and NVIDIA SuperPOD
HPC at Scale Enabled by DDN A3i and NVIDIA SuperPODinside-BigData.com
 
Versal Premium ACAP for Network and Cloud Acceleration
Versal Premium ACAP for Network and Cloud AccelerationVersal Premium ACAP for Network and Cloud Acceleration
Versal Premium ACAP for Network and Cloud Accelerationinside-BigData.com
 
Zettar: Moving Massive Amounts of Data across Any Distance Efficiently
Zettar: Moving Massive Amounts of Data across Any Distance EfficientlyZettar: Moving Massive Amounts of Data across Any Distance Efficiently
Zettar: Moving Massive Amounts of Data across Any Distance Efficientlyinside-BigData.com
 
Scaling TCO in a Post Moore's Era
Scaling TCO in a Post Moore's EraScaling TCO in a Post Moore's Era
Scaling TCO in a Post Moore's Erainside-BigData.com
 
CUDA-Python and RAPIDS for blazing fast scientific computing
CUDA-Python and RAPIDS for blazing fast scientific computingCUDA-Python and RAPIDS for blazing fast scientific computing
CUDA-Python and RAPIDS for blazing fast scientific computinginside-BigData.com
 
Introducing HPC with a Raspberry Pi Cluster
Introducing HPC with a Raspberry Pi ClusterIntroducing HPC with a Raspberry Pi Cluster
Introducing HPC with a Raspberry Pi Clusterinside-BigData.com
 

More from inside-BigData.com (20)

Major Market Shifts in IT
Major Market Shifts in ITMajor Market Shifts in IT
Major Market Shifts in IT
 
Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...
 
Transforming Private 5G Networks
Transforming Private 5G NetworksTransforming Private 5G Networks
Transforming Private 5G Networks
 
The Incorporation of Machine Learning into Scientific Simulations at Lawrence...
The Incorporation of Machine Learning into Scientific Simulations at Lawrence...The Incorporation of Machine Learning into Scientific Simulations at Lawrence...
The Incorporation of Machine Learning into Scientific Simulations at Lawrence...
 
How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...
How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...
How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...
 
Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...
Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...
Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...
 
HPC Impact: EDA Telemetry Neural Networks
HPC Impact: EDA Telemetry Neural NetworksHPC Impact: EDA Telemetry Neural Networks
HPC Impact: EDA Telemetry Neural Networks
 
Biohybrid Robotic Jellyfish for Future Applications in Ocean Monitoring
Biohybrid Robotic Jellyfish for Future Applications in Ocean MonitoringBiohybrid Robotic Jellyfish for Future Applications in Ocean Monitoring
Biohybrid Robotic Jellyfish for Future Applications in Ocean Monitoring
 
Machine Learning for Weather Forecasts
Machine Learning for Weather ForecastsMachine Learning for Weather Forecasts
Machine Learning for Weather Forecasts
 
HPC AI Advisory Council Update
HPC AI Advisory Council UpdateHPC AI Advisory Council Update
HPC AI Advisory Council Update
 
Fugaku Supercomputer joins fight against COVID-19
Fugaku Supercomputer joins fight against COVID-19Fugaku Supercomputer joins fight against COVID-19
Fugaku Supercomputer joins fight against COVID-19
 
Energy Efficient Computing using Dynamic Tuning
Energy Efficient Computing using Dynamic TuningEnergy Efficient Computing using Dynamic Tuning
Energy Efficient Computing using Dynamic Tuning
 
HPC at Scale Enabled by DDN A3i and NVIDIA SuperPOD
HPC at Scale Enabled by DDN A3i and NVIDIA SuperPODHPC at Scale Enabled by DDN A3i and NVIDIA SuperPOD
HPC at Scale Enabled by DDN A3i and NVIDIA SuperPOD
 
State of ARM-based HPC
State of ARM-based HPCState of ARM-based HPC
State of ARM-based HPC
 
Versal Premium ACAP for Network and Cloud Acceleration
Versal Premium ACAP for Network and Cloud AccelerationVersal Premium ACAP for Network and Cloud Acceleration
Versal Premium ACAP for Network and Cloud Acceleration
 
Zettar: Moving Massive Amounts of Data across Any Distance Efficiently
Zettar: Moving Massive Amounts of Data across Any Distance EfficientlyZettar: Moving Massive Amounts of Data across Any Distance Efficiently
Zettar: Moving Massive Amounts of Data across Any Distance Efficiently
 
Scaling TCO in a Post Moore's Era
Scaling TCO in a Post Moore's EraScaling TCO in a Post Moore's Era
Scaling TCO in a Post Moore's Era
 
CUDA-Python and RAPIDS for blazing fast scientific computing
CUDA-Python and RAPIDS for blazing fast scientific computingCUDA-Python and RAPIDS for blazing fast scientific computing
CUDA-Python and RAPIDS for blazing fast scientific computing
 
Introducing HPC with a Raspberry Pi Cluster
Introducing HPC with a Raspberry Pi ClusterIntroducing HPC with a Raspberry Pi Cluster
Introducing HPC with a Raspberry Pi Cluster
 
Overview of HPC Interconnects
Overview of HPC InterconnectsOverview of HPC Interconnects
Overview of HPC Interconnects
 

Recently uploaded

Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfROWELL MARQUINA
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 

Recently uploaded (20)

Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdf
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 

SPACK: A Package Manager for Supercomputers, Linux, and MacOS

  • 1. Spack: A Package Manager for Supercomputers, Linux and MacOS Massimiliano Culpo SCITAS - EPFL
  • 2. The complexity of scientific software threatens productivity Scientific software must be easy to deploy and use. ● Developers, users and facilities spend a lot of time building and porting scientific software ● Not much standardization in HPC: we are prone to trade portability for performance! ● Target machines may be very different from one another ● Applications need to be tested against different dependencies / compilers to ensure portability lots of combinations to deploy or test! # of compilers # of programming models MPI, LAPACK, BLAS, ... # of versions of each package # of applications # of software packages # of target architectures Xeon, Power, Nvidia, KNL, ...
  • 3. What can we do at HPC sites when software is easy to deploy? To reach these goals, we need more automation. Provide to developers: ● Multiple options for the same service (OpenMPI, MVAPICH2, IntelMPI, ...) ● A more extensive choice of compilers ● Easy ways to set-up development environments Provide to end-users: ● The best tuning of scientific applications ● Convenient ways to use them And as cluster maintainers: ● We struggle less with installations ● We can explore a broader range of possibilities before deciding what to install for users ● We can easily reproduce a software stack
  • 4. How do we automate things then?
  • 5. Spack: a package manager for Supercomputers github.com/LLNL/spack 1. Get Spack: 2. Set it up: 3. Install a package: $ git clone https://github.com/LLNL/spack $ . spack/share/spack/setup-env.sh $ spack install hdf5 Hdf5 and all of its dependencies are downloaded, built and installed within spack directory
  • 6. What is a package manager? Spack is a “package manager”: ● Drives build systems, but does not replace them ● Manages dependency DAGs ● Ensures consistent builds Packages within Spack: ● Can have any build system they want ● Don’t need sources to be modified in any way (pristine sources) Figuring out configure options takes time: ● Spack is a cache of recipes ● The effort is shared across teams ● Manages dependencies ● Drives package-level: ○ build systems ○ binary installs Package Manager ● CMake, Autotools ● Handles library abstractions ● Generates Makefile, etc. High Level Build System ● Make, Ninja ● Drives build systems ● Drives binary installs Low Level Build System
  • 7. What makes Spack different from other similar tools?
  • 8. Spack handles combinatorial software complexity spack/opt/ linux-x86_64/ gcc-4.7.2/ mpileaks-1.1-0f54bf34cadk/ intel-14.1/ hdf5-1.8.15-lkf14aq3nqiz/ bgq/ xl-12.1/ hdf5-1-8.16-fqb3a15abrwx/ ... Hash Dependency DAG Installation Layout Each graph of dependencies: ● Represents a unique configuration ● Can be mapped to a unique hash Each configuration: ● Is installed in a unique directory ● The hash of the graph is appended to the each prefix Installed packages: ● Have RPATHs embedded in binaries ● No need to set LD_LIBRARY_PATH or similar for Spack built packages ● Things work the way they were built
  • 9. Spack can retrieve the full configuration of installed packages $ spack find callpath ==> 2 installed packages. -- linux-x86_64 / clang@3.4 ---- -- linux-x86_64 / gcc@4.9.2 ------------- callpath@1.0.2 callpath@1.0.2 $ spack find -dl callpath ==> 2 installed packages. -- linux-x86_64 / clang@3.4 ----------- -- linux-x86_64 / gcc@4.9.2 ----------- xv2clz2 callpath@1.0.2 udltshs callpath@1.0.2 ckjazss ^adept-utils@1.0.1 rfsu7fb ^adept-utils@1.0.1 3ws43m4 ^boost@1.59.0 ybet64y ^boost@1.55.0 ft7znm6 ^mpich@3.1.4 aa4ar6i ^mpich@3.1.4 qqnuet3 ^dyninst@8.2.1 tmnnge5 ^dyninst@8.2.1 3ws43m4 ^boost@1.59.0 ybet64y ^boost@1.55.0 g65rdud ^libdwarf@20130729 g2mxrl2 ^libdwarf@20130729 cj5p5fk ^libelf@0.8.13 ynpai3j ^libelf@0.8.13 cj5p5fk ^libelf@0.8.13 ynpai3j ^libelf@0.8.13 g65rdud ^libdwarf@20130729 g2mxrl2 ^libdwarf@20130729 cj5p5fk ^libelf@0.8.13 ynpai3j ^libelf@0.8.13 cj5p5fk ^libelf@0.8.13 ynpai3j ^libelf@0.8.13 ft7znm6 ^mpich@3.1.4 aa4ar6i ^mpich@3.1.4 Spack stores the information on installed packages in a DB, and can query it at any time
  • 10. Spack provides a spec syntax to describe DAG configurations $ spack install mpileaks $ spack install mpileaks@3.3 $ spack install mpileaks@3.3 %gcc@5.3.0 $ spack install mpileaks@3.3 %gcc@5.3.0 +threads $ spack install mpileaks@3.3 cppflags=”-O3” $ spack install mpileaks@3.3 target=haswell $ spack install mpileaks@3.3 ^mpich@3.2 %gcc@5.3.0 Each expression is a spec for a particular configuration: ● Clauses represent constraints to the spec ● Constraints are optional, and you can specify only what you really need ● Installations can be customized on the command line Spec syntax is recursive and gives full control over the combinatorial build space
  • 11. Spack can constrain versions and options of dependencies $ spack install mpileaks %intel@12.1 ^libelf@0.8.12 Spack ensures one configuration of each library per DAG ● Ensures ABI consistency ● Users do not need to know the DAG structure, only the dependency names ● Builds use the same compiler by default, but you can mix them Spack handles ABI-incompatible, versioned interfaces like MPI $ spack install mpileaks ^mvapich@1.9 $ spack install mpileaks ^mpi@2 Spack permits you to specify an implementation of a virtual dependency, or just the version of its interface
  • 12. Spack fills in the details when the user is not explicit mpileaks callpath@1.0 +debug mpileaks ^callpath@1.0 +debug ^libelf@0.8.11 dyninstmpi libdwarf libelf@0.8.11 Normalize mpileaks@2.3 %gcc@4.7.3 =linux-ppc64 callpath@1.0 %gcc@4.7.3+debug =linux-ppc64 dyninst@8.1.2 %gcc@4.7.3 =linux-ppc64 mpich@3.0.4 %gcc@4.7.3 =linux-ppc64 libdwarf@20130729 %gcc@4.7.3 =linux-ppc64 libelf@0.8.11 %gcc@4.7.3 =linux-ppc64 Concretize The user inputs an abstract spec with some constraints, Spack fully constrains it and passes the concrete configuration to install
  • 13. Spack builds each package in its own compilation environment do_install() Install dep 1 Install dep 2 ... Spack process Set up environment CC = spack/env/gcc SPACK_CC = /usr/bin/gcc CXX = spack/env/g++ ... PKG_CONFIG_PATH = … CMAKE_PREFIX_PATH = … PATH = ... Build process Fork install() configure make make install gcc Compiler wrappers ● Add include and libs search paths ● Add RPATH flags ● Ensure dependencies are found ● Load Cray modules ● Injects compiler flags on demand g++ gfortran Forked build process isolates the environment for each build. Compiler wrappers hide part of the complexity.
  • 14. Spack packages are simple Python scripts Metadata Versions and URLs Patches, variants (not shown) Dependencies Commands for installation
  • 15. Spack integrates well into different workflows Spack generates module files or local views to ease the use of installed software. $ spack module refresh -m tcl
  • 16. Spack integrates well into different workflows Spack generates module files or local views to ease the use of installed software. $ spack view symlink <path> <spec> ${HOME}/local_view/ ├── bin ... └── x86_64-pc-linux-gnu-gfortran -> .../gcc-4.8/gcc-6.3.0-mkau7f7p/bin/x86_64-pc-linux-gnu-gfortran ├── doc ├── include ├── ansidecl.h -> spack/opt/spack/linux-ubuntu14-x86_64/gcc-4.8/binutils-2.27-l7va7nysnq/include/ansidecl.h ... ├── boost └── zlib.h -> spack/opt/spack/linux-ubuntu14-x86_64/gcc-6.3.0/zlib-1.2.10-riqxnllm4s/include/zlib.h ├── lib ├── engines ... ├── libz.so.1.2.10 -> spack/opt/spack/linux-ubuntu14-x86_64/gcc-6.3.0/zlib-1.2.10-riqxnllm4s/lib/libz.so.1.2.10 └── pkgconfig ├── lib64 ├── libexec ├── man ├── share └── x86_64-pc-linux-gnu
  • 17. How can people contribute?
  • 18. Spack is sustained by its community Spack is hosted on Github: ● LLNL people are extremely open to new contributions ● More than 30 organizations, more than 100 contributors Spack is already used in production: ● LLNL, ANL, EPFL ● ... Github permits to manage contributions: ● Gitflow-like development ● Continuous integration, code coverage ● Fork and pull-requests ● Code-reviews, discussions on features
  • 19. Contributions to Spack have grown rapidly after SC15
  • 20. Spack is well documented Readthedocs: ● Generate docs using Sphinx ● Keeps docs in sync ● Old versions are kept