Spack variant review - xsdk-project/xsdk-community-policies GitHub Wiki

xSDK and Spack common variant analysis

Initial review on: August 18th 2020

This looks at common variants used in xSDK in order to determine naming conventions.

xSDK includes 24 packages: 22 libraries and 2 applications. Below are the package directory names in Spack.

Libs: butterflypack dealii hypre mfem petsc phist precice py-libensemble strumpack superlu trilinos amrex datatransferkit ginkgo magma omega-h plasma pumi slepc sundials tasmanian

Applications: alquimia pflotran

Where an analysis is given of default value for variants it is based on the variant declaration line.

Note: Due to the nature of searching for alternative option names, I cannot be sure this is comprehensive. However, significant effort was made to search for alternatives option names. Feel free to update.

Spack packages analyzed at commit: acfa2ea0188129fd1e683fe8e146256b1a695d5c Date: Wed Aug 5 09:19:22 2020 -0700

Index size

gotype: 1 package in xsdk. Total of 1 package in spack.

  • trilinos (Values are 'int', 'long', 'long_long'). Default is long.

int64: 6 packages in xsdk (All default to False except phist). Total of 19 packages in Spack.

  • dealii
  • hypre
  • petsc
  • phist
  • pumi
  • sundials

int32: None in xsdk. Total of 1 package in Spack.

mixedint: 1 package in xsdk. Total of 1 package in Spack.

  • hypre

Possibly related variants in Spack packages - NOT used in any xsdk package.

  • ilp64 in 5 packages. - e.g. openblas/: variant('ilp64', default=False, description='Force 64-bit Fortran native integers')
  • global in one package - talass: variant('global', default='32', values=('16', '32', '64'),
  • local in one package - talass: variant('local', default='32', values=('16', '32', '64')
  • int64_blas in two packages
  • blas64 in one package.
  • 64bit in one package.
  • only64bit in one package.
  • 64bitids in one package.


double:1 match in xsdk. 5 packages in Spack - all but one (kaldi) default True.

  • petsc

float: 1 match in xsdk . 3 packages in spack (trilinos, grackle, mumps)

  • trilinos. 'Enable single precision (float) numbers in Trilinos' default=False

single: None in xsdk. 2 packages in Spack (both default to False)

precision: 2 packages in xsdk. Total of 5 packages in Spack (all diff value options).

  • amrex - multi-value: values=('single', 'double')) Default='double'
  • sundials - multi-value: values=('single', 'double', 'extended') Default='double'

Other Spack packages with options:

  • comd - boolean option - default=True
  • sw4lite - multi-value: values=('float', 'double') Default='double'
  • talass - multi-value: values=('32', '64') Default='32'

Possibly related variants in Spack packages - NOT used in any xsdk package.

  • float32: Four packages (3 'foam' packages) - default False in all
  • double_precision: One package in spack (gromacs) - default False
  • double-precision: One package in spack (openfast) - default True
  • doubleprecision: One packages in spack (vtk-m) - default True
  • single_precision: One package in spack (spfft) - default False
  • singleprecision: One package in spack (regcm) - default False
  • real64: One package in spack (metis) - default False
  • quad: Three packages in Spack. All default False. E.g. 'Enable quad precision'
  • half: Two packages in Spack. Both supporting FP16 precision.

Shared libraries

shared: 16 xsdk packages (default: 11=True, 4=False, 1=(sys.platform != 'darwin')). A total of 152 Spack packages.

  • alquimia
  • amrex
  • butterflypack
  • datatransferkit
  • ginkgo
  • hypre
  • magma
  • mfem
  • omega-h
  • petsc
  • phist
  • precice
  • pumi
  • strumpack
  • sundials
  • trilinos

static: 2 xsdk packages. Default is True in both. A total of 20 packages in Spack

  • mfem (also has shared with default False)
  • sundials (also has shared with default True - so builds both static and shared).

pic: 1 xsdk package. A total of 36 Spack packages (30 default to True, 6 False)

  • superlu default=True (presume shared is default) results in -DCMAKE_POSITION_INDEPENDENT_CODE=ON

Possibly related variants in Spack packages - NOT used in any xsdk package.

  • link_type: In 1 spack package- multi-value: values=('static', 'shared'), multi=True - default='shared'
  • piclibs: In 1 spack package
  • link_dylib: In 1 spack package (sollve)- "Build and link the libLLVM shared library rather than static"
  • lld: : In 1 spack packagee (sollve) "Build the LLVM linker"

Debug build

debug: 4 xsdk packages. A total of 43 packages in Spack. Default False on all

  • hypre
  • mfem
  • petsc
  • trilinos

symbols: (I guess adds debugging symbols without disabling optimization) 1 xsdk package. A total of 2 packages in spack (other is coind3d - default:False)

  • omega-h. default=True, description='Compile C++ with debug symbols'

build_type (multi-value type). 4 xsdk packages. A total of 60 packages in Spack (with various value options). xsdk packages:

  • amrex values=('Debug', 'Release')) default='Release'
  • ginkgo values=('Debug', 'Release')) default='Release'
  • tasmanian values=('Debug', 'Release')) default='Release'
  • dealii values=('Debug', 'Release', 'DebugRelease')) default='DebugRelease'

Other Spack non-xSDK packages options (values) for build_type

  • RelWithDebInfo
  • RelWithDebug
  • FastDebug
  • DebugRelease
  • MinSizeRel
  • CodeCoverage
  • Production
  • Coverage