This page discusses the platforms on which the xSDK 0.5.0 release has been tested and contains general instructions for building, as well as more specific instructions for select high-end computing systems. See also details about obtaining the xSDK.
As more information becomes available for building the xSDK 0.5.0 release on different platforms, that information will be posted here.. Check back for updates.
xSDK 0.5.0 general build instructions
1. After cloning spack git repo, setup spack environment
# For bash users $ export SPACK_ROOT=/path/to/spack $ . $SPACK_ROOT/share/spack/setup-env.sh # For tcsh or csh users (note you must set SPACK_ROOT) $ setenv SPACK_ROOT /path/to/spack $ source $SPACK_ROOT/share/spack/setup-env.csh
1.1 Make sure proxy settings are set – if needed.
If a web proxy is required for internet access on the install machine, please set up proxy settings appropriately. Otherwise, Spack will fail to “fetch” the packages of your interest.
# For bash users $ export http_proxy=<your proxy URL> $ export https_proxy=<your proxy URL> # For tcsh or csh users $ setenv http_proxy <your proxy URL> $ setenv https_proxy <your proxy URL>
2. Setup spack compilers
spack compiler find
Spack compiler configuration is stored in $HOME/.spack/$UNAME/compilers.yaml and can be checked with
spack compiler list
3. Edit/update packages.yaml file to specify any system/build tools needed for xSDK installation.
Although Spack can install required build tools, it can be convenient to use preinstalled tools – if already installed. On macOS, in addition to Xcode, we’ve used some packages from Homebrew. Such preinstalled packages can be specified to spack in $HOME/.spack/packages.yaml config file. The following is an example for macOS
# ------------------------------------------------------------------------- # This file controls default concretization preferences for Spack. # # Settings here are versioned with Spack and are intended to provide # sensible defaults out of the box. Spack maintainers should edit this # file to keep it current. # # Users can override these settings by editing the following files. # # Per-spack-instance settings (overrides defaults): # $SPACK_ROOT/etc/spack/packages.yaml # # Per-user settings (overrides default and site settings): # ~/.spack/packages.yaml # ------------------------------------------------------------------------- packages: autoconf: paths: autoconf@2.69: /usr/local buildable: False automake: paths: automake@1.15.1: /usr/local buildable: False libtool: paths: libtool@2.4.6: /usr/local buildable: False m4: paths: m4@1.4.18: /usr/local buildable: False cmake: paths: cmake@3.9.3: /usr/local buildable: False pkg-config: paths: pkg-config@1.3.9: /usr buildable: False python: paths: python@2.7.13: /usr buildable: False all: providers: mpi: [mpich] compiler: [clang@9.0.0-apple]
4. Install xSDK
After the edit, xSDK packages and external dependencies can be installed with a single command:
spack install xsdk
5. Install environment modules.
Optionally one can install environment-modules package to access xsdk packages as modules.
spack install environment-modules
After installation, the modules can be enabled with the following command line.
For bash:
# For bash users $ source `spack location -i environment-modules`/init/bash # For tcsh or csh users $ source `spack location -i environment-modules`/init/tcsh
6. Load xSDK module and its sub-modules.
Now you can load xSDK environment. Try Spack’s load command with the -r (resolve all dependencies) option:
spack load -r xsdk
Then, module list generates the following output, for example:
Currently Loaded Modulefiles: 1) mpich-3.3.1-gcc-9.2.1-vlr4olk 2) numactl-2.0.12-gcc-9.2.1-7iruphx 3) zlib-1.2.11-gcc-9.2.1-f4ghtmi 4) hdf5-1.10.5-gcc-9.2.1-z4sim6l 5) openblas-0.3.7-gcc-9.2.1-kdem7d7 6) metis-5.1.0-gcc-9.2.1-w3psdd6 7) parmetis-4.0.3-gcc-9.2.1-2ix5swm 8) superlu-dist-6.1.1-gcc-9.2.1-hhoted2 9) hypre-2.18.2-gcc-9.2.1-hcwnxf3 10) bzip2-1.0.8-gcc-9.2.1-5ypuoif 11) boost-1.70.0-gcc-9.2.1-bdw77ev 12) glm-0.9.7.1-gcc-9.2.1-g4p6bby 13) matio-1.5.13-gcc-9.2.1-pr53e6y 14) netcdf-c-4.7.2-gcc-9.2.1-gddudyy 15) trilinos-12.18.1-gcc-9.2.1-daopyls 16) petsc-3.12.1-gcc-9.2.1-5wyj7ys 17) pflotran-xsdk-0.5.0-gcc-9.2.1-rlnl6uw 18) alquimia-xsdk-0.5.0-gcc-9.2.1-eburogx 19) amrex-19.08-gcc-9.2.1-73ao5c7 20) arpack-ng-3.7.0-gcc-9.2.1-3lhyzwn 21) netlib-scalapack-2.0.2-gcc-9.2.1-biyu4fj 22) butterflypack-1.1.0-gcc-9.2.1-nyzgadn 23) adol-c-develop-gcc-9.2.1-woat6nv 24) gsl-2.5-gcc-9.2.1-jcojksx 25) intel-tbb-2019.4-gcc-9.2.1-vx5f7b5 26) muparser-2.2.6.1-gcc-9.2.1-or665xh 27) nanoflann-1.2.3-gcc-9.2.1-r53uf54 28) oce-0.18.3-gcc-9.2.1-z3eqs6z 29) p4est-2.2-gcc-9.2.1-nceihyv 30) slepc-3.12.0-gcc-9.2.1-6fj6itb 31) suite-sparse-5.3.0-gcc-9.2.1-hvzd3ij 32) dealii-9.1.1-gcc-9.2.1-wrxc3bl 33) ginkgo-1.1.0-gcc-9.2.1-6kbkqyq 34) sundials-5.0.0-gcc-9.2.1-jh2wooz 35) mfem-4.0.1-xsdk-gcc-9.2.1-de2m3ht 36) omega-h-9.29.0-gcc-9.2.1-m5yql3j 37) phist-1.8.0-gcc-9.2.1-zawopoy 38) plasma-19.8.1-gcc-9.2.1-x5fsmdm 39) eigen-3.3.7-gcc-9.2.1-2ffrn5s 40) libiconv-1.16-gcc-9.2.1-fetha6s 41) xz-5.2.4-gcc-9.2.1-453rtbj 42) libxml2-2.9.9-gcc-9.2.1-gkze6pv 43) precice-1.6.1-gcc-9.2.1-6bqxkx3 44) pumi-2.2.1-gcc-9.2.1-5kwnbpn 45) py-numpy-1.17.2-gcc-9.2.1-72ai42y 46) python-3.7.4-gcc-9.2.1-5m6odl7 47) py-mpi4py-3.0.3-gcc-9.2.1-tn72t3a 48) py-petsc4py-3.12.0-gcc-9.2.1-2yr6fwh 49) py-libensemble-0.5.2-gcc-9.2.1-2y6w4fa 50) strumpack-3.3.0-gcc-9.2.1-3dqkcwf 51) tasmanian-7.0-gcc-9.2.1-kdpehwk 52) xsdk-0.5.0-gcc-9.2.1-pkcmcs3
xSDK 0.5.0 platform testing
xSDK 0.5.0 has been updated/fixed on a regular basis on various workstations (and more)
- darwin-catalina-haswell / gcc@9.2.0
- darwin-catalina-x86_64 / clang@11.0.0-apple
- linux-centos7-haswell / gcc@4.8.5
- linux-centos7-skylake_avx512 / gcc@7.4.0
- linux-centos7-skylake_avx512 / intel@18.0.1
- linux-centos7-mic_knl / intel@18.0.2
- linux-fedora31-aarch64 / gcc@9.2.1
- linux-fedora31-skylake / clang@9.0.0
- linux-fedora31-skylake / gcc@8.3.0
- linux-fedora31-skylake / gcc@9.2.1
- linux-ubuntu18.04-skylake / clang@6.0.0-1ubuntu2
- linux-ubuntu18.04-skylake / gcc@7.3.0
In collaboration with ALCF, NERSC, and OLCF xSDK packages are tested on key machines at these DOE computing facilities.
- ALCF: Theta: Cray XC40 with Intel compilers [in KNL mode]
- Theta front end nodes use Xeon processors and the compute nodes use KNL processors. Due to this difference – usually the builds on the compile/front-end nodes are done in cross compile mode – this does not work well with all xSDK packages. Hence xSDK build on Theta compute nodes.
- build the packages on the compute node – by allocating a long enough 1 node job (if possible – say 24h) and run the following script
#!/bin/bash -x module remove darshan module remove xalt module load cce module load intel/19.0.5.281 module load gcc/7.3.0 export HTTPS_PROXY=theta-proxy.tmi.alcf.anl.gov:3128 export https_proxy=theta-proxy.tmi.alcf.anl.gov:3128 export HTTP_PROXY=theta-proxy.tmi.alcf.anl.gov:3128 export http_proxy=theta-proxy.tmi.alcf.anl.gov:3128 aprun -cc none -n 1 python /home/balay/spack/bin/spack install -j16 xsdk ^dealii~adol-c~p4est
- Relevant .spack config files for this build are at:
cray-cnl6-mic_knl / intel@19.0.5.281
- NERSC: Cori: Cray XC40 with Intel compilers [in Haswell mode]
- build packages on the compile/fronet-end node with:
module remove altd darshan spack install -j8 xsdk
- Relevant .spack config files for this build are at:
cray-cnl7-haswell / intel@19.0.3.199
- build packages on the compile/fronet-end node with:
- OLCF:Summit: IBM POWER9 with IBM, GNU, and PGI compilers
- Building with GCC is possible for both GCC 7 and 8 but there are limitations on the jobs on the login node that make only 16 GiB available for a single user. Some packages inside xSDK fail because of it. This can be circumvented by submitting a job to the batch queue. An example LSF submission file looks like this:
#!/bin/bash #BSUB -P <project_code> #BSUB -W 2:00 #BSUB -nnodes 1 #BSUB -alloc_flags smt4 #BSUB -J xsdk-cuda #BSUB -o xsdk-cuda.%J #BSUB -e xsdk-cuda.%J SPACK_ROOT=/ccs/proj/csc326/luszczek/spack export SPACK_ROOT PATH=${PATH}:${SPACK_ROOT}/bin export PATH module unload xalt module load gcc/8.1.1 module load spectrum-mpi/10.3.0.1-20190611 cd $SPACK_ROOT spack install xsdk # add +cuda to build packages with CUDA support date
- Building xSDK with IBM XL is possible but many constituent packages have issues for the XL compiler suite and must be disabled with a Spack invocation:
spack install xsdk%xl~trilinos~butterflypack~dealii~omega-h~phist~precice~libensemble~strumpack~slepc~tasmanian^netlib-lapack
- The relevant configuration files that reside in
$HOME/.spack
are available in summit directory.
- Building with GCC is possible for both GCC 7 and 8 but there are limitations on the jobs on the login node that make only 16 GiB available for a single user. Some packages inside xSDK fail because of it. This can be circumvented by submitting a job to the batch queue. An example LSF submission file looks like this: