Spack Tutorial on AWS The most recent version of these slides can be found at: July 28-29, 2020 https://spack-tutorial.readthedocs.io LLNL-PRES-806064 This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under contract DE-AC52-07NA27344. Lawrence Livermore National Security, LLC
Tutorial Materials Download the latest version of slides and handouts at: spack-tutorial.readthedocs.io For more: § Spack website: spack.io § Spack GitHub repository: github.com/spack/spack § Spack Reference Documentation: spack.readthedocs.io Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 2 LLNL-PRES-806064
Software complexity in HPC is growing glm suite-sparse yaml-cpp metis cmake ncurses pkgconf parmetis nalu hwloc libxml2 xz bzip2 openssl boost trilinos superlu openblas netlib-scalapack mumps openmpi zlib netcdf hdf5 matio m4 libsigsegv parallel-netcdf Nalu: Generalized Unstructured Massively Parallel Low Mach Flow Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 3 LLNL-PRES-806064
Software complexity in HPC is growing adol-c automake autoconf perl glm suite-sparse yaml-cpp gmp libtool metis cmake ncurses m4 libsigsegv parmetis pkgconf nalu hwloc libxml2 xz p4est pkgconf bzip2 openssl hwloc libxml2 boost xz trilinos superlu openblas netlib-scalapack netcdf-cxx netcdf mumps openmpi zlib nanoflann netcdf hdf5 matio m4 libsigsegv matio parallel-netcdf hdf5 Nalu: Generalized Unstructured Massively Parallel Low Mach Flow sundials glm netlib-scalapack openmpi mumps trilinos hypre openblas gdbm superlu-dist parmetis sqlite readline zlib petsc python dealii slepc ncurses arpack-ng openssl cmake metis gmsh oce suite-sparse tetgen intel-tbb netgen bzip2 assimp boost gsl muparser dealii: C++ Finite Element Library Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 4 LLNL-PRES-806064
Software complexity in HPC is growing r-randomforest glm suite-sparse yaml-cpp r-labeling metis cmake ncurses parmetis pkgconf r-munsell nalu r-lazyeval hwloc libxml2 xz r-colorspace r-rcolorbrewer bzip2 openssl boost r-viridislite trilinos superlu openblas r-scales r-dichromat netlib-scalapack mumps r-tibble r-assertthat openmpi zlib netcdf hdf5 r-rlang r-gtable matio m4 libsigsegv r-ggplot2 parallel-netcdf r-plyr r-reshape2 r-rcpp Nalu: Generalized Unstructured Massively Parallel Low Mach Flow r-modelmetrics freetype bzip2 gperf r-r6 fontconfig r-minqa r-nloptr r-caret r-digest cairo libxml2 r-rcppeigen pixman r-lme4 harfbuzz libpng r-praise r-testthat pango sed xz adol-c automake gobject-introspection autoconf perl glib gettext r-mgcv r-crayon tar gmp libtool m4 libsigsegv libffi p4est r-nlme libtiff pkgconf hwloc libxml2 help2man r-pbkrtest xz r-mass zlib r-foreach r-iterators flex r-car netcdf-cxx netcdf r-sparsem curl r python ncurses nanoflann pkgconf openssl readline r-quantreg r-matrixmodels matio pcre hdf5 jdk libjpeg-turbo r-matrix cmake sundials icu4c sqlite font-util r-lattice r-adabag r-glmnet glm tk tcl nasm libxau gdbm xproto netlib-scalapack r-cubist r-mlbench libxdmcp openmpi mumps xextproto r-magrittr perl libpthread-stubs trilinos xtrans r-data-table libxcb util-macros r-stringr xcb-proto hypre r-xgboost libx11 inputproto r-rminer r-e1071 r-class r-codetools openblas kbproto gdbm bison r-kknn r-stringi r-igraph r-irlba r-rpart automake superlu-dist parmetis sqlite autoconf readline r-nnet r-pkgconfig zlib petsc gmp libtool m4 libsigsegv python dealii slepc ncurses arpack-ng openssl r-mda metis cmake r-kernlab gmsh oce suite-sparse r-strucchange r-zoo r-sandwich tetgen intel-tbb r-party r-survival netgen bzip2 r-multcomp r-th-data assimp r-plotrix boost r-coin r-mvtnorm r-modeltools gsl r-pls muparser dealii: C++ Finite Element Library R Miner: R Data Mining Library Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 5 LLNL-PRES-806064
What is the “production” environment for HPC? § Someone’s home directory? § LLNL? LANL? Sandia? ANL? LBL? TACC? — Environments at large-scale sites are very different. § Which MPI implementation? § Which compiler? § Which dependencies? § Which versions of dependencies? — Many applications require specific dependency versions. Real answer: there isn’t a single production environment or a standard way to build. Reusing someone else’s software is HARD. Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 6 LLNL-PRES-806064
The complexity of the exascale ecosystem threatens productivity. 5+ target architectures/platforms x x 15+ applications 80+ software packages Xeon Power KNL NVIDIA ARM Laptops? Up to 7 compilers 10+ Programming Models 2-3 versions of each package x x x Intel GCC Clang XL OpenMPI MPICH MVAPICH OpenMP CUDA + external dependencies PGI Cray NAG OpenACC Dharma Legion RAJA Kokkos = up to 1,260,000 combinations! § Every application has its own stack of dependencies. § Developers, users, and facilities dedicate (many) FTEs to building & porting. § Often trade reuse and usability for performance. We must make it easier to rely on others’ software! Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 7 LLNL-PRES-806064
What about containers? § Containers provide a great way to reproduce and distribute an already-built software stack § Someone needs to build the container! — This isn’t trivial — Containerized applications still have hundreds of dependencies § Using the OS package manager inside a container is insufficient — Most binaries are built unoptimized — Generic binaries, not optimized for specific architectures § HPC containers may need to be rebuilt to support many different hosts, anyway. — Not clear that we can ever build one container for all facilities — Containers likely won’t solve the N-platforms problem in HPC We need something more flexible to build the containers Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 8 LLNL-PRES-806064
Spack is a flexible package manager for HPC § How to install Spack: $ git clone https://github.com/spack/spack $ . spack/share/spack/setup-env.sh § How to install a package: $ spack install hdf5 § HDF5 and its dependencies are installed within the Spack directory. github.com/spack/spack § Unlike typical package managers, Spack can also install many variants of the same build. — Different compilers — Different MPI implementations @spackpm — Different build options Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 9 LLNL-PRES-806064
Who can use Spack? People who want to use or distribute software for HPC! End Users of HPC Software 1. — Install and run HPC applications and tools HPC Application Teams 2. — Manage third-party dependency libraries Package Developers 3. — People who want to package their own software for distribution User support teams at HPC Centers 4. People who deploy software for users at large HPC sites — Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 10 LLNL-PRES-806064
Spack is used worldwide! Over 4,300 software packages Over 2,900 monthly active users (on docs site) Over 600 contributors from labs, academia, industry Plot shows sessions on spack.readthedocs.io for one month Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 11 LLNL-PRES-806064
Users on our documentation site have also been increasing Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 12 LLNL-PRES-806064
Spack is being used on many of the top HPC systems § Official deployment tool for the U.S. Exascale Computing Project § >= 5 of the top 10 supercomputers § High Energy Physics community Fermilab, CERN, collaborators — § Astra (Sandia) #1 Fugaku OSS software stack is deployed with Spack § Fugaku (Japanese National Supercomputer Project) Summit (ORNL), Sierra (LLNL) Edison, Cori, Perlmutter (NERSC) SuperMUC-NG (LRZ, Germany) Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 13 LLNL-PRES-806064
One month of Spack development is pretty busy! 14 Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 14 LLNL-PRES-806064
Contributions to Spack continue to grow! § In November 2015, LLNL provided most of the contributions to Spack § Since then, we’ve gone from 300 to over 4,000 packages § Most packages are from external contributors! § Many contributions in core, as well. § We are committed to sustaining Spack’s open source ecosystem! Q&A on Slack: spackpm.herokuapp.com Tutorial materials: spack-tutorial.readthedocs.io 15 LLNL-PRES-806064
Recommend
More recommend