Commit c3a05c89 authored by Brian Homerding's avatar Brian Homerding
Browse files

Public version of LLVM pipeline

parents
# ecp-ci-llvm
Setup for using llvm to build e4s and proxy-apps on the ECP CI.
###############################################################################
spack:
###############################################################################
include:
- ../share-general/compilers.yaml
- ../share-general/config.yaml
- ../share-general/modules.yaml
- ../share-general/packages.yaml
- ../share-modules
###############################################################################
specs: []
###############################################################################
compilers:
# power9le
- compiler:
spec: gcc@4.8.5
operating_system: cnl6
target: x86_64
modules: []
paths:
cc: /usr/bin/gcc
cxx: /usr/bin/g++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
- compiler:
spec: gcc@8.2.0
operating_system: cnl6
target: x86_64
modules:
- gcc/8.2.0
paths:
cc: /opt/gcc/8.2.0/bin/gcc
cxx: /opt/gcc/8.2.0/bin/g++
f77: /opt/gcc/8.2.0/bin/gfortran
fc: /opt/gcc/8.2.0/bin/gfortran
- compiler:
spec: clang@develop-stage1
operating_system: cnl6
target: any
modules:
- llvm-stage1
paths:
cc: clang
cxx: clang++
f77: /opt/gcc/8.2.0/bin/gfortran
fc: /opt/gcc/8.2.0/bin/gfortran
- compiler:
spec: clang@develop-stage2
operating_system: cnl6
modules:
- llvm-stage2
target: any
paths:
cc: clang
cxx: clang++
f77: /opt/gcc/8.2.0/bin/gfortran
fc: /opt/gcc/8.2.0/bin/gfortran
- compiler:
spec: intel@19.0.5
operating_system: cnl6
modules:
- intel/19.0.5.281
target: x86_64
paths:
cc: icc
cxx: icpc
f77: ifort
fc: ifort
- compiler:
spec: clang@develop-stage1
operating_system: sles12
target: any
modules:
- llvm-stage1
paths:
cc: clang
cxx: clang++
f77: /opt/gcc/8.2.0/bin/gfortran
fc: /opt/gcc/8.2.0/bin/gfortran
- compiler:
spec: clang@develop-stage2
operating_system: sles12
modules:
- llvm-stage2
target: any
paths:
cc: clang
cxx: clang++
f77: /opt/gcc/8.2.0/bin/gfortran
fc: /opt/gcc/8.2.0/bin/gfortran
config:
install_tree: $WDIR/spack-share/opt
module_roots:
tcl: $WDIR/wbin/modulefiles
build_stage:
- /var/tmp/$user/spack-stage
- $spack/var/spack/stage
verify_ssl: true
checksum: true
dirty: false
source_cache: $WDIR/spack-share/cache
misc_cache: $WDIR/spack-share/mcache
modules:
enable:
- tcl
tcl:
naming_scheme: '{name}'
hash_length: 0
all:
autoload: 'direct'
suffixes:
"%gcc": "stage1"
"%clang": "stage2"
blacklist_implicits: false
packages:
llvm:
variants: "+all_targets~libcxx+compiler-rt~gold~internal_unwind~lld~lldb~polly"
python:
version: [3.8.0]
openmpi:
version: [3.1.5]
all:
target: [x86_64]
###############################################################################
spack:
###############################################################################
concretization: together
###############################################################################
include:
- ../share-general
###############################################################################
definitions:
- e4s:
- adios
- bolt
- caliper
- darshan-util
- darshan-runtime
- gasnet
- geopm
- globalarrays
- gotcha
- hdf5
- hpctoolkit
- hypre
- kokkos
- legion
- libquo
- magma
- mfem
- mpich
- openmpi
- papi
- papyrus
- paraview
- petsc
- pmix
- pdt
- qthreads
- raja
- strumpack
- sundials
- sz
- tasmanian
- tau
- trilinos
- umpire
- unifyfs
- veloc
- xsdk
- zfp
###############################################################################
specs:
- matrix:
- [$e4s]
- ["%clang@stage2"]
###############################################################################
###############################################################################
spack:
###############################################################################
include:
- ../share-general
- ../share-modules
###############################################################################
specs: []
###############################################################################
###############################################################################
spack:
###############################################################################
concretization: together
###############################################################################
include:
- ../share-general
###############################################################################
definitions:
- proxy:
- amg
- ember
- examinimd
- laghos
- macsio
- miniamr
- miniqmc
- minivite
- nekbone
- picsarlite
- sw4lite
- swfft
- thornado-mini
- xsbench
###############################################################################
specs:
- matrix:
- [$proxy]
- ["%clang@stage2"]
###############################################################################
compilers:
# power9le
- compiler:
spec: gcc@4.8.5
operating_system: centos7
target: ppc64le
modules: []
paths:
cc: /usr/bin/gcc
cxx: /usr/bin/g++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
- compiler:
spec: gcc@7.4.0
operating_system: centos7
target: ppc64le
modules:
- gcc/7.4.0
paths:
cc: gcc
cxx: g++
f77: gfortran
fc: gfortran
- compiler:
spec: clang@stage1
operating_system: centos7
target: ppc64le
modules:
- llvm-stage1
paths:
cc: clang
cxx: clang++
f77: gfortran
fc: gfortran
- compiler:
spec: clang@stage2
operating_system: centos7
modules:
- llvm-stage2
target: ppc64le
paths:
cc: clang
cxx: clang++
f77: gfortran
fc: gfortran
config:
install_tree: $WDIR/spack-share/opt
module_roots:
tcl: $WDIR/wbin/modulefiles
build_stage:
- /var/tmp/$user/spack-stage
- $spack/var/spack/stage
verify_ssl: true
checksum: true
dirty: false
source_cache: $WDIR/spack-share/cache
misc_cache: $WDIR/spack-share/mcache
modules:
enable:
- tcl
tcl:
naming_scheme: '{name}'
hash_length: 0
all:
autoload: 'direct'
suffixes:
"%gcc": "stage1"
"%llvm": "stage2"
blacklist_implicits: false
packages:
llvm:
variants: "~libcxx+compiler-rt~gold~internal_unwind~lld~lldb~polly"
python:
version: [3.8.0]
all:
target: [ppc64le]
variables:
# Avoid $HOME in my example due to my HOME being mapped elsewhere
# you will need to replace.
SCHEDULER_PARAMETERS: ""
.only-run:
# https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic
# You can add more logic but this way you
only:
- web
- schedules
# Set up these general platform 1 runner arguments
# # We can use this section in multiple jobs below
.runner_platform1:
extends: .only-run
tags:
- tag1
- tag2
- tag3
.build-e4s:
extends: .runner_platform1
stage: build-e4s
script:
- cd ${CI_PROJECT_DIR}/env/alcf/llvm
- spack install -j 4 -v ${APP}%clang@develop-stage2 arch=linux-sles12-haswell
build-adios:
extends: .build-e4s
variables:
APP: "adios"
allow_failure: true
build-bolt:
extends: .build-e4s
variables:
APP: "bolt"
allow_failure: true
build-caliper:
extends: .build-e4s
variables:
APP: "caliper"
allow_failure: true
build-darshan-util:
extends: .build-e4s
variables:
APP: "darshan-util"
allow_failure: true
build-darshan-runtime:
extends: .build-e4s
variables:
APP: "darshan-runtime"
allow_failure: true
build-gasnet:
extends: .build-e4s
variables:
APP: "gasnet"
allow_failure: true
build-geopm:
extends: .build-e4s
variables:
APP: "geopm"
allow_failure: true
build-globalarraays:
extends: .build-e4s
variables:
APP: "globalarrays"
allow_failure: true
build-gotcha:
extends: .build-e4s
variables:
APP: "gotcha"
allow_failure: true
build-hdf5:
extends: .build-e4s
variables:
APP: "hdf5"
allow_failure: true
build-hpctoolkit:
extends: .build-e4s
variables:
APP: "hpctoolkit"
allow_failure: true
build-hypre:
extends: .build-e4s
variables:
APP: "hypre"
allow_failure: true
build-kokkos:
extends: .build-e4s
variables:
APP: "kokkos"
allow_failure: true
build-legion:
extends: .build-e4s
variables:
APP: "legion"
allow_failure: true
build-libquo:
extends: .build-e4s
variables:
APP: "libquo"
allow_failure: true
build-magma:
extends: .build-e4s
variables:
APP: "magma"
allow_failure: true
build-mfem:
extends: .build-e4s
variables:
APP: "mfem"
allow_failure: true
build-mpich:
extends: .build-e4s
variables:
APP: "mpich"
allow_failure: true
build-openmpi:
extends: .build-e4s
variables:
APP: "openmpi"
allow_failure: true
build-papi:
extends: .build-e4s
variables:
APP: "papi"
allow_failure: true
build-papyrus:
extends: .build-e4s
variables:
APP: "papyrus"
allow_failure: true
build-paraview:
extends: .build-e4s
variables:
APP: "paraview"
allow_failure: true
build-petsc:
extends: .build-e4s
variables:
APP: "petsc"
allow_failure: true
build-pmix:
extends: .build-e4s
variables:
APP: "pmix"
allow_failure: true
build-pdt:
extends: .build-e4s
variables:
APP: "pdt"
allow_failure: true
build-qthreads:
extends: .build-e4s
variables:
APP: "qthreads"
allow_failure: true
build-raja:
extends: .build-e4s
variables:
APP: "raja"
allow_failure: true
build-strumpack:
extends: .build-e4s
variables:
APP: "strumpack"
allow_failure: true
build-sundials:
extends: .build-e4s
variables:
APP: "sundials"
allow_failure: true
build-sz:
extends: .build-e4s
variables:
APP: "sz"
allow_failure: true
build-tasmanian:
extends: .build-e4s
variables:
APP: "tasmanian"
allow_failure: true
build-tau:
extends: .build-e4s
variables:
APP: "tau"
allow_failure: true
build-trilinos:
extends: .build-e4s
variables:
APP: "trilinos"
allow_failure: true
build-umpire:
extends: .build-e4s
variables:
APP: "umpire"
allow_failure: true
build-unifyfs:
extends: .build-e4s
variables:
APP: "unifyfs"
allow_failure: true
build-veloc:
extends: .build-e4s
variables:
APP: "veloc"
allow_failure: true
build-xsdk:
extends: .build-e4s
variables:
APP: "xsdk"
allow_failure: true
build-zfp:
extends: .build-e4s
variables:
APP: "zfp"
allow_failure: true
variables:
SCHEDULER_PARAMETERS: ""
.only-run:
# https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic
# You can add more logic but this way you
only:
- web
- schedules
# Set up these general platform 1 runner arguments
# We can use this section in multiple jobs below
.runner_platform_fetch:
extends: .only-run
tags:
- tag1
- tag2
- tag3
.fetch-e4s:
extends: .runner_platform_fetch
stage: fetch-e4s
script:
- cd ${CI_PROJECT_DIR}/env/alcf/llvm
- spack fetch --dependencies $APP
fetch-adios:
extends: .fetch-e4s
variables:
APP: "adios"
allow_failure: true
fetch-bolt:
extends: .fetch-e4s
variables:
APP: "bolt"
allow_failure: true
fetch-caliper:
extends: .fetch-e4s
variables:
APP: "caliper"
allow_failure: true
fetch-darshani-util:
extends: .fetch-e4s
variables: