From f6fa64f979988f30f1713d9ac289f57d6acb48f9 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Fri, 3 Feb 2023 20:33:34 -0600 Subject: ci: add minimal gpu testing stack (#35251) * ci: add minimal gpu testing stack * kokkos +cuda requires +wrapper... * require pass * add raja+cuda --- share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml | 37 +++ .../gitlab/cloud_pipelines/stacks/e4s/spack.yaml | 1 + .../cloud_pipelines/stacks/gpu-tests/spack.yaml | 330 +++++++++++++++++++++ 3 files changed, 368 insertions(+) create mode 100644 share/spack/gitlab/cloud_pipelines/stacks/gpu-tests/spack.yaml (limited to 'share') diff --git a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml index a039d9cc5b..c02b3af28d 100644 --- a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml +++ b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml @@ -323,6 +323,43 @@ e4s-protected-build: - artifacts: True job: e4s-protected-generate +######################################## +# GPU Testing Pipeline +######################################## +.gpu-tests: + variables: + SPACK_CI_STACK_NAME: gpu-tests + +gpu-tests-pr-generate: + extends: [ ".gpu-tests", ".pr-generate"] + image: ecpe4s/ubuntu20.04-runner-x86_64:2023-01-01 + +gpu-tests-protected-generate: + extends: [ ".gpu-tests", ".protected-generate"] + image: ecpe4s/ubuntu20.04-runner-x86_64:2023-01-01 + +gpu-tests-pr-build: + extends: [ ".gpu-tests", ".pr-build" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: gpu-tests-pr-generate + strategy: depend + needs: + - artifacts: True + job: gpu-tests-pr-generate + +gpu-tests-protected-build: + extends: [ ".gpu-tests", ".protected-build" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: gpu-tests-protected-generate + strategy: depend + needs: + - artifacts: True + job: gpu-tests-protected-generate + ######################################## # E4S OneAPI Pipeline ######################################## diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index 6790aeef56..8b961a32e0 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -270,6 +270,7 @@ spack: match_behavior: first mappings: + - match: - hipblas - llvm diff --git a/share/spack/gitlab/cloud_pipelines/stacks/gpu-tests/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/gpu-tests/spack.yaml new file mode 100644 index 0000000000..8d7808c225 --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/stacks/gpu-tests/spack.yaml @@ -0,0 +1,330 @@ +spack: + view: false + + concretizer: + reuse: false + unify: false + + config: + build_jobs: 32 + concretizer: clingo + install_tree: + root: /home/software/spack + padded_length: 512 + projections: + all: '{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}' + + packages: + all: + compiler: [gcc@11.1.0] + providers: + blas: [openblas] + mpi: [mpich] + target: [x86_64] + variants: +mpi amdgpu_target=gfx90a cuda_arch=80 + tbb: + require: "intel-tbb" + binutils: + variants: +ld +gold +headers +libiberty ~nls + boost: + variants: +python +filesystem +iostreams +system + cuda: + version: [11.7.0] + 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 + paraview: + # Don't build GUI support or GLX rendering for HPC/container deployments + require: "@5.11 ~qt+osmesa" + python: + version: [3.8.13] + trilinos: + require: +amesos +amesos2 +anasazi +aztec +boost +epetra +epetraext + +ifpack +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu + +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stratimikos + +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long + xz: + variants: +pic + mesa: + version: [21.3.8] + + specs: + - kokkos +rocm amdgpu_target=gfx90a + - kokkos +wrapper +cuda cuda_arch=80 ^cuda@11.7 + - raja +cuda cuda_arch=80 ^cuda@11.7 + + mirrors: { "mirror": "s3://spack-binaries/develop/gpu-tests" } + + gitlab-ci: + + script: + - uname -a || true + - grep -E 'vendor|model name' /proc/cpuinfo 2>/dev/null | sort -u || head -n10 /proc/cpuinfo 2>/dev/null || true + - nproc + - curl -Lfs 'https://github.com/JuliaBinaryWrappers/GNUMake_jll.jl/releases/download/GNUMake-v4.3.0+1/GNUMake.v4.3.0.x86_64-linux-gnu.tar.gz' -o gmake.tar.gz + - printf 'fef1f59e56d2d11e6d700ba22d3444b6e583c663d6883fd0a4f63ab8bd280f0f gmake.tar.gz' | sha256sum --check --strict --quiet + - tar -xzf gmake.tar.gz -C /usr bin/make 2> /dev/null + - . "./share/spack/setup-env.sh" + - spack --version + - spack arch + - cd ${SPACK_CONCRETE_ENV_DIR} + - spack env activate --without-view . + - spack config add "config:install_tree:projections:${SPACK_JOB_SPEC_PKG_NAME}:'morepadding/{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}'" + - mkdir -p ${SPACK_ARTIFACTS_ROOT}/user_data + # AWS runners mount E4S public key (verification), UO runners mount public/private (signing/verification) + - if [[ -r /mnt/key/e4s.gpg ]]; then spack gpg trust /mnt/key/e4s.gpg; fi + # UO runners mount intermediate ci public key (verification), AWS runners mount public/private (signing/verification) + - if [[ -r /mnt/key/intermediate_ci_signing_key.gpg ]]; then spack gpg trust /mnt/key/intermediate_ci_signing_key.gpg; fi + - if [[ -r /mnt/key/spack_public_key.gpg ]]; then spack gpg trust /mnt/key/spack_public_key.gpg; fi + - spack --color=always --backtrace ci rebuild --tests > >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_out.txt) 2> >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_err.txt >&2) + + after_script: + - cat /proc/loadavg || true + + image: ecpe4s/ubuntu20.04-runner-x86_64:2023-01-01 + + broken-tests-packages: + - gptune + + match_behavior: first + mappings: + - match: + - kokkos +rocm amdgpu_target=gfx90a + runner-attributes: + tags: [ "rocm-5.4.0", "mi210" ] + variables: + CI_JOB_SIZE: large + + - match: + - kokkos +cuda cuda_arch=80 + runner-attributes: + tags: [ "cuda-11.7", "a100" ] + variables: + CI_JOB_SIZE: large + + - match: + - raja +cuda cuda_arch=80 + runner-attributes: + tags: [ "cuda-11.7", "a100" ] + variables: + CI_JOB_SIZE: large + + - match: + - hipblas + - llvm + - llvm-amdgpu + - rocblas + - paraview + - py-torch + runner-attributes: + tags: [ "spack", "huge", "x86_64" ] + variables: + CI_JOB_SIZE: huge + KUBERNETES_CPU_REQUEST: 11000m + KUBERNETES_MEMORY_REQUEST: 42G + + - match: + - cuda + - dealii + - dray + - dyninst + - ginkgo + - hpx + - kokkos-kernels + - kokkos-nvcc-wrapper + - magma + - mfem + - mpich + - nvhpc + - oce + - openturns + - plumed + - precice + - py-tensorflow + - qt + - raja + - rocfft + - rocsolver + - rocsparse + - rust + - slate + - trilinos + - visit + - vtk + - vtk-m + - warpx + runner-attributes: + tags: [ "spack", "large", "x86_64" ] + variables: + CI_JOB_SIZE: large + KUBERNETES_CPU_REQUEST: 8000m + KUBERNETES_MEMORY_REQUEST: 12G + + - match: + - adios2 + - amrex + - archer + - ascent + - axom + - binutils + - blaspp + - boost + - butterflypack + - cabana + - caliper + - camp + - chai + - conduit + - datatransferkit + - faodel + - ffmpeg + - fftw + - fortrilinos + - gperftools + - gptune + - hdf5 + - heffte + - hpctoolkit + - hwloc + - hypre + - kokkos + - lammps + - lapackpp + - legion + - libzmq + - llvm-openmp-ompt + - mbedtls + - netlib-scalapack + - omega-h + - openmpi + - openpmd-api + - pagmo2 + - papyrus + - parsec + - pdt + - petsc + - pumi + - py-ipython-genutils + - py-petsc4py + - py-scipy + - py-statsmodels + - py-warlock + - py-warpx + - pygmo + - slepc + - slurm + - strumpack + - sundials + - superlu-dist + - tasmanian + - tau + - upcxx + - vtk-h + - zfp + runner-attributes: + tags: [ "spack", "medium", "x86_64" ] + variables: + CI_JOB_SIZE: "medium" + KUBERNETES_CPU_REQUEST: "2000m" + KUBERNETES_MEMORY_REQUEST: "4G" + + - match: + - alsa-lib + - ant + - antlr + - argobots + - automake + - berkeley-db + - bison + - blt + - cmake + - curl + - darshan-util + - diffutils + - exmcutils + - expat + - flit + - freetype + - gdbm + - gotcha + - hpcviewer + - jansson + - json-c + - libbsd + - libevent + - libjpeg-turbo + - libnrm + - libpng + - libunistring + - lua-luaposix + - m4 + - mpfr + - ncurses + - openblas + - openjdk + - papi + - parallel-netcdf + - pcre2 + - perl-data-dumper + - pkgconf + - py-alembic + - py-idna + - py-testpath + - qhull + - snappy + - swig + - tar + - tcl + - texinfo + - unzip + - util-linux-uuid + - util-macros + - yaml-cpp + - zlib + - zstd + runner-attributes: + tags: [ "spack", "small", "x86_64" ] + variables: + CI_JOB_SIZE: "small" + KUBERNETES_CPU_REQUEST: "500m" + KUBERNETES_MEMORY_REQUEST: "500M" + + - match: ['os=ubuntu20.04'] + runner-attributes: + tags: ["spack", "x86_64"] + variables: + CI_JOB_SIZE: "default" + + broken-specs-url: "s3://spack-binaries/broken-specs" + + service-job-attributes: + before_script: + - . "./share/spack/setup-env.sh" + - spack --version + image: ecpe4s/ubuntu20.04-runner-x86_64:2023-01-01 + tags: ["spack", "public", "x86_64"] + + signing-job-attributes: + image: { "name": "ghcr.io/spack/notary:latest", "entrypoint": [""] } + tags: ["spack", "aws"] + script: + - aws s3 sync --exclude "*" --include "*spec.json*" ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache /tmp + - /sign.sh + - aws s3 sync --exclude "*" --include "*spec.json.sig*" /tmp ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache + + cdash: + build-group: GPU Testing + url: https://cdash.spack.io + project: Spack Testing + site: Cloud Gitlab Infrastructure -- cgit v1.2.3-60-g2f50