Motivation
Combinations of multiple software packages developed by different groups are essential for large-scale computational science, where the capabilities needed for modeling, simulation, and analysis are broader than any single team has resources to address. The often tedious trial-and-error process of obtaining, configuring, and installing any single tool may arguably be manageable. However, from the perspective of an end-user application scientist, handling each tool’s installation idiosyncrasies can easily become overwhelming when dealing with several packages in combination. Worse, such problems are compounded by the need for consistency among packages to be used within the same application in terms of compiler, compiler versions and options, and common third-party packages such as BLAS and HDF5.
Spack
A goal of xSDK is to simplify the process of working with various xSDK packages in combination. Spack is a package manager for high-performance computing. We thus provide an xSDK Spack metapackage that includes many xSDK numerical libraries (AMReX, ButterflyPACK*, Data Transfer Toolkit (DTK), deal.ii, Ginkgo*, Hypre,libEnsemble*, MAGMA, MFEM, Omega_h, PETSc/TAO, PHIST, PLASMA, preCICE*, PUMI, SLEPc, STRUMPACK, SUNDIALS, SuperLU_dist, Tasmanian, and Trilinos ) as well as some commonly needed external packages.
Spack allows the xSDK packages to be deployed with a single command. The user can optionally choose compilers, MPI implementation, and build options. We are working toward support of combinatorial test dashboards for all xSDK packages.
*Denotes a package released as part of the xSDK for the first time in version 0.5.0.
xSDK 0.5.0 release components
Final release date: November 14, 2019
The xSDK spack metapackage (version 0.5.0) includes tested release versions of the following xSDK packages:
- AMReX
- ButterflyPACK
- Data Transfer Toolkit (DTK)
- deal.ii
- Ginkgo
- hypre
- libEnsemble
- MAGMA
- MFEM
- Omega_h
- PETSc/TAO
- PHIST
- PLASMA
- preCICE
- PUMI
- SLEPc
- STRUMPACK
- SUNDIALS
- SuperLU
- Tasmanian
- Trilinos
- Pflotran
- Alquimia
Users who prefer to work with just one xSDK package rather than several can use Spack to install only that particular package. Alternatively, they can bypass Spack and instead obtain the package directly from its website and install according to instructions there.
Open source packages installed with xSDK packages
Users can view a tree of dependencies for any Spack package, including xSDK, by running ‘spack spec xsdk’. This is an example of the dependency tree for the xSDK metapackage as of version 0.5.0:
xsdk@0.5.0%gcc@9.2.1+butterflypack~cuda+dealii~debug+ginkgo+libensemble+omega-h+phist+precice+strumpack+trilinos arch=linux-fedora31-skylake ^alquimia@xsdk-0.5.0%gcc@9.2.1 build_type=RelWithDebInfo +shared arch=linux-fedora31-skylake ^cmake@3.14.5%gcc@9.2.1~doc+ncurses+openssl+ownlibs~qt arch=linux-fedora31-skylake ^hdf5@1.10.5%gcc@9.2.1~cxx~debug+fortran+hl+mpi patches=b61e2f058964ad85be6ee5ecea10080bf79e73f83ff88d1fa4b602d00209da9c +pic+shared~szip~threadsafe arch=linux-fedora31-skylake ^mpich@3.3.1%gcc@9.2.1 device=ch3 +hydra netmod=tcp +pci pmi=pmi +romio~slurm~verbs+wrapperrpath arch=linux-fedora31-skylake ^numactl@2.0.12%gcc@9.2.1 arch=linux-fedora31-skylake ^zlib@1.2.11%gcc@9.2.1+optimize+pic+shared arch=linux-fedora31-skylake ^pflotran@xsdk-0.5.0%gcc@9.2.1 arch=linux-fedora31-skylake ^petsc@3.12.1%gcc@9.2.1~X~batch clanguage=C ~complex~debug+double~fftw+hdf5+hypre~int64~knl+metis+mpi~mumps+shared~suite-sparse+superlu-dist+trilinos arch=linux-fedora31-skylake ^hypre@2.18.2%gcc@9.2.1~complex~debug~int64~internal-superlu~mixedint+mpi~openmp+shared+superlu-dist arch=linux-fedora31-skylake ^openblas@0.3.7%gcc@9.2.1+avx2~avx512 cpu_target=auto ~ilp64+pic+shared threads=none ~virtual_machine arch=linux-fedora31-skylake ^superlu-dist@6.1.1%gcc@9.2.1 build_type=RelWithDebInfo ~int64~openmp+shared arch=linux-fedora31-skylake ^metis@5.1.0%gcc@9.2.1 build_type=Release ~gdb~int64 patches=4991da938c1d3a1d3dea78e49bbebecba00273f98df2a656e38b83d55b281da1,b1225da886605ea558db7ac08dd8054742ea5afe5ed61ad4d0fe7a495b1270d2 ~real64+shared arch=linux-fedora31-skylake ^parmetis@4.0.3%gcc@9.2.1 build_type=RelWithDebInfo ~gdb patches=4f892531eb0a807eb1b82e683a416d3e35154a455274cf9b162fb02054d11a5b,50ed2081bc939269689789942067c58b3e522c269269a430d5d34c00edbc5870,704b84f7c7444d4372cb59cca6e1209df4ef3b033bc4ee3cf50f369bce972a9d +shared arch=linux-fedora31-skylake ^python@3.7.4%gcc@9.2.1+bz2+ctypes+dbm+lzma~nis~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tix~tkinter~ucs4~uuid+zlib arch=linux-fedora31-skylake ^trilinos@12.18.1%gcc@9.2.1~adios2~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~chaco~complex~debug+dtk+epetra+epetraext~exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid+intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu~mumps+nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado+shards+shared~shylu~stk~suite-sparse~superlu+superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2 arch=linux-fedora31-skylake ^boost@1.70.0%gcc@9.2.1+atomic+chrono~clanglibcpp~context~coroutine cxxstd=98 +date_time~debug+exception~fiber+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199 ~pic+program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout visibility=hidden +wave arch=linux-fedora31-skylake ^bzip2@1.0.8%gcc@9.2.1+shared arch=linux-fedora31-skylake ^glm@0.9.7.1%gcc@9.2.1 build_type=RelWithDebInfo arch=linux-fedora31-skylake ^matio@1.5.13%gcc@9.2.1+hdf5+shared+zlib arch=linux-fedora31-skylake ^netcdf-c@4.7.2%gcc@9.2.1~dap~hdf4 maxdims=1024 maxvars=8192 +mpi~parallel-netcdf patches=56532470875b9a97f3cf2a7d9ed16ef1612df3265ee38880c109428322ff3a40,f52db13c61b9c19aafe03c2a865163b540e9f6dee36e3a5f808f05fac59f2030 +pic+shared arch=linux-fedora31-skylake ^m4@1.4.18%gcc@9.2.1 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-fedora31-skylake ^amrex@19.08%gcc@9.2.1~amrdata build_type=Release dimensions=3 ~eb~fortran+linear_solvers+mpi~openmp~particles precision=double ~shared~sundials arch=linux-fedora31-skylake ^butterflypack@1.1.0%gcc@9.2.1 build_type=RelWithDebInfo +shared arch=linux-fedora31-skylake ^arpack-ng@3.7.0%gcc@9.2.1+mpi+shared arch=linux-fedora31-skylake ^netlib-scalapack@2.0.2%gcc@9.2.1 build_type=RelWithDebInfo patches=22ebf4e3d5a6356cd6086ea65bfdf30f9d0a2038136127590cd269d15bdb03af,e8f30dd1f26e523dfb552f8d7b8ad26ac88fc0c8d72e3d4f9a9717a3383e0b33 ~pic+shared arch=linux-fedora31-skylake ^dealii@9.1.1%gcc@9.2.1+adol-c+arpack~assimp build_type=DebugRelease ~cuda cuda_arch=none ~doc~ginkgo~gmsh+gsl+hdf5~int64+metis+mpi+muparser+nanoflann~netcdf+oce~optflags+p4est+petsc~python+scalapack+slepc~sundials~symengine+trilinos arch=linux-fedora31-skylake ^adol-c@develop%gcc@9.2.1~advanced_branching+atrig_erf~boost+doc+examples~openmp~sparse arch=linux-fedora31-skylake ^autoconf@2.69%gcc@9.2.1 arch=linux-fedora31-skylake ^automake@1.16.1%gcc@9.2.1 arch=linux-fedora31-skylake ^libtool@2.4.6%gcc@9.2.1 arch=linux-fedora31-skylake ^gsl@2.5%gcc@9.2.1 arch=linux-fedora31-skylake ^intel-tbb@2019.4%gcc@9.2.1 cxxstd=default patches=ca08c28bdb15582c30777f9303d1986e4c09b3d514776494f3fbf5f19381bfda,df9770cb0ebf8a084b466eafec9fb17797761e61131ae2e88fac31c0091cbd37 +shared+tm arch=linux-fedora31-skylake ^muparser@2.2.6.1%gcc@9.2.1 arch=linux-fedora31-skylake ^nanoflann@1.2.3%gcc@9.2.1 build_type=RelWithDebInfo arch=linux-fedora31-skylake ^oce@0.18.3%gcc@9.2.1~X11+tbb arch=linux-fedora31-skylake ^p4est@2.2%gcc@9.2.1+mpi~openmp arch=linux-fedora31-skylake ^slepc@3.12.0%gcc@9.2.1+arpack~blopex arch=linux-fedora31-skylake ^suite-sparse@5.3.0%gcc@9.2.1~cuda~openmp+pic~tbb arch=linux-fedora31-skylake ^ginkgo@1.1.0%gcc@9.2.1 build_type=Release ~cuda cuda_arch=none ~develtools~full_optimizations~openmp+shared arch=linux-fedora31-skylake ^mfem@4.0.1-xsdk%gcc@9.2.1~conduit~debug+examples~gnutls+gzstream+hypre~lapack~libunwind+metis+miniapps~mpfr+mpi~netcdf~occa~openmp+petsc~pumi~raja~shared+static~suite-sparse+sundials+superlu-dist~threadsafe timer=auto arch=linux-fedora31-skylake ^sundials@5.0.0%gcc@9.2.1+ARKODE+CVODE+CVODES+IDA+IDAS+KINSOL build_type=RelWithDebInfo ~cuda+examples-c~examples-cuda~examples-cxx~examples-f2003+examples-f77~examples-f90+examples-install~f2003~fcmix+generic-math+hypre~int64~klu~lapack+mpi~openmp patches=5d1dba283a14e136f07b8740f63310fe73d17c923e223b6380c11e888d9f5434 +petsc precision=double ~pthread~raja+shared+static+superlu-dist~superlu-mt arch=linux-fedora31-skylake ^omega-h@9.29.0%gcc@9.2.1 build_type=RelWithDebInfo ~examples+mpi+optimize+shared+symbols~throw+trilinos~warnings+zlib arch=linux-fedora31-skylake ^phist@1.8.0%gcc@9.2.1 build_type=RelWithDebInfo ~fortran~host kernel_lib=tpetra +mpi~openmp outlev=2 ~parmetis~scamac+shared~trilinos arch=linux-fedora31-skylake ^plasma@19.8.1%gcc@9.2.1 build_type=RelWithDebInfo ~lua patches=6ce78aaea37672a3cd63cbf3cc5f9f12da974a099b8312c6b0678b4b55020287,97606686359b620b7eae22a769793f269dafd52d838bb519ef57d7cb60bea3de +shared arch=linux-fedora31-skylake ^precice@1.6.1%gcc@9.2.1 build_type=RelWithDebInfo +mpi+petsc~python+shared arch=linux-fedora31-skylake ^eigen@3.3.7%gcc@9.2.1 build_type=RelWithDebInfo ~fftw~metis~mpfr~scotch~suitesparse arch=linux-fedora31-skylake ^libxml2@2.9.9%gcc@9.2.1~python arch=linux-fedora31-skylake ^libiconv@1.16%gcc@9.2.1 arch=linux-fedora31-skylake ^pkg-config@1.6.3%gcc@9.2.1+internal_glib arch=linux-fedora31-skylake ^xz@5.2.4%gcc@9.2.1 arch=linux-fedora31-skylake ^pumi@2.2.1%gcc@9.2.1 build_type=RelWithDebInfo ~fortran~int64~shared simmodsuite=none ~zoltan arch=linux-fedora31-skylake ^py-libensemble@0.5.2%gcc@9.2.1~mpi~nlopt+petsc4py~scipy arch=linux-fedora31-skylake ^py-numpy@1.17.2%gcc@9.2.1+blas+lapack arch=linux-fedora31-skylake ^py-petsc4py@3.12.0%gcc@9.2.1 arch=linux-fedora31-skylake ^py-mpi4py@3.0.3%gcc@9.2.1 arch=linux-fedora31-skylake ^py-setuptools@41.2.0%gcc@9.2.1 arch=linux-fedora31-skylake ^strumpack@3.3.0%gcc@9.2.1~build_dev_tests~build_tests build_type=RelWithDebInfo +butterflypack+c_interface~count_flops+mpi+openmp~parmetis~scotch~shared~task_timers arch=linux-fedora31-skylake ^tasmanian@7.0%gcc@9.2.1+blas build_type=Release ~cuda~fortran~magma+mpi+openmp patches=e4ccfb63933a684e7cba7783e09188af30023597c95dd2374fb3e882add5b205,f9e0a08f3f6ce916c8133096996acb7d5df699d12ed540707c8b1bc4481e5a53 ~python+xsdkflags arch=linux-fedora31-skylake
The following open source HPC packages are installed by default with the xSDK. Note that you may override these and use a preinstalled version if you wish.