SlideShare a Scribd company logo
1 of 26
Download to read offline
, 1 , 0 1
21 20
18 1
1
1
1896 1920 1987 2006
Requests from our HPC users
• “Give me root password to install XXX.”
• “Why can’t I run apt-get install on CentOS?”
• “Why are there so many export PATH in ~/.bashrc?”
• ”Pleas install pkg1...pkgN for me so I can install XXX.”
• “I need the latest version of XXX.”
Why SJTU Pi Supercomputer chooses Spack?
• Installation in $HOME requires NO root privilege.
• Distro invariant. Same syntax works for CentOS/Ubuntu/SUSE...
• Modules are loaded only when needed. NO more export in
~/.bashrc.
• Dependency packages are built automatically.
• An active community to update packages to the latest version ASAP.
Spack is easy to setup and depends on GCC and glibc only!
What does Spack do on SJTU Pi Supercomputer?
• Install a minimal set of HPC system software (compilers, binary
libraries...) for global use.
• Build per-user or per-group software when requested.
• Maintain software environments for various hardware
platforms (SandyBridge, Haswell, SGI, PowerPC...).
Software repos on SJTU Pi Supercomputer
- 3: 4 3- 5 /lustre/usr/modulefiles/
5 5 :/ 5 - :-5 5 /:: 1: - 5 :/ 5
- 3 - :-5 5 /:: 1: - 5 - 3
- :-5 5 /:: 1: - 5
2 /:: 1: - 5 2 3 :/-
2 .- 5 3- :/-4 33
Pre-built Modules on Pi
https://pi.sjtu.edu.cn/doc/modules
• A8 9 1 A A 8 A 9 D 8
– 8 CA 8 2 C7
– G
– ..4 1 , 3 C 00 8 7 8
$ unset MODULEPATH
$ module use /lustre/usr/modulefiles
$ module list
Miniconda/Python Extensions
https://pi.sjtu.edu.cn/doc/python
• , . . . .
. . ,
$ unset MODULEPATH
$ module use /lustre/usr/modulefiles
$ module load miniconda3/4.3
$ conda create --name mypython3 pip
$ source activate mypython3
$ conda install PKG_NAME
$ pip install PKG_NAME
Perl Extensions
https://pi.sjtu.edu.cn/doc/perl
• . . . .
$ spack install perl %gcc@5.4.0
$ source <( spack module loads --dependencies perl )
$ which perl
$ cpan
>> install XML::LibXML
R Extensions
https://pi.sjtu.edu.cn/doc/r
• . .
$ spack install r+external-lapack %gcc@5.4.0
^openblas threads=openmp
$ source <( spack module loads –dependencies r )
$ which R
$ R
> source("https://bioconductor.org/biocLite.R")
> biocLite
LLNL-PRES-806064
5http://github.com/LLNL/spack
§ Not	much	standardization	in	HPC:	every	machine/app	has	a	different	software	stack
— This	is	done	to	get	the	best	performance
§ HPC	frequently	trades	reuse	and	usability	for	performance
— Reusing	a	piece	of	software	frequently	requires	you	to	port	it	to	many	new	platforms
§ Example	environment	for	some	LLNL	codes:
HPC	Software	Complexity	Prevents	Reuse	&	Reduces	Productivity
48 third party packages 3 MPI versions
mvapich mvapich2 OpenMPI
x 3-ish Platforms
Linux BlueGene Cray
x
Up to 7 compilers
Intel GCC XLC Clang
PGI Cray Pathscale
x Oh, and 2-3 versions of
each package
x = ~7,500 combinations
Spack lowers barriers to software reuse by automating these builds!
LLNL-PRES-806064
8http://github.com/LLNL/spack
1. Automate	the	process	of	building	large	software	packages
2. Automate	testing	with	different	compilers	and	options
3. Leverage	the	work	of	others	with	shared	build	recipes
1. Don’t	repeat	the	same	builds!
4. Distribute	your	software	to	a	growing	audience	of	HPC	users
Why	use	a	new	tool?
LLNL-PRES-806064
22http://github.com/LLNL/spack
§ Each	expression	is	a	spec	for	a	particular	configuration
— Each	clause	adds	a	constraint	to	the	spec
— Constraints	are	optional	– specify	only	what	you	need.
— Customize	install	on	the	command	line!
§ Spec	syntax	is	recursive
— Full	control	over	the	combinatorial	build	space
Spack provides	a	spec	syntax	to	describe	customized	DAG	
configurations
$ spack install mpileaks unconstrained
$ spack install mpileaks@3.3 @ custom version
$ spack install mpileaks@3.3 %gcc@4.7.3 % custom compiler
$ spack install mpileaks@3.3 %gcc@4.7.3 +threads +/- build option
$ spack install mpileaks@3.3 cppflags=”-O3” setting compiler flags
$ spack install mpileaks@3.3 os=CNL10 target=haswell setting target for X-compile
$ spack install mpileaks@3.3 ^mpich@3.2 %gcc@4.9.3 ^ dependency information
LLNL-PRES-806064
23http://github.com/LLNL/spack
`spack list`	shows	what	packages	are	available
$ spack list
==> 303 packages.
activeharmony cgal fish gtkplus libgd mesa openmpi py-coverage py-pycparser qt tcl
adept-utils cgm flex harfbuzz libgpg-error metis openspeedshop py-cython py-pyelftools qthreads texinfo
apex cityhash fltk hdf libjpeg-turbo Mitos openssl py-dateutil py-pygments R the_silver_searcher
arpack cleverleaf flux hdf5 libjson-c mpc otf py-epydoc py-pylint ravel thrift
asciidoc cloog fontconfig hwloc libmng mpe2 otf2 py-funcsigs py-pypar readline tk
atk cmake freetype hypre libmonitor mpfr pango py-genders py-pyparsing rose tmux
atlas cmocka gasnet icu libNBC mpibash papi py-gnuplot py-pyqt rsync tmuxinator
atop coreutils gcc icu4c libpciaccess mpich paraver py-h5py py-pyside ruby trilinos
autoconf cppcheck gdb ImageMagick libpng mpileaks paraview py-ipython py-pytables SAMRAI uncrustify
automaded cram gdk-pixbuf isl libsodium mrnet parmetis py-libxml2 py-python-daemon samtools util-linux
automake cscope geos jdk libtiff mumps parpack py-lockfile py-pytz scalasca valgrind
bear cube gflags jemalloc libtool munge patchelf py-mako py-rpy2 scorep vim
bib2xhtml curl ghostscript jpeg libunwind muster pcre py-matplotlib py-scientificpython scotch vtk
binutils czmq git judy libuuid mvapich2 pcre2 py-mock py-scikit-learn scr wget
bison damselfly glib julia libxcb nasm pdt py-mpi4py py-scipy silo wx
boost dbus glm launchmon libxml2 ncdu petsc py-mx py-setuptools snappy wxpropgrid
bowtie2 docbook-xml global lcms libxshmfence ncurses pidx py-mysqldb1 py-shiboken sparsehash xcb-proto
boxlib doxygen glog leveldb libxslt netcdf pixman py-nose py-sip spindle xerces-c
bzip2 dri2proto glpk libarchive llvm netgauge pkg-config py-numexpr py-six spot xz
cairo dtcmp gmp libcerf llvm-lld netlib-blas pmgr_collective py-numpy py-sphinx sqlite yasm
callpath dyninst gmsh libcircle lmdb netlib-lapack postgresql py-pandas py-sympy stat zeromq
cblas eigen gnuplot libdrm lmod netlib-scalapack ppl py-pbr py-tappy sundials zlib
cbtf elfutils gnutls libdwarf lua nettle protobuf py-periodictable py-twisted swig zsh
cbtf-argonavis elpa gperf libedit lwgrp ninja py-astropy py-pexpect py-urwid szip
cbtf-krell expat gperftools libelf lwm2 ompss py-basemap py-pil py-virtualenv tar
cbtf-lanl extrae graphlib libevent matio ompt-openmp py-biopython py-pillow py-yapf task
cereal exuberant-ctags graphviz libffi mbedtls opari2 py-blessings py-pmw python taskd
cfitsio fftw gsl libgcrypt memaxes openblas py-cffi py-pychecker qhull tau
§ Spack has	over	1000	packages	now.
2500
LLNL-PRES-806064
24http://github.com/LLNL/spack
§ All	the	versions	coexist!
— Multiple	versions	of	
same	package	are	ok.
§ Packages	are	installed	to	
automatically	find	correct	
dependencies.
§ Binaries	work	regardless	
of	user’s	environment.
§ Spack also	generates	
module	files.
— Don’t	have to	use	them.
`spack find`	shows	what	is	installed
$ spack find
==> 103 installed packages.
-- linux-redhat6-x86_64 / gcc@4.4.7 --------------------------------
ImageMagick@6.8.9-10 glib@2.42.1 libtiff@4.0.3 pango@1.36.8 qt@4.8.6
SAMRAI@3.9.1 graphlib@2.0.0 libtool@2.4.2 parmetis@4.0.3 qt@5.4.0
adept-utils@1.0 gtkplus@2.24.25 libxcb@1.11 pixman@0.32.6 ravel@1.0.0
atk@2.14.0 harfbuzz@0.9.37 libxml2@2.9.2 py-dateutil@2.4.0 readline@6.3
boost@1.55.0 hdf5@1.8.13 llvm@3.0 py-ipython@2.3.1 scotch@6.0.3
cairo@1.14.0 icu@54.1 metis@5.1.0 py-nose@1.3.4 starpu@1.1.4
callpath@1.0.2 jpeg@9a mpich@3.0.4 py-numpy@1.9.1 stat@2.1.0
dyninst@8.1.2 libdwarf@20130729 ncurses@5.9 py-pytz@2014.10 xz@5.2.0
dyninst@8.1.2 libelf@0.8.13 ocr@2015-02-16 py-setuptools@11.3.1 zlib@1.2.8
fontconfig@2.11.1 libffi@3.1 openssl@1.0.1h py-six@1.9.0
freetype@2.5.3 libmng@2.0.2 otf@1.12.5salmon python@2.7.8
gdk-pixbuf@2.31.2 libpng@1.6.16 otf2@1.4 qhull@1.0
-- linux-redhat6-x86_64 / gcc@4.8.2 --------------------------------
adept-utils@1.0.1 boost@1.55.0 cmake@5.6-special libdwarf@20130729 mpich@3.0.4
adept-utils@1.0.1 cmake@5.6 dyninst@8.1.2 libelf@0.8.13 openmpi@1.8.2
-- linux-redhat6-x86_64 / intel@14.0.2 -----------------------------
hwloc@1.9 mpich@3.0.4 starpu@1.1.4
-- linux-redhat6-x86_64 / intel@15.0.0 -----------------------------
adept-utils@1.0.1 boost@1.55.0 libdwarf@20130729 libelf@0.8.13 mpich@3.0.4
-- linux-redhat6-x86_64 / intel@15.0.1 -----------------------------
adept-utils@1.0.1 callpath@1.0.2 libdwarf@20130729 mpich@3.0.4
boost@1.55.0 hwloc@1.9 libelf@0.8.13 starpu@1.1.4
LLNL-PRES-806064
34http://github.com/LLNL/spack
§ Each	unique	dependency	graph	is	a	unique	
configuration.
§ Each	configuration	installed	in	a	unique	directory.
— Configurations	of	the	same	package	can	coexist.
§ Hash of	entire	directed	acyclic	graph	(DAG)	is	
appended	to	each	prefix.	
§ Installed	packages	automatically	find	dependencies
— Spack embeds	RPATHs	in	binaries.
— No	need	to	use	modules	or	set	LD_LIBRARY_PATH
— Things	work	the	way	you	built	them
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/
...
mpileaks
mpi
callpath
dyninst
libdwarf
libelf
Installation	Layout
Dependency	DAG
Hash
LLNL-PRES-806064
53http://github.com/LLNL/spack
§ Purpose	of	module	files
— modify	dynamically	user’s	env
— manage	multiple	versions	of	
same	library	/	application
— minimal	user	interface
§ State	of	the	art
— different	file	formats
— different	layouts
— different	tools
§ Spack	support	for	module	files
— TCL	/	Non-hierarchical	layout
— Lua	/	Hierarchical	layout
TCL
Non-hierarchical
Lua
Hierarchical
Generator	name tcl lmod
Default	folder share/spack/modules share/spack/lmod
Compatible	tools
Env.	modules
LMod
LMod
What	are	module	files?
SJTU HPCC forks Spack
https://github.com/sjtuhpcc/spack
• ) 0 30 ?: 0 3 : 3?- . : . : . / //
: 0 0/ 0 : 3 . : 0 )
?:0 . :? 0
• ) . ?: 0 .0 :0 00
• )?- :? 0 ?0 ?: 0 0 3 ( 3 0
-00 0 0/
Extra settings in your SLURM job scripts
if [ -d "$HOME/spack" ]; then
export SPACK_ROOT=$HOME/spack
source $SPACK_ROOT/share/spack/setup-
env.sh
fi
source <( spack module loads xxx )
DEMO 1: Install Spack
https://pi.sjtu.edu.cn/doc/spack
$ cd
$ git clone https://github.com/sjtuhpcc/spack.git
$ cd spack && git pull origin develop
$ ./bootstrap.sh user --install
Add settings to ~/.bashrc
if [ -d ”$HOME/spack” ]; then
export SPACK_ROOT=$HOME/spack
source $SPACK_ROOT/share/spack/setup-env.sh
fi
Apply settings.
$ source ~/.bashrc
DEMO 2: Install GCC 5.4.0
(Optional, takes 20mins)
$ spack install gcc@5.4.0 %gcc@4.8.5
$ spack compiler find PATH_TO_GCC_540
$ spack compilers
DEMO 3: Installing samtools
$ spack spec samtools %gcc@5.4.0
$ spack install samtools %gcc@5.4.0
$ spack module loads samtools
$ source <( spack module loads samtools )
$ which samtools
DEMO 4: Installing openfoam-org against OpenMPI on SLURM
(Optional, takes 1hours)
$ spack install openfoam-org@5.0 
%gcc@5.4.0 
^openmpi+pmi schedulers=slurm 
^flex@2.6.4
$ source PATH_TO_OPENFOAM/etc/bashrc
DEMO 5: Installing openfoam-com and Paraview with a QT GUI
(Optional, takes 1 hour)
$ spack install openfoam-com+metis+paraview 
%gcc@5.4.0 
^openmpi+pmi schedulers=slurm 
^paraview+qt 
^flex@2.6.4
$ source PATH_TO_OPENFOAM/etc/bashrc
DEMO 6: Installing GPU-accelerated Gromacs 2018
$ spack install gromacs+mpi+cuda@2018.1
%gcc@5.4.0 
^openmpi+pmi schedulers=slurm
$ source <( spack module loads gromacs+mpi+cuda@2018.1 )
Demo 7: Install TensorFlow in Anaconda
https://pi.sjtu.edu.cn/doc/tensorflow
$ unset MODULEPATH
$ module use /lustre/usr/modulefiles
$ module load miniconda3/4.3
$ conda create --name tf-py3-cpu pip
$ source activate tf-py3-cpu
$ pip install tensorflow
$ python
> import tensorflow as tf;
> print(tf.__verersion__)
Summary
• Spack requires NO root privilege and is easy to setup.
• Site-wide compilers and per-user software repos are mostly
managed by Spack, beneficial for both administrators and users.
• We acknowledge Spack community for such a wonderful tool and
tutorial slides.
https://spack.io

More Related Content

What's hot

Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )Tim Bunce
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamRachid Zarouali
 
Tajo Seoul Meetup-201501
Tajo Seoul Meetup-201501Tajo Seoul Meetup-201501
Tajo Seoul Meetup-201501Jinho Kim
 
Configuration Surgery with Augeas
Configuration Surgery with AugeasConfiguration Surgery with Augeas
Configuration Surgery with AugeasPuppet
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4moai kids
 
Using Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsUsing Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsSander van der Burg
 
Perl Memory Use - LPW2013
Perl Memory Use - LPW2013Perl Memory Use - LPW2013
Perl Memory Use - LPW2013Tim Bunce
 
GIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control SystemGIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control SystemTommaso Visconti
 
Shared Object images in Docker: What you need is what you want.
Shared Object images in Docker: What you need is what you want.Shared Object images in Docker: What you need is what you want.
Shared Object images in Docker: What you need is what you want.Workhorse Computing
 
Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011Tim Bunce
 
Application Logging in the 21st century - 2014.key
Application Logging in the 21st century - 2014.keyApplication Logging in the 21st century - 2014.key
Application Logging in the 21st century - 2014.keyTim Bunce
 
Fabric workshop(1) - (MOSG)
Fabric workshop(1) - (MOSG)Fabric workshop(1) - (MOSG)
Fabric workshop(1) - (MOSG)Soshi Nemoto
 
Perl at SkyCon'12
Perl at SkyCon'12Perl at SkyCon'12
Perl at SkyCon'12Tim Bunce
 
Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406Tim Bunce
 
Making environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeMaking environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeSoshi Nemoto
 
PEARC17: Modernizing GooFit: A Case Study
PEARC17: Modernizing GooFit: A Case StudyPEARC17: Modernizing GooFit: A Case Study
PEARC17: Modernizing GooFit: A Case StudyHenry Schreiner
 
Programming in Linux Environment
Programming in Linux EnvironmentProgramming in Linux Environment
Programming in Linux EnvironmentDongho Kang
 

What's hot (20)

Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops Team
 
Tajo Seoul Meetup-201501
Tajo Seoul Meetup-201501Tajo Seoul Meetup-201501
Tajo Seoul Meetup-201501
 
Configuration Surgery with Augeas
Configuration Surgery with AugeasConfiguration Surgery with Augeas
Configuration Surgery with Augeas
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4
 
Using Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsUsing Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutions
 
Perl Memory Use - LPW2013
Perl Memory Use - LPW2013Perl Memory Use - LPW2013
Perl Memory Use - LPW2013
 
Docker perl build
Docker perl buildDocker perl build
Docker perl build
 
GIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control SystemGIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control System
 
Shared Object images in Docker: What you need is what you want.
Shared Object images in Docker: What you need is what you want.Shared Object images in Docker: What you need is what you want.
Shared Object images in Docker: What you need is what you want.
 
Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011
 
Application Logging in the 21st century - 2014.key
Application Logging in the 21st century - 2014.keyApplication Logging in the 21st century - 2014.key
Application Logging in the 21st century - 2014.key
 
Fabric workshop(1) - (MOSG)
Fabric workshop(1) - (MOSG)Fabric workshop(1) - (MOSG)
Fabric workshop(1) - (MOSG)
 
Docker practice
Docker practiceDocker practice
Docker practice
 
Perl at SkyCon'12
Perl at SkyCon'12Perl at SkyCon'12
Perl at SkyCon'12
 
UNIX Basics and Cluster Computing
UNIX Basics and Cluster ComputingUNIX Basics and Cluster Computing
UNIX Basics and Cluster Computing
 
Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406
 
Making environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeMaking environment for_infrastructure_as_code
Making environment for_infrastructure_as_code
 
PEARC17: Modernizing GooFit: A Case Study
PEARC17: Modernizing GooFit: A Case StudyPEARC17: Modernizing GooFit: A Case Study
PEARC17: Modernizing GooFit: A Case Study
 
Programming in Linux Environment
Programming in Linux EnvironmentProgramming in Linux Environment
Programming in Linux Environment
 

Similar to Package Management via Spack on SJTU π Supercomputer

Spack - A Package Manager for HPC
Spack - A Package Manager for HPCSpack - A Package Manager for HPC
Spack - A Package Manager for HPCinside-BigData.com
 
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
 
OSS AWS 핸즈온 강의
OSS AWS 핸즈온 강의OSS AWS 핸즈온 강의
OSS AWS 핸즈온 강의Juhong Jung
 
Open erp on ubuntu
Open erp on ubuntuOpen erp on ubuntu
Open erp on ubuntuIker Coranti
 
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017Codemotion
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionFabio Kung
 
Rasperry Pi and TI CC2650 IPv6 border router
Rasperry Pi and TI CC2650 IPv6 border routerRasperry Pi and TI CC2650 IPv6 border router
Rasperry Pi and TI CC2650 IPv6 border routerNikolaos Monios
 
Binary Packaging for HPC with Spack
Binary Packaging for HPC with SpackBinary Packaging for HPC with Spack
Binary Packaging for HPC with Spackinside-BigData.com
 
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google CloudDrupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google CloudDropsolid
 
Django district pip, virtualenv, virtualenv wrapper & more
Django district  pip, virtualenv, virtualenv wrapper & moreDjango district  pip, virtualenv, virtualenv wrapper & more
Django district pip, virtualenv, virtualenv wrapper & moreJacqueline Kazil
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker, Inc.
 
Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Henry Schreiner
 
Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Henry Schreiner
 
Let's break apache spark workshop
Let's break apache spark workshopLet's break apache spark workshop
Let's break apache spark workshopGrzegorz Gawron
 
Docker and friends at Linux Days 2014 in Prague
Docker and friends at Linux Days 2014 in PragueDocker and friends at Linux Days 2014 in Prague
Docker and friends at Linux Days 2014 in Praguetomasbart
 
Sparkly Notebook: Interactive Analysis and Visualization with Spark
Sparkly Notebook: Interactive Analysis and Visualization with SparkSparkly Notebook: Interactive Analysis and Visualization with Spark
Sparkly Notebook: Interactive Analysis and Visualization with Sparkfelixcss
 
SPACK: A Package Manager for Supercomputers, Linux, and MacOS
SPACK: A Package Manager for Supercomputers, Linux, and MacOSSPACK: A Package Manager for Supercomputers, Linux, and MacOS
SPACK: A Package Manager for Supercomputers, Linux, and MacOSinside-BigData.com
 

Similar to Package Management via Spack on SJTU π Supercomputer (20)

Spack - A Package Manager for HPC
Spack - A Package Manager for HPCSpack - A Package Manager for HPC
Spack - A Package Manager for HPC
 
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
 
spack_hpc.pptx
spack_hpc.pptxspack_hpc.pptx
spack_hpc.pptx
 
OSS AWS 핸즈온 강의
OSS AWS 핸즈온 강의OSS AWS 핸즈온 강의
OSS AWS 핸즈온 강의
 
Open erp on ubuntu
Open erp on ubuntuOpen erp on ubuntu
Open erp on ubuntu
 
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
 
PHP selber bauen
PHP selber bauenPHP selber bauen
PHP selber bauen
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
 
Rasperry Pi and TI CC2650 IPv6 border router
Rasperry Pi and TI CC2650 IPv6 border routerRasperry Pi and TI CC2650 IPv6 border router
Rasperry Pi and TI CC2650 IPv6 border router
 
Binary Packaging for HPC with Spack
Binary Packaging for HPC with SpackBinary Packaging for HPC with Spack
Binary Packaging for HPC with Spack
 
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google CloudDrupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
 
Django district pip, virtualenv, virtualenv wrapper & more
Django district  pip, virtualenv, virtualenv wrapper & moreDjango district  pip, virtualenv, virtualenv wrapper & more
Django district pip, virtualenv, virtualenv wrapper & more
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops Team
 
Python arch wiki
Python   arch wikiPython   arch wiki
Python arch wiki
 
Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023
 
Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024
 
Let's break apache spark workshop
Let's break apache spark workshopLet's break apache spark workshop
Let's break apache spark workshop
 
Docker and friends at Linux Days 2014 in Prague
Docker and friends at Linux Days 2014 in PragueDocker and friends at Linux Days 2014 in Prague
Docker and friends at Linux Days 2014 in Prague
 
Sparkly Notebook: Interactive Analysis and Visualization with Spark
Sparkly Notebook: Interactive Analysis and Visualization with SparkSparkly Notebook: Interactive Analysis and Visualization with Spark
Sparkly Notebook: Interactive Analysis and Visualization with Spark
 
SPACK: A Package Manager for Supercomputers, Linux, and MacOS
SPACK: A Package Manager for Supercomputers, Linux, and MacOSSPACK: A Package Manager for Supercomputers, Linux, and MacOS
SPACK: A Package Manager for Supercomputers, Linux, and MacOS
 

Recently uploaded

Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Christo Ananth
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...ranjana rawat
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).pptssuser5c9d4b1
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 

Recently uploaded (20)

Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 

Package Management via Spack on SJTU π Supercomputer

  • 1. , 1 , 0 1 21 20 18 1 1 1 1896 1920 1987 2006
  • 2. Requests from our HPC users • “Give me root password to install XXX.” • “Why can’t I run apt-get install on CentOS?” • “Why are there so many export PATH in ~/.bashrc?” • ”Pleas install pkg1...pkgN for me so I can install XXX.” • “I need the latest version of XXX.”
  • 3. Why SJTU Pi Supercomputer chooses Spack? • Installation in $HOME requires NO root privilege. • Distro invariant. Same syntax works for CentOS/Ubuntu/SUSE... • Modules are loaded only when needed. NO more export in ~/.bashrc. • Dependency packages are built automatically. • An active community to update packages to the latest version ASAP. Spack is easy to setup and depends on GCC and glibc only!
  • 4. What does Spack do on SJTU Pi Supercomputer? • Install a minimal set of HPC system software (compilers, binary libraries...) for global use. • Build per-user or per-group software when requested. • Maintain software environments for various hardware platforms (SandyBridge, Haswell, SGI, PowerPC...).
  • 5. Software repos on SJTU Pi Supercomputer - 3: 4 3- 5 /lustre/usr/modulefiles/ 5 5 :/ 5 - :-5 5 /:: 1: - 5 :/ 5 - 3 - :-5 5 /:: 1: - 5 - 3 - :-5 5 /:: 1: - 5 2 /:: 1: - 5 2 3 :/- 2 .- 5 3- :/-4 33
  • 6. Pre-built Modules on Pi https://pi.sjtu.edu.cn/doc/modules • A8 9 1 A A 8 A 9 D 8 – 8 CA 8 2 C7 – G – ..4 1 , 3 C 00 8 7 8 $ unset MODULEPATH $ module use /lustre/usr/modulefiles $ module list
  • 7. Miniconda/Python Extensions https://pi.sjtu.edu.cn/doc/python • , . . . . . . , $ unset MODULEPATH $ module use /lustre/usr/modulefiles $ module load miniconda3/4.3 $ conda create --name mypython3 pip $ source activate mypython3 $ conda install PKG_NAME $ pip install PKG_NAME
  • 8. Perl Extensions https://pi.sjtu.edu.cn/doc/perl • . . . . $ spack install perl %gcc@5.4.0 $ source <( spack module loads --dependencies perl ) $ which perl $ cpan >> install XML::LibXML
  • 9. R Extensions https://pi.sjtu.edu.cn/doc/r • . . $ spack install r+external-lapack %gcc@5.4.0 ^openblas threads=openmp $ source <( spack module loads –dependencies r ) $ which R $ R > source("https://bioconductor.org/biocLite.R") > biocLite
  • 10. LLNL-PRES-806064 5http://github.com/LLNL/spack § Not much standardization in HPC: every machine/app has a different software stack — This is done to get the best performance § HPC frequently trades reuse and usability for performance — Reusing a piece of software frequently requires you to port it to many new platforms § Example environment for some LLNL codes: HPC Software Complexity Prevents Reuse & Reduces Productivity 48 third party packages 3 MPI versions mvapich mvapich2 OpenMPI x 3-ish Platforms Linux BlueGene Cray x Up to 7 compilers Intel GCC XLC Clang PGI Cray Pathscale x Oh, and 2-3 versions of each package x = ~7,500 combinations Spack lowers barriers to software reuse by automating these builds!
  • 11. LLNL-PRES-806064 8http://github.com/LLNL/spack 1. Automate the process of building large software packages 2. Automate testing with different compilers and options 3. Leverage the work of others with shared build recipes 1. Don’t repeat the same builds! 4. Distribute your software to a growing audience of HPC users Why use a new tool?
  • 12. LLNL-PRES-806064 22http://github.com/LLNL/spack § Each expression is a spec for a particular configuration — Each clause adds a constraint to the spec — Constraints are optional – specify only what you need. — Customize install on the command line! § Spec syntax is recursive — Full control over the combinatorial build space Spack provides a spec syntax to describe customized DAG configurations $ spack install mpileaks unconstrained $ spack install mpileaks@3.3 @ custom version $ spack install mpileaks@3.3 %gcc@4.7.3 % custom compiler $ spack install mpileaks@3.3 %gcc@4.7.3 +threads +/- build option $ spack install mpileaks@3.3 cppflags=”-O3” setting compiler flags $ spack install mpileaks@3.3 os=CNL10 target=haswell setting target for X-compile $ spack install mpileaks@3.3 ^mpich@3.2 %gcc@4.9.3 ^ dependency information
  • 13. LLNL-PRES-806064 23http://github.com/LLNL/spack `spack list` shows what packages are available $ spack list ==> 303 packages. activeharmony cgal fish gtkplus libgd mesa openmpi py-coverage py-pycparser qt tcl adept-utils cgm flex harfbuzz libgpg-error metis openspeedshop py-cython py-pyelftools qthreads texinfo apex cityhash fltk hdf libjpeg-turbo Mitos openssl py-dateutil py-pygments R the_silver_searcher arpack cleverleaf flux hdf5 libjson-c mpc otf py-epydoc py-pylint ravel thrift asciidoc cloog fontconfig hwloc libmng mpe2 otf2 py-funcsigs py-pypar readline tk atk cmake freetype hypre libmonitor mpfr pango py-genders py-pyparsing rose tmux atlas cmocka gasnet icu libNBC mpibash papi py-gnuplot py-pyqt rsync tmuxinator atop coreutils gcc icu4c libpciaccess mpich paraver py-h5py py-pyside ruby trilinos autoconf cppcheck gdb ImageMagick libpng mpileaks paraview py-ipython py-pytables SAMRAI uncrustify automaded cram gdk-pixbuf isl libsodium mrnet parmetis py-libxml2 py-python-daemon samtools util-linux automake cscope geos jdk libtiff mumps parpack py-lockfile py-pytz scalasca valgrind bear cube gflags jemalloc libtool munge patchelf py-mako py-rpy2 scorep vim bib2xhtml curl ghostscript jpeg libunwind muster pcre py-matplotlib py-scientificpython scotch vtk binutils czmq git judy libuuid mvapich2 pcre2 py-mock py-scikit-learn scr wget bison damselfly glib julia libxcb nasm pdt py-mpi4py py-scipy silo wx boost dbus glm launchmon libxml2 ncdu petsc py-mx py-setuptools snappy wxpropgrid bowtie2 docbook-xml global lcms libxshmfence ncurses pidx py-mysqldb1 py-shiboken sparsehash xcb-proto boxlib doxygen glog leveldb libxslt netcdf pixman py-nose py-sip spindle xerces-c bzip2 dri2proto glpk libarchive llvm netgauge pkg-config py-numexpr py-six spot xz cairo dtcmp gmp libcerf llvm-lld netlib-blas pmgr_collective py-numpy py-sphinx sqlite yasm callpath dyninst gmsh libcircle lmdb netlib-lapack postgresql py-pandas py-sympy stat zeromq cblas eigen gnuplot libdrm lmod netlib-scalapack ppl py-pbr py-tappy sundials zlib cbtf elfutils gnutls libdwarf lua nettle protobuf py-periodictable py-twisted swig zsh cbtf-argonavis elpa gperf libedit lwgrp ninja py-astropy py-pexpect py-urwid szip cbtf-krell expat gperftools libelf lwm2 ompss py-basemap py-pil py-virtualenv tar cbtf-lanl extrae graphlib libevent matio ompt-openmp py-biopython py-pillow py-yapf task cereal exuberant-ctags graphviz libffi mbedtls opari2 py-blessings py-pmw python taskd cfitsio fftw gsl libgcrypt memaxes openblas py-cffi py-pychecker qhull tau § Spack has over 1000 packages now. 2500
  • 14. LLNL-PRES-806064 24http://github.com/LLNL/spack § All the versions coexist! — Multiple versions of same package are ok. § Packages are installed to automatically find correct dependencies. § Binaries work regardless of user’s environment. § Spack also generates module files. — Don’t have to use them. `spack find` shows what is installed $ spack find ==> 103 installed packages. -- linux-redhat6-x86_64 / gcc@4.4.7 -------------------------------- ImageMagick@6.8.9-10 glib@2.42.1 libtiff@4.0.3 pango@1.36.8 qt@4.8.6 SAMRAI@3.9.1 graphlib@2.0.0 libtool@2.4.2 parmetis@4.0.3 qt@5.4.0 adept-utils@1.0 gtkplus@2.24.25 libxcb@1.11 pixman@0.32.6 ravel@1.0.0 atk@2.14.0 harfbuzz@0.9.37 libxml2@2.9.2 py-dateutil@2.4.0 readline@6.3 boost@1.55.0 hdf5@1.8.13 llvm@3.0 py-ipython@2.3.1 scotch@6.0.3 cairo@1.14.0 icu@54.1 metis@5.1.0 py-nose@1.3.4 starpu@1.1.4 callpath@1.0.2 jpeg@9a mpich@3.0.4 py-numpy@1.9.1 stat@2.1.0 dyninst@8.1.2 libdwarf@20130729 ncurses@5.9 py-pytz@2014.10 xz@5.2.0 dyninst@8.1.2 libelf@0.8.13 ocr@2015-02-16 py-setuptools@11.3.1 zlib@1.2.8 fontconfig@2.11.1 libffi@3.1 openssl@1.0.1h py-six@1.9.0 freetype@2.5.3 libmng@2.0.2 otf@1.12.5salmon python@2.7.8 gdk-pixbuf@2.31.2 libpng@1.6.16 otf2@1.4 qhull@1.0 -- linux-redhat6-x86_64 / gcc@4.8.2 -------------------------------- adept-utils@1.0.1 boost@1.55.0 cmake@5.6-special libdwarf@20130729 mpich@3.0.4 adept-utils@1.0.1 cmake@5.6 dyninst@8.1.2 libelf@0.8.13 openmpi@1.8.2 -- linux-redhat6-x86_64 / intel@14.0.2 ----------------------------- hwloc@1.9 mpich@3.0.4 starpu@1.1.4 -- linux-redhat6-x86_64 / intel@15.0.0 ----------------------------- adept-utils@1.0.1 boost@1.55.0 libdwarf@20130729 libelf@0.8.13 mpich@3.0.4 -- linux-redhat6-x86_64 / intel@15.0.1 ----------------------------- adept-utils@1.0.1 callpath@1.0.2 libdwarf@20130729 mpich@3.0.4 boost@1.55.0 hwloc@1.9 libelf@0.8.13 starpu@1.1.4
  • 15. LLNL-PRES-806064 34http://github.com/LLNL/spack § Each unique dependency graph is a unique configuration. § Each configuration installed in a unique directory. — Configurations of the same package can coexist. § Hash of entire directed acyclic graph (DAG) is appended to each prefix. § Installed packages automatically find dependencies — Spack embeds RPATHs in binaries. — No need to use modules or set LD_LIBRARY_PATH — Things work the way you built them 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/ ... mpileaks mpi callpath dyninst libdwarf libelf Installation Layout Dependency DAG Hash
  • 16. LLNL-PRES-806064 53http://github.com/LLNL/spack § Purpose of module files — modify dynamically user’s env — manage multiple versions of same library / application — minimal user interface § State of the art — different file formats — different layouts — different tools § Spack support for module files — TCL / Non-hierarchical layout — Lua / Hierarchical layout TCL Non-hierarchical Lua Hierarchical Generator name tcl lmod Default folder share/spack/modules share/spack/lmod Compatible tools Env. modules LMod LMod What are module files?
  • 17. SJTU HPCC forks Spack https://github.com/sjtuhpcc/spack • ) 0 30 ?: 0 3 : 3?- . : . : . / // : 0 0/ 0 : 3 . : 0 ) ?:0 . :? 0 • ) . ?: 0 .0 :0 00 • )?- :? 0 ?0 ?: 0 0 3 ( 3 0 -00 0 0/
  • 18. Extra settings in your SLURM job scripts if [ -d "$HOME/spack" ]; then export SPACK_ROOT=$HOME/spack source $SPACK_ROOT/share/spack/setup- env.sh fi source <( spack module loads xxx )
  • 19. DEMO 1: Install Spack https://pi.sjtu.edu.cn/doc/spack $ cd $ git clone https://github.com/sjtuhpcc/spack.git $ cd spack && git pull origin develop $ ./bootstrap.sh user --install Add settings to ~/.bashrc if [ -d ”$HOME/spack” ]; then export SPACK_ROOT=$HOME/spack source $SPACK_ROOT/share/spack/setup-env.sh fi Apply settings. $ source ~/.bashrc
  • 20. DEMO 2: Install GCC 5.4.0 (Optional, takes 20mins) $ spack install gcc@5.4.0 %gcc@4.8.5 $ spack compiler find PATH_TO_GCC_540 $ spack compilers
  • 21. DEMO 3: Installing samtools $ spack spec samtools %gcc@5.4.0 $ spack install samtools %gcc@5.4.0 $ spack module loads samtools $ source <( spack module loads samtools ) $ which samtools
  • 22. DEMO 4: Installing openfoam-org against OpenMPI on SLURM (Optional, takes 1hours) $ spack install openfoam-org@5.0 %gcc@5.4.0 ^openmpi+pmi schedulers=slurm ^flex@2.6.4 $ source PATH_TO_OPENFOAM/etc/bashrc
  • 23. DEMO 5: Installing openfoam-com and Paraview with a QT GUI (Optional, takes 1 hour) $ spack install openfoam-com+metis+paraview %gcc@5.4.0 ^openmpi+pmi schedulers=slurm ^paraview+qt ^flex@2.6.4 $ source PATH_TO_OPENFOAM/etc/bashrc
  • 24. DEMO 6: Installing GPU-accelerated Gromacs 2018 $ spack install gromacs+mpi+cuda@2018.1 %gcc@5.4.0 ^openmpi+pmi schedulers=slurm $ source <( spack module loads gromacs+mpi+cuda@2018.1 )
  • 25. Demo 7: Install TensorFlow in Anaconda https://pi.sjtu.edu.cn/doc/tensorflow $ unset MODULEPATH $ module use /lustre/usr/modulefiles $ module load miniconda3/4.3 $ conda create --name tf-py3-cpu pip $ source activate tf-py3-cpu $ pip install tensorflow $ python > import tensorflow as tf; > print(tf.__verersion__)
  • 26. Summary • Spack requires NO root privilege and is easy to setup. • Site-wide compilers and per-user software repos are mostly managed by Spack, beneficial for both administrators and users. • We acknowledge Spack community for such a wonderful tool and tutorial slides. https://spack.io