SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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?

Más contenido relacionado

La actualidad más candente

Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerShu Sugimoto
 
Openwrt startup
Openwrt startupOpenwrt startup
Openwrt startup晓东 杜
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
 
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料直久 住川
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
Conan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for DevelopersConan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for DevelopersUilian Ries
 
CMake - Introduction and best practices
CMake - Introduction and best practicesCMake - Introduction and best practices
CMake - Introduction and best practicesDaniel Pfeifer
 
Git, CMake, Conan - How to ship and reuse our C++ projects?
Git, CMake, Conan - How to ship and reuse our C++ projects?Git, CMake, Conan - How to ship and reuse our C++ projects?
Git, CMake, Conan - How to ship and reuse our C++ projects?Mateusz Pusz
 
Introduction to eBPF
Introduction to eBPFIntroduction to eBPF
Introduction to eBPFRogerColl2
 
Linux BPF Superpowers
Linux BPF SuperpowersLinux BPF Superpowers
Linux BPF SuperpowersBrendan Gregg
 
eBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux KerneleBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux KernelThomas Graf
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - PrésentationDavid RIEHL
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptablesKernel TLV
 
Homer - Workshop at Kamailio World 2017
Homer - Workshop at Kamailio World 2017Homer - Workshop at Kamailio World 2017
Homer - Workshop at Kamailio World 2017Giacomo Vacca
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)MITSUNARI Shigeo
 
Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Jarod Wang
 
Qt5 (minimal) on beaglebone, with Yocto
Qt5 (minimal) on beaglebone, with YoctoQt5 (minimal) on beaglebone, with Yocto
Qt5 (minimal) on beaglebone, with YoctoPrabindh Sundareson
 

La actualidad más candente (20)

Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
 
Openwrt startup
Openwrt startupOpenwrt startup
Openwrt startup
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
Effective CMake
Effective CMakeEffective CMake
Effective CMake
 
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Conan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for DevelopersConan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for Developers
 
CMake - Introduction and best practices
CMake - Introduction and best practicesCMake - Introduction and best practices
CMake - Introduction and best practices
 
Git, CMake, Conan - How to ship and reuse our C++ projects?
Git, CMake, Conan - How to ship and reuse our C++ projects?Git, CMake, Conan - How to ship and reuse our C++ projects?
Git, CMake, Conan - How to ship and reuse our C++ projects?
 
Introduction to eBPF
Introduction to eBPFIntroduction to eBPF
Introduction to eBPF
 
Linux BPF Superpowers
Linux BPF SuperpowersLinux BPF Superpowers
Linux BPF Superpowers
 
eBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux KerneleBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux Kernel
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - Présentation
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptables
 
Dpdk performance
Dpdk performanceDpdk performance
Dpdk performance
 
Homer - Workshop at Kamailio World 2017
Homer - Workshop at Kamailio World 2017Homer - Workshop at Kamailio World 2017
Homer - Workshop at Kamailio World 2017
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
 
Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0
 
Qt5 (minimal) on beaglebone, with Yocto
Qt5 (minimal) on beaglebone, with YoctoQt5 (minimal) on beaglebone, with Yocto
Qt5 (minimal) on beaglebone, with Yocto
 

Similar a 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
 
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 a 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
 
spack_hpc.pptx
spack_hpc.pptxspack_hpc.pptx
spack_hpc.pptx
 
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
 
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
 

Más de 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
 

Más de 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
 

Último

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

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