Unverified Commit 3f6271d0 authored by Peter Doak's avatar Peter Doak Committed by GitHub
Browse files

Merge pull request #290 from PDoakORNL/add_github_runner_support

add files to support github runner on volta-cidev-node
parents c4b9b04f 9ad4d583
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
name: ornl CI

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  v100:
    runs-on: [self-hosted, Linux, X64, V100, CUDA]

    env:
      GH_JOBNAME: ${{matrix.jobname}}
      GH_OS: Linux
    strategy:
      fail-fast: false
      matrix:
        jobname: [
            GCC12-MPI-CUDA-Real-Full,
            ]
#            GCC12-MPI-NoMPI-CUDA-Real-Full,
#            GCC12-MPI-NoMPI-CUDA-Real-Debug-Full,

    steps:
      - name: Checkout PR branch
        uses: actions/checkout@v3

      - name: Configure
        run: test/test_automation/ci/run_step.sh configure

      - name: Build
        run: test/test_automation/ci/run_step.sh build

      - name: Test
        run: test/test_automation/ci/run_step.sh test
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include "dca/phys/dca_step/cluster_solver/shared_tools/cluster_helper.cuh"

#include <mutex>
#include <array>
#include "dca/platform/dca_gpu.h"
#include "dca/linalg/util/allocators/vectors_typedefs.hpp"

+128 −0
Original line number Diff line number Diff line
#!/bin/bash

set -x
HOST_NAME=$(hostname -s)

case "$1" in 

  # Configure DCA++ using cmake out-of-source builds 
  configure)
    
    if [ -d ${GITHUB_WORKSPACE}/../dca-build ]
    then
      echo "Found existing out-of-source build directory ${GITHUB_WORKSPACE}/../dca-build, removing"
      rm -fr ${GITHUB_WORKSPACE}/../dca-build
    fi
    
    echo "Creating new out-of-source build directory ${GITHUB_WORKSPACE}/../dca-build"
    cd ${GITHUB_WORKSPACE}/..
    mkdir dca-build
    cd dca-build
    
    # Real or Complex configuration
    case "${GH_JOBNAME}" in
      *"Real"*)
        echo 'Configure for real build'
        IS_COMPLEX=0
      ;;
      *"Complex"*)
        echo 'Configure for complex build'
        IS_COMPLEX=1
      ;; 
    esac

    if [[ "${GH_JOBNAME}" =~ (-CUDA) ]]
    then
      echo "Set PATH to cuda-11.8 to be associated with the C and C++ compilers"
        export PATH=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/cuda-11.8.0-3fgvnzslqxogwa5djfpvthlj2ebs3w4f/bin:$PATH
        echo "Set CUDACXX CMake environment variable to nvcc cuda 11.8"
        export CUDACXX=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/cuda-11.8.0-3fgvnzslqxogwa5djfpvthlj2ebs3w4f/bin/nvcc
        # Make current environment variables available to subsequent steps
        echo "PATH=$PATH" >> $GITHUB_ENV
        echo "CUDACXX=$CUDACXX" >> $GITHUB_ENV
    fi 

    # Mixed or Non-Mixed (default, full) precision, used with GPU code
    case "${GH_JOBNAME}" in
      *"Mixed"*)
        echo 'Configure for mixed precision build'
        IS_MIXED_PRECISION=1
      ;; 
      *)
        IS_MIXED_PRECISION=0
      ;;
    esac

    # Path to QMC_DATA in self-hosted CI system and point at minimum gcc-9
    if [[ "$HOST_NAME" =~ (volta-cidev-node) ]]
    then
      # use gcc-12
      export PATH=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/gcc-12.2.0-cx7pjxgmemcce4tohlmsekuo5qvgjqbl/bin:/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/ninja-1.11.1-plzpokehn3kdbcviteppqntkqun5752f/bin:/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/cmake-3.25.0-xlxorwhfz5jxpyx65ypsh2horyo7n3ef/bin:/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-9.4.0/binutils-2.38-ljwszfsihiioxxusqiwg76hsr3t7eazd/bin:/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/cuda-11.8.0-3fgvnzslqxogwa5djfpvthlj2ebs3w4f/bin:$PATH
      export LD_LIBRARY_PATH=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/gcc-12.2.0-cx7pjxgmemcce4tohlmsekuo5qvgjqbl/lib64:$LD_LIBRARY_PATH
      export CUDA_HOME=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/cuda-11.8.0-3fgvnzslqxogwa5djfpvthlj2ebs3w4f
      export CUDAHOSTCXX=g++
      export MAGMA_ROOT=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/magma-2.7.0-hzsyoya4k46b7ufbtccl7bh3yxgubcxd
      export HDF5_ROOT=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/hdf5-1.12.2-p5ew5d7whyvd7ka3bkf2q7rixojq5voy
      export OPENBLAS_ROOT=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/openblas-0.3.21-hxlxmz56qgkexpvfku2dugwacjf2auvl
      export ADIOS2_ROOT=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/adios2-2.8.3-ba3mpxuh435rvisxhorzotb53m3dgfuv
      export MPI_ROOT=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/openmpi-4.1.4-mbv4sqfzxaqfwcyhjaaammhsd56dtvl2
      export FFTW3_ROOT=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/fftw-3.3.10-hdyb4eim5ngsgkhqyiyl5ggispxqmzo5
      # Make current environment variables available to subsequent steps
      echo "PATH=$PATH" >> $GITHUB_ENV
      echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $GITHUB_ENV
    fi
    
    case "${GH_JOBNAME}" in
      *"GCC12-MPI-CUDA-"*)
        echo 'Configure for debug mode to capture asserts with gcc'
        cmake -GNinja \
              -DCMAKE_C_COMPILER=gcc \
              -DCMAKE_CXX_COMPILER=g++ \
	      -DCMAKE_CUDA_COMPILER=${CUDA_HOME}/bin/nvcc \
	      -DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler \
	      -DCMAKE_FORTRAN_COMPILER=gfortran -DCMAKE_EXE_LINKER_FLAGS_INIT="-lgfortran" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-lgfortran" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-lgfortran" \
              -DDCA_WITH_MPI=1 \
	      -DCMAKE_PREFIX_PATH=${MPI_ROOT}\;${CUDA_ROOT}\;${MAGMA_ROOT}\;${HDF5_ROOT}\;${OPENBLAS_ROOT}\;${ADIOS2_ROOT}\;${FFTW3_ROOT} \
              -DCMAKE_BUILD_TYPE=Release \
	      -DTEST_RUNNER="mpiexec" \
	      -DMPIEXEC_NUMPROC_FLAG="-n" -DMPIEXEC_PREFLAGS="-mca btl self,tcp" -DDCA_WITH_CUDA=1 -DDCA_WITH_ADIOS2=1 \
	      -DDCA_WITH_TESTS_FAST=1 \
	      -DLAPACK_LIBRARIES=${OPENBLAS_ROOT}/lib/libopenblas.a \
              ${GITHUB_WORKSPACE}
      ;;
    esac
    ;;

  # Build using ninja (~ 25 minutes on GitHub-hosted runner)
  build)
    # CUDA toolchain can be used implicitly by the compiler. Double check the location.
    if [[ "${GH_JOBNAME}" =~ (CUDA) ]]
    then
      which nvcc
    fi

    cd ${GITHUB_WORKSPACE}/../dca-build
    ninja
    ;;

  # Run deterministic tests
  test)
    
    # Run only deterministic tests (reasonable for CI) by default
    TEST_LABEL=""
    export MPI_ROOT=/home/epd/spack/opt/spack/linux-ubuntu20.04-cascadelake/gcc-12.2.0/openmpi-4.1.4-mbv4sqfzxaqfwcyhjaaammhsd56dtvl2
    export PATH=${MPI_ROOT}/bin:${PATH}
    cd ${GITHUB_WORKSPACE}/../dca-build
    
    # Add ctest concurrent parallel jobs 
    # Default for Linux GitHub Action runners
    CTEST_JOBS="1"
    
    ctest --output-on-failure $TEST_LABEL -j $CTEST_JOBS
    ;;

  *)
    echo " Invalid step" "$1"
    exit -1
    ;;
esac
+1 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
// TODO: Move domains-only tests to separate files and rename this file to function_test.cpp and the
//       test cases to FunctionTest.

#include <array>
#include <cassert>
#include <complex>
#include <cstdio>