spack
play

Spack Supercomputing 2020 Full-day Tutorial November 9-10, 2020 - PowerPoint PPT Presentation

Managing HPC Software Complexity with Spack Supercomputing 2020 Full-day Tutorial November 9-10, 2020 The most recent version of these slides can be found at: Virtual Event https://spack-tutorial.readthedocs.io LLNL-PRES-806064 spack.io


  1. Managing HPC Software Complexity with Spack Supercomputing 2020 Full-day Tutorial November 9-10, 2020 The most recent version of these slides can be found at: Virtual Event https://spack-tutorial.readthedocs.io LLNL-PRES-806064 spack.io 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

  2. Tutorial Materials Find these slides and associated scripts here: spack-tutorial.readthedocs.io We will also have a chat room on Spack slack. Get an invite here: spackpm.herokuapp.com Join the “tutorial” channel! We can engage with in-depth questions more directly on Slack! Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 2 LLNL-PRES-806064

  3. Tutorial Presenters Massimiliano Adam Stewart Todd Gamblin, Greg Becker, Peter Scheibel, Tammy Dahlgren Culpo UIUC LLNL NP Complete, S.r.l. Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 3 LLNL-PRES-806064

  4. Modern scientific codes rely on icebergs of dependency libraries 71 packages 188 dependency links MFEM : LBANN: Neural Nets for HPC mfem Higher-order finite elements lbann sundials petsc cudnn cereal py-pandas 31 packages, hypre superlu-dist hydrogen conduit py-matplotlib py-numexpr py-bottleneck py-onnx hdf5 openblas parmetis 69 dependency links aluminum cub opencv freetype py-python-dateutil py-numpy openmpi metis nccl mpich libtiff ninja libpng py-pillow py-configparser py-graphviz py-kiwisolver py-pyparsing py-texttable py-setuptools-scm py-pytz py-cycler openblas py-cython py-protobuf py-typing py-typing-extensions cmake python cuda findutils cnpy libjpeg-turbo py-setuptools py-six protobuf hwloc openssl expat gettext libffi hwloc libtool automake texinfo nasm cmake python sqlite perl libxml2 bzip2 autoconf openssl sqlite gettext expat libffi zlib gdbm xz tar diffutils m4 libxml2 perl hdf5 bzip2 readline libiconv libsigsegv zlib xz gdbm tar diffutils readline libiconv ncurses r-condop ncurses pkgconf r-rminer pkgconf r-adabag r-randomforest r-caret r-kernlab r-mclust r-recipes r-pls r-tidyr r-generics r-gower r-timedate r-party r-dplyr r-ggplot2 r-ipred r-cubist r-coin r-tibble r-reshape2 r-prodlim r-withr r-nnet r-rpart r-strucchange r-modeltools r-multcomp r-libcoin r-mda r-e1071 r-seqinr r-genomicranges r-xgboost r-tidyselect r-pillar r-lubridate r-lava r-modelmetrics r-plyr r-scales r-sandwich r-th-data r-mvtnorm r-class r-kknn r-ade4 r-genomeinfodb r-xvector r-purrr r-stringr r-utf8 r-vctrs r-cli r-data-table r-rcpp r-r6 r-viridislite r-mgcv r-doparallel r-zoo r-glmnet r-survival r-mass r-igraph r-earth r-genomeinfodbdata r-iranges r-zlibbioc r-stringi r-magrittr r-ellipsis r-zeallot r-backports r-glue r-crayon r-fansi r-assertthat r-pkgconfig r-digest r-numderiv r-munsell r-nlme r-foreach r-matrix glpk r-plotmo r-rcurl r-s4vectors r-rlang r-plogr r-bh r-squarem r-kernsmooth r-rcolorbrewer r-labeling r-colorspace r-lazyeval r-gtable r-iterators r-lattice r-codetools r-matrixstats r-plotrix r-formula r-teachingdemos r-segmented r-bitops r-biocgenerics r pcre2 openjdk pango curl gobject-introspection harfbuzz libidn2 tcl icu4c sed cairo r-condop : glib libunistring flex fontconfig R Genome Data Analysis Tools meson pcre gmake findutils gmp gperf libuuid libtiff font-util ninja py-setuptools texinfo bison automake libtool libjpeg-turbo mkfontdir bdftopcf 179 packages, python help2man autoconf cmake nasm mkfontscale libxfont libffi expat gettext openssl m4 freetype pixman libfontenc fontsproto 527 dependency links bzip2 perl sqlite libsigsegv libpng libxml2 xproto xtrans gdbm tar berkeley-db diffutils zlib xz util-macros readline libiconv Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 4 ncurses LLNL-PRES-806064 pkgconf

  5. 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. Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 5 LLNL-PRES-806064

  6. 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! Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 6 LLNL-PRES-806064

  7. 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 Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 7 LLNL-PRES-806064

  8. 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 Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 8 LLNL-PRES-806064

  9. 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 — Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 9 LLNL-PRES-806064

  10. Spack is used worldwide! Recently surpassed 5,000 software packages Recently surpassed 680 contributors Over 3,200 users of Spack docs in Oct 2020 https://spack.readthedocs.io Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 10 LLNL-PRES-806064

  11. Spack has been gaining adoption rapidly (if stars are an indicator) Star Spack at github.com/spack/spack if you like the tutorial! Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 11 LLNL-PRES-806064

  12. Users on our documentation site have continued to increase Broke 3,000 monthly active users for the first time. Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 12 LLNL-PRES-806064

  13. Spack is used on the fastest supercomputers in the world Includes the current top 3: 1. Fugaku at RIKEN (Fujitsu ARM a64fx) 2. Summit at ORNL (Power9/Volta) 3. Sierra at LLNL (Power9/Volta) Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 13 LLNL-PRES-806064

  14. Spack is the deployment tool for the U.S. Exascale Computing Project § Spack will be used to build software for the US’s three upcoming exascale systems § ECP has built the Extreme Scale Scientific Software Stack (E4S) with Spack – more at https://e4s.io § We are helping ECP fulfill its mission – to create a robust and https://e4s.io capable exascale software ecosystem Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 14 LLNL-PRES-806064

  15. One month of Spack development is pretty busy! Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 15 LLNL-PRES-806064

  16. 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 5,000 packages § Most packages are from external contributors! § Many contributions in core, as well. § We are committed to sustaining Spack’s open source ecosystem! Join #tutorial on Slack: spackpm.herokuapp.com Materials: spack-tutorial.readthedocs.io 16 LLNL-PRES-806064

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend