Merge branch 'develop' of github.com:GlobalArrays/ga into develop #1188
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: GlobalArrays_CI | |
| on: | |
| push: | |
| pull_request: | |
| release: | |
| schedule: | |
| - cron: '0 0 * * SUN' | |
| repository_dispatch: | |
| types: [backend_automation] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| experimental: [false] | |
| mpi_impl: | |
| - openmpi | |
| - mpich | |
| armci_network: | |
| - mpi3 | |
| - mpi-ts | |
| - ofi | |
| - armci | |
| - mpi-pr | |
| f77: | |
| - gfortran-12 | |
| cc: | |
| - clang | |
| - gcc | |
| include: | |
| - os: ubuntu-latest | |
| experimental: true | |
| mpi_impl: mpich | |
| armci_network: mpi-ts | |
| f77: gfortran-11 | |
| cc: gcc-11 | |
| - os: ubuntu-22.04 | |
| experimental: true | |
| mpi_impl: mpich | |
| armci_network: mpi-pr | |
| f77: gfortran-10 | |
| cc: gcc-10 | |
| use_cmake: "Y" | |
| - os: ubuntu-latest | |
| experimental: true | |
| mpi_impl: intel | |
| armci_network: sockets | |
| config_opts: --enable-i4 --disable-openmp | |
| f77: ifx | |
| cc: icx | |
| oneapi: /opt/intel/oneapi | |
| - os: ubuntu-latest | |
| experimental: true | |
| mpi_impl: openmpi | |
| armci_network: mpi-ts | |
| config_opts: --enable-i4 --without-blas --enable-cxx --disable-f77 | |
| f77: gfortran | |
| cc: gcc | |
| - os: ubuntu-22.04 | |
| experimental: true | |
| mpi_impl: mpich | |
| armci_network: mpi-pr | |
| f77: gfortran | |
| cc: gcc | |
| use_sicm: "Y" | |
| - os: ubuntu-22.04 | |
| experimental: true | |
| mpi_impl: mpich | |
| armci_network: mpi-ts | |
| config_opts: "--disable-f77 --enable-cxx" | |
| f77: gfortran-10 | |
| cc: gcc-10 | |
| - os: macos-15 | |
| experimental: true | |
| mpi_impl: mpich | |
| armci_network: mpi-ts | |
| config_opts: "--disable-static --enable-shared" | |
| f77: gfortran-13 | |
| cc: clang | |
| - os: macos-15 | |
| experimental: true | |
| use_cmake: "Y" | |
| mpi_impl: mpich | |
| armci_network: mpi-pr | |
| f77: gfortran-13 | |
| cc: clang | |
| - os: macos-latest | |
| experimental: true | |
| use_cmake: "N" | |
| mpi_impl: mpich | |
| armci_network: mpi-pr | |
| f77: gfortran-14 | |
| cc: gcc-14 | |
| config_opts: "--disable-openmp" | |
| - os: ubuntu-22.04 | |
| experimental: true | |
| use_cmake: "Y" | |
| mpi_impl: openmpi | |
| armci_network: mpi-pr | |
| f77: gfortran | |
| cc: gcc | |
| - os: ubuntu-22.04 | |
| experimental: true | |
| use_cmake: "Y" | |
| mpi_impl: openmpi | |
| armci_network: mpi-ts | |
| f77: gfortran | |
| cc: gcc | |
| - os: ubuntu-22.04 | |
| experimental: true | |
| mpi_impl: intel | |
| armci_network: mpi-ts | |
| f77: ifx | |
| cc: gcc | |
| oneapi: /opt/intel/oneapi | |
| exclude: | |
| - armci_network: ofi | |
| os: macos-latest | |
| - armci_network: mpi-pr | |
| mpi_impl: openmpi | |
| - armci_network: mpi3 | |
| mpi_impl: openmpi | |
| - armci_network: ofi | |
| mpi_impl: openmpi | |
| fail-fast: false | |
| env: | |
| MPI_IMPL: ${{ matrix.mpi_impl }} | |
| PORT: ${{ matrix.armci_network }} | |
| ARMCI_NETWORK: ${{ matrix.armci_network }} | |
| F77: ${{ matrix.f77 }} | |
| CC: ${{ matrix.cc }} | |
| CONFIG_OPTS: ${{ matrix.config_opts}} | |
| USE_CMAKE: ${{ matrix.use_cmake }} | |
| USE_SICM: ${{ matrix.use_sicm }} | |
| continue-on-error: ${{ matrix.experimental }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 40 | |
| - name: Cache install steps | |
| id: ga-cache-install | |
| uses: actions/cache@v4 | |
| env: | |
| cache-name: cache-install-steps | |
| with: | |
| # cache files are stored in `~/apps` on Linux/macOS | |
| path: | | |
| apps | |
| key: ${{ runner.os }}-${{ matrix.mpi_impl}}-${{ matrix.armci_network}}-${{ matrix.cc }}-${{ matrix.f77 }}-${{ matrix.config_opts}}-ga-apps-v006 | |
| - name: install_packages | |
| run: | | |
| case "${{ matrix.os }}" in | |
| ubuntu*|jessie|stretch|buster) | |
| sudo apt-get update -q -y | |
| echo F77 is "$F77" | |
| if [[ "$F77" =~ gfortran-[0-9][0-9] ]] || [[ "$CC" =~ gcc-[0-9][0-9] ]]; then | |
| if [[ "$CC" =~ gcc-[0-9][0-9] ]]; then | |
| version=$(echo "$CC" | cut -d - -f 2 ) | |
| fi | |
| if [[ "$F77" =~ gfortran-[0-9][0-9] ]]; then | |
| version=$(echo "$F77" | cut -d - -f 2 ) | |
| fi | |
| sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt-get -y install gcc-$version gfortran-$version g++-$version | |
| fi | |
| sudo apt-get install -q -y gfortran | |
| ;; | |
| macos*) | |
| brew update | |
| brew install coreutils automake || true | |
| if [[ "$F77" =~ gfortran-[0-9][0-9] ]] || [[ "$CC" =~ gcc-[0-9][0-9] ]]; then | |
| if [[ "$CC" =~ gcc-[0-9][0-9] ]]; then | |
| version=$(echo "$CC" | cut -d - -f 2 ) | |
| fi | |
| if [[ "$F77" =~ gfortran-[0-9][0-9] ]]; then | |
| version=$(echo "$F77" | cut -d - -f 2 ) | |
| fi | |
| brew reinstall gcc@${version} | |
| fi | |
| ;; | |
| esac | |
| if [[ "$F77" == "ifx" ]] || [[ "$CC" == "icc" ]] || [[ "$CC" == "icx" ]]; then ./travis/install-intel.sh; source ${{ matrix.oneapi }}/setvars.sh --force; fi | |
| echo F77 is `which "$F77"` | |
| echo F77 compiler version `"$F77" -v` | |
| - name: patch source code if needed | |
| run: | | |
| if [[ "$CC" == "icx" ]]; then | |
| sudo apt-get install -q -y patch | |
| echo patching g2test to prevent icx failures | |
| patch -p0 < ./travis/g2t.patch | |
| fi | |
| - name: before_install | |
| if: steps.ga-cache-install.outputs.cache-hit != 'true' | |
| run: | | |
| pwd | |
| ls -lart | |
| mkdir -p $GITHUB_WORKSPACE/apps | |
| AUTO_CC="$CC" | |
| if [[ "$F77" == "ifx" ]] || [[ "$CC" == "icc" ]] || [[ "$CC" == "icx" ]]; then source ${{ matrix.oneapi }}/setvars.sh --force; AUTO_CC=cc; fi | |
| CC="$AUTO_CC" sh ./travis/install-autotools.sh $GITHUB_WORKSPACE/apps | |
| - name: install | |
| run: | | |
| export CI_ROOT=$GITHUB_WORKSPACE/apps | |
| if [[ "$F77" == "ifx" ]] || [[ "$CC" == "icc" ]] || [[ "$CC" == "icx" ]]; then source ${{ matrix.oneapi }}/setvars.sh --force; fi | |
| ./travis/install-mpi.sh $CI_ROOT $MPI_IMPL | |
| if [[ "$PORT" == "ofi" ]]; then ./travis/install-libfabric.sh $CI_ROOT; else true; fi | |
| if [[ "$PORT" == "armci" ]]; then ./travis/install-armci-mpi.sh $CI_ROOT; else true; fi | |
| if [[ "$USE_SICM" == "Y" ]]; then ./travis/install-sicm.sh $HOME/no_cache; else true; fi | |
| - name: compile and test global arrays | |
| if: ${{ success() }} | |
| run: | | |
| if [[ "$F77" == "ifx" ]] || [[ "$CC" == "icc" ]] || [[ "$CC" == "icx" ]] ; then source ${{ matrix.oneapi }}/setvars.sh --force; fi | |
| ./travis/build-run.sh $GITHUB_WORKSPACE/apps $PORT $MPI_IMPL $USE_CMAKE $F77 | |
| - name: after_failure | |
| if: ${{ failure() }} | |
| run: | | |
| pwd | |
| ls | |
| echo '***** cat config.log ****' | |
| find . -name config.log -exec cat {} ";" || true | |
| echo '***** cat global.fh *****' | |
| find . -name "global.fh" -exec cat {} ";" || true | |
| echo '***** global.fh* location *****' | |
| find ../.. -name "global.fh*" || true | |
| echo '***** cat global.fh.in *****' | |
| find ../.. -name "global.fh.in" -exec cat {} ";" || true | |
| cat ./test-suite.log || true | |
| echo '***** CMakeOutput.log *****' | |
| find . -name CMakeOutput.log -exec cat {} ";" || true | |
| echo '***** CMakeError.log ******' | |
| find . -name CMakeError.log -exec cat {} ";" || true | |
| echo '***********' | |
| cat /Users/runner/work/ga/ga/build/CMakeFiles/CMakeOutput.log || true | |
| echo '***********' | |
| cat /Users/runner/work/ga/ga/build/CMakeFiles/CMakeError.log || true | |
| - name: check_ga | |
| if: ${{ success() }} | |
| run: | | |
| if [[ $USE_CMAKE != "Y" ]] && [[ $USE_SICM != "Y" ]] && [[ $PORT != "ofi" ]]; then | |
| if [[ "$F77" == "ifx" ]] || [[ "$CC" == "icc" ]] || [[ "$CC" == "icx" ]] ; then source ${{ matrix.oneapi }}/setvars.sh --force; fi | |
| echo mpif90 location $(find $GITHUB_WORKSPACE/apps -name mpif90) || true | |
| MPIROOT=$MPI_IMPL | |
| if [[ $MPI_IMPL == "openmpi" ]]; then MPIROOT=open-mpi ; fi | |
| export PATH=$GITHUB_WORKSPACE/apps/$MPIROOT/bin:$PATH | |
| mpif90 -show | |
| NPROCS=4 | |
| if [[ $PORT == "mpi-pr" ]]; then NPROCS=$(($NPROCS +1)); fi | |
| echo using $NPROCS processes | |
| if [[ $MPI_IMPL == "openmpi" ]]; then | |
| make F77=$F77 check-ga MPIEXEC="timeout 20m mpirun --allow-run-as-root -mca mpi_yield_when_idle 0 --oversubscribe -np $NPROCS" || true | |
| else | |
| make F77=$F77 check-ga MPIEXEC="timeout 20m mpirun -np $NPROCS" | |
| fi | |
| fi | |
| - name: after_check_ga_failure | |
| if: ${{ failure() }} | |
| run: | | |
| find . -name "*log" | |
| find . -name "test-suite.log" | xargs -I {} bash -c 'echo "$$$$ File: {} $$$$$" && cat "{}"' || true | |
| find global/testing -name "*log" | xargs -I {} bash -c 'echo "**** File: {} *****" && cat "{}"' || true |