spack:

  view: false

  concretizer:
    reuse: False
    unify: False

  modules:
    default:
      enable:: [lmod]
      lmod:
        defaults:
        - cray-mpich@8.1.17
        core_compilers: [gcc@11.2.0]
        blacklist_implicits: true
        verbose: true
        hash_length: 0
        whitelist: [cray-mpich]
        hierarchy: [mpi]
        projections: {}
        core_specs: []
        all:
          autoload: direct
          environment:
            set:
              ${PACKAGE}_ROOT: ${PREFIX}
          suffixes:
            +rocm: rocm
        py-warpx:
          suffixes:
            ^warpx dims=2: dims2
            ^warpx dims=3: dims3
            ^warpx dims=rz: dimsRZ
        visit:
          suffixes:
            ^vtk-m +rocm: rocm

  compilers:
  - compiler:
      spec: gcc@11.2.0
      paths:
        cc: gcc
        cxx: g++
        f77: gfortran
        fc: gfortran
      flags: {}
      operating_system: sles15
      target: any
      modules:
      - PrgEnv-gnu
      - gcc/11.2.0
      environment: {}
      extra_rpaths: []

  packages:
    all:
      compiler: [gcc@11.2.0]
      providers:
        blas: [openblas]
        lapack: [openblas]
        mpi: [cray-mpich]
        scalapack: [netlib-scalapack]
      target: [zen3]
      variants: +mpi
    binutils:
      variants: +ld +gold +headers +libiberty ~nls
    elfutils:
      variants: +bzip2 ~nls +xz
    hdf5:
      variants: +fortran +hl +shared
    libfabric:
      variants: fabrics=sockets,tcp,udp,rxm
    libunwind:
      variants: +pic +xz
    mpich:
      variants: ~wrapperrpath
    ncurses:
      variants: +termlib
    openblas:
      variants: threads=openmp
    python:
      version: [3.8.13]
    trilinos:
      variants: +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext
        +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu
        +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos
        +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
    xz:
      variants: +pic
    mesa:
      version: [21.3.8]

    # FACILITY REQUESTED PREFERENCES
    petsc:
      variants: +batch
    parallel-netcdf:
      variants: +cxx +fortran +fpic
    netlib-scalapack:
      variants: +fpic
    netcdf-c:
      variants: ~hdf4 +mpi +parallel-netcdf +shared
    fftw:
      variants: precision=float,double,long_double
    darshan-runtime:
      variants: scheduler=slurm

    # EXTERNALS
    cray-mpich:
      buildable: false
      externals:
      - spec: cray-mpich@8.1.16 %gcc@11.2.0
        prefix: /opt/cray/pe/mpich/8.1.16/ofi/gnu/9.1
        modules:
        - cray-mpich/8.1.16
        - libfabric/1.15.0.0
    libfabric:
      buildable: false
      externals:
      - spec: libfabric@1.15
        modules:
        - libfabric/1.15.0.0

    # ROCm 5.2.0
    comgr:
      buildable: false
      externals:
      - spec: comgr@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    hip-rocclr:
      buildable: false
      externals:
      - spec: hip-rocclr@5.2.0
        prefix: /opt/rocm-5.2.0/hip
        modules: [rocm/5.2.0]
    hipblas:
      buildable: false
      externals:
      - spec: hipblas@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    hipcub:
      buildable: false
      externals:
      - spec: hipcub@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    hipfft:
      buildable: false
      externals:
      - spec: hipfft@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    hipsparse:
      buildable: false
      externals:
      - spec: hipsparse@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    miopen-hip:
      buildable: false
      externals:
      - spec: hip-rocclr@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    miopengemm:
      buildable: false
      externals:
      - spec: miopengemm@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rccl:
      buildable: false
      externals:
      - spec: rccl@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocblas:
      buildable: false
      externals:
      - spec: rocblas@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocfft:
      buildable: false
      externals:
      - spec: rocfft@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocm-clang-ocl:
      buildable: false
      externals:
      - spec: rocm-clang-ocl@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocm-cmake:
      buildable: false
      externals:
      - spec: rocm-cmake@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocm-dbgapi:
      buildable: false
      externals:
      - spec: rocm-dbgapi@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocm-debug-agent:
      buildable: false
      externals:
      - spec: rocm-debug-agent@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocm-device-libs:
      buildable: false
      externals:
      - spec: rocm-device-libs@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocm-gdb:
      buildable: false
      externals:
      - spec: rocm-gdb@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    rocm-opencl:
      buildable: false
      externals:
      - spec: rocm-opencl@5.2.0
        prefix: /opt/rocm-5.2.0/opencl
        modules: [rocm/5.2.0]
    rocm-smi-lib:
      buildable: false
      externals:
      - spec: rocm-smi-lib@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    hip:
      buildable: false
      externals:
      - spec: hip@5.2.0
        prefix: /opt/rocm-5.2.0/hip
        modules: [rocm/5.2.0]
        extra_attributes:
          compilers:
            c: /opt/rocm-5.2.0/llvm/bin/clang++
            c++: /opt/rocm-5.2.0/llvm/bin/clang++
            hip: /opt/rocm-5.2.0/hip/bin/hipcc
    llvm-amdgpu:
      buildable: false
      externals:
      - spec: llvm-amdgpu@5.2.0
        prefix: /opt/rocm-5.2.0/llvm
        modules: [rocm/5.2.0]
        extra_attributes:
          compilers:
            c: /opt/rocm-5.2.0/llvm/bin/clang++
            cxx: /opt/rocm-5.2.0/llvm/bin/clang++
    hsakmt-roct:
      buildable: false
      externals:
      - spec: hsakmt-roct@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
    hsa-rocr-dev:
      buildable: false
      externals:
      - spec: hsa-rocr-dev@5.2.0
        prefix: /opt/rocm-5.2.0/
        modules: [rocm/5.2.0]
        extra_atributes:
          compilers:
            c: /opt/rocm-5.2.0/llvm/bin/clang++
            cxx: /opt/rocm-5.2.0/llvm/bin/clang++
    roctracer-dev-api:
      buildable: false
      externals:
      - spec: roctracer-dev-api@5.2.0
        prefix: /opt/rocm-5.2.0/roctracer
        modules: [rocm/5.2.0]
    rocprim:
      buildable: false
      externals:
      - spec: rocprim@5.2.0
        prefix: /opt/rocm-5.2.0
        modules: [rocm/5.2.0]
    rocrand:
      buildable: false
      externals:
      - spec: rocrand@5.2.0
        prefix: /opt/rocm-5.2.0
        modules: [rocm/5.2.0]
    rocsolver:
      buildable: false
      externals:
      - spec: rocsolver@5.2.0
        prefix: /opt/rocm-5.2.0
        modules: [rocm/5.2.0]
    rocsparse:
      buildable: false
      externals:
      - spec: rocsparse@5.2.0
        prefix: /opt/rocm-5.2.0
        modules: [rocm/5.2.0]
    rocthrust:
      buildable: false
      externals:
      - spec: rocthrust@5.2.0
        prefix: /opt/rocm-5.2.0
        modules: [rocm/5.2.0]
    rocprofiler-dev:
      buildable: false
      externals:
      - spec: rocprofiler-dev@5.2.0
        prefix: /opt/rocm-5.2.0
        modules:
        - rocm/5.2.0

  specs:
  # CPU
  - adios@1.13.1
  - aml@0.2.0
  - amrex@22.08
  - arborx@1.2
  - archer@2.0.0
  - argobots@1.1
  - axom@0.6.1
  - bolt@2.0
  - butterflypack@2.1.1
  - cabana@0.5.0
  - caliper@2.8.0
  - chai@2022.03.0 ~benchmarks ~tests
  - conduit@0.8.3
  - datatransferkit@3.1-rc3
  - dyninst@12.2.0
  - ecp-data-vis-sdk@1.0 +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf ~sensei +sz ~unifyfs +veloc +visit +vtkm +zfp ~cuda ~rocm 
  - exaworks@0.1.0
  - flecsi@1.4.2
  - flit@2.1.0
  - flux-core@0.40.0
  - fortrilinos@2.0.0
  - gasnet@2022.3.0
  - ginkgo@1.4.0
  - globalarrays@5.8
  - gmp@6.2.1
  - gotcha@1.0.3
  - hdf5-vol-async@1.2
  - heffte@2.2.0 +fftw
  - hpctoolkit@2022.05.15
  - hpx@1.8.1 networking=mpi
  - hypre@2.25.0
  - kokkos-kernels@3.6.00 +openmp
  - kokkos@3.6.01 +openmp
  - lammps@20220623
  - legion@21.03.0
  - libquo@1.3.1
  - libunwind@1.6.2
  - mercury@2.1.0
  - metall@0.21
  - mfem@4.4.0
  - mpark-variant@1.4.0
  - mpifileutils@0.11.1 ~xattr
  - nccmp@1.9.0.1
  - nco@5.0.1
  - netlib-scalapack@2.2.0
  - nrm@0.1.0
  - omega-h@9.34.1
  - openmpi@4.1.4
  - openpmd-api@0.14.5
  - papi@6.0.0.1
  - papyrus@1.0.2
  - parsec@3.0.2012 ~cuda
  - pdt@3.25.1
  - petsc@3.17.4
  - phist@1.9.5
  - plasma@21.8.29
  - plumed@2.8.0
  - precice@2.5.0
  - pumi@2.2.7
  - py-cinemasci@1.7.0
  - py-jupyterhub@1.4.1
  - py-libensemble@0.9.2
  - py-petsc4py@3.17.4
  - py-warpx@22.08 ^warpx dims=2
  - py-warpx@22.08 ^warpx dims=3
  - py-warpx@22.08 ^warpx dims=rz
  - qthreads@1.16 scheduler=distrib
  - raja@2022.03.0
  - slate@2022.06.00 ~cuda
  - slepc@3.17.2
  - stc@0.9.0
  - strumpack@6.3.1 ~slate
  - sundials@6.2.0
  - superlu-dist@7.2.0
  - superlu@5.3.0
  - swig@4.0.2
  - swig@4.0.2-fortran
  - tasmanian@7.7
  - tau@2.31.1 +mpi +python
  - trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext
    +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu
    +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos
    +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
  - turbine@1.3.0
  - umap@2.1.0
  - umpire@2022.03.1
  - unifyfs@0.9.2
  - upcxx@2022.3.0

  # no amdgpu_target
  - tau@2.31.1 +mpi +rocm

  # amdgpu_target=gfx90a
  - amrex@22.08 +rocm amdgpu_target=gfx90a
  - arborx@1.2 +rocm amdgpu_target=gfx90a
  - cabana@0.5.0 +rocm
  - ecp-data-vis-sdk@1.0 +adios2 ~ascent +cinema +darshan +faodel +hdf5 ~paraview +pnetcdf ~sensei +sz ~unifyfs +veloc +visit +vtkm +zfp ~cuda +rocm amdgpu_target=gfx90a
  - gasnet@2022.3.0 +rocm amdgpu_target=gfx90a
  - ginkgo@1.4.0 +rocm amdgpu_target=gfx90a
  - heffte@2.2.0 +rocm amdgpu_target=gfx90a
  - hpctoolkit@2022.05.15 +rocm
  - hpx@1.8.1 +rocm amdgpu_target=gfx90a
  - kokkos@3.6.01 +rocm amdgpu_target=gfx90a
  - magma@2.6.2 ~cuda +rocm amdgpu_target=gfx90a
  - mfem@4.4.0 +rocm amdgpu_target=gfx90a
  - slate@2022.06.00 +rocm amdgpu_target=gfx90a
  - strumpack@6.3.1 ~slate +rocm amdgpu_target=gfx90a
  - sundials@6.2.0 +rocm amdgpu_target=gfx90a
  - superlu-dist@7.2.0 +rocm amdgpu_target=gfx90a
  - tasmanian@7.7 ~openmp +rocm amdgpu_target=gfx90a
  - upcxx@2022.3.0 +rocm amdgpu_target=gfx90a

  # Included in ecp-data-viz-sdk
  # - adios2@2.8.3
  # - ascent@0.8.0
  # - darshan-runtime@3.4.0
  # - darshan-util@3.4.0
  # - faodel@1.2108.1
  # - hdf5@1.12.2 +fortran +hl +shared
  # - parallel-netcdf@1.12.2
  # - paraview@5.10.1 +qt ^mesa@21.3.8
  # - sz@2.1.12.2
  # - veloc@1.5
  # - vtk-m@1.8.0
  # - vtk-m@1.8.0 ~openmp ~rendering +rocm amdgpu_target=gfx90a
  # - zfp@0.5.5

  # CPU FAILURES
  # - alquimia@1.0.9                          # pflotran
  # - bricks@r0.1                             # bricks
  # - catalyst                                # catalyst
  # - dealii                                  # dealii
  # - geopm@1.1.0                             # geopm
  # - h5bench@1.2                             # h5bench
  # - loki@0.1.7                              # loki
  # - pruners-ninja@1.0.1                     # pruners-ninja
  # - rempi@1.1.0                             # rempi
  # - scr@3.0                                 # scr
  # - stat@4.1.0                              # launchmon-master
  # - variorum@0.4.1                          # variorum
  # - wannier90                               # wannier90
  # -----
  # bricks: weak/args.h:14:8: error: 'size_t' does not name a type; VSBrick-7pt.py-Scalar-8x8x8-1:30:3: error: 'vfloat512' was not declared in this scope
  # catalyst: Catalyst-v5.6.0/VTK/Common/Core/vtkMath.h:1514:15: error: 'clamp' is not a member of 'std'
  # catalyst: https://github.com/spack/spack/issues/30478
  # dealii: trilinos-13.0.1-gf2n2lavzxs77fcpqyw657s3ysgu2e5l/lib/cmake/ShyLU/ShyLUConfig.cmake:160 (INCLUDE): INCLUDE could not find requested file:
  # geopm: configure: error: Failed to determine MPI Fortran build flags use --with-mpi-bin or --with-mpicxx or --disable-mpi
  # h5bench: commons/h5bench_util.h:196: multiple definition of `has_vol_async'
  # h5bench: https://github.com/spack/spack/issues/32113
  # launchmon: launchmon/src/sdbg_base_symtab.hxx:207:49: error: ISO C++17 does not allow dynamic exception specifications
  # launchmon: sdbg_base_symtab.hxx:197:34: error: ISO C++17 does not allow dynamic exception specifications
  # librsvg: error: could not compile `cssparser` due to: /usr/bin/ld: cannot find .../spack-stage-librsvg-2.51.0-i3kyrqfehr7ip7msht4uiboatpbxjfnt/spack-src/target/release/deps/libproc_macro2-b865193815fed41d.rlib: No such file or directory
  # loki: loki/SmallObj.h:462:57: error: ISO C++17 does not allow dynamic exception specifications
  # loki: https://github.com/spack/spack/issues/32122
  # pflotran: pflotran/option.F90:750:21: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
  # pruners-ninja: test/ninja_test_util.c:34: multiple definition of `a'
  # pruners-ninja: https://github.com/spack/spack/issues/32112
  # rempi: rempi_message_manager.h:53:3: error: 'string' does not name a type; did you mean 'stdin'?
  # rempi: https://github.com/spack/spack/issues/32123
  # scr: CMake Error at cmake/SCR_DEPENDENCIES.cmake:10 (MESSAGE): Could not find MPI! Either add an MPI compiler to your path or force CMake
  # variorum: /usr/bin/ld: Intel/CMakeFiles/variorum_intel.dir/IvyBridge_3E.c.o:(.bss+0x0): multiple definition of `g_platform';
  # variorum: https://github.com/spack/spack/issues/32110
  # wannier90: ../comms.F90:1214:22: Error: Type mismatch between actual argument at (1) and actual argument at (2) (COMPLEX(8)/INTEGER(4)).

  # GPU FAILURES
  # - caliper@2.8.0 +rocm amdgpu_target=gfx90a                  # caliper
  # - chai@2022.03.0 ~benchmarks +rocm amdgpu_target=gfx90a     # umpire
  # - papi@6.0.0.1 +rocm amdgpu_target=gfx90a                   # papi
  # - petsc@3.17.4 +rocm amdgpu_target=gfx90a                   # petsc
  # - raja@2022.03.0 ~openmp +rocm amdgpu_target=gfx90a         # raja
  # - slepc@3.17.2 +rocm amdgpu_target=gfx90a ^petsc@3.17.4 +rocm amdgpu_target=gfx90a # petsc
  # - trilinos@13.4.0 +rocm amdgpu_target=gfx90a                # trilinos
  # - umpire@2022.03.1 +rocm amdgpu_target=gfx90a               # umpire
  # ------
  # caliper: /usr/bin/ld: ../../libcaliper-serial.so.2.8.0: undefined reference to `hipKernelNameRef'
  # caliper: https://github.com/spack/spack/issues/32827
  # papi: Fatal Error: File '/opt/rocm-5.2.0/llvm/include/omp_lib.mod' opened at (1) is not a GNU Fortran module file
  # petsc: configure fail: WARNING: Using default optimization C flags -g -O
  # petsc: https://github.com/spack/spack/issues/32826
  # raja: g++: error: unrecognized command-line option '--rocm-path=/opt/rocm-5.2.0'
  # slate: cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230: Could NOT find Threads (missing: Threads_FOUND)
  # trilinos: belos/src/BelosBlockCGSolMgr.hpp:370:37: error: dynamic initialization is not supported for __device__, __constant__, __shared__, and __managed__ variables.
  # trilinos: https://github.com/spack/spack/issues/30626
  # umpire: src/umpire/util/io.cpp:188:34: error: 'fspath_path' was not declared in this scope

  # SKIPPED
  # - nvhpc@22.7                 # not relevant on AMD GPU system
  # - libnrm                     # hard mpich dependency
  # - gptune@3.0.0               # hard openmpi dependency