Skip to content

Merge pull request #355 from edoapra/craympi #938

Merge pull request #355 from edoapra/craympi

Merge pull request #355 from edoapra/craympi #938

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-20.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
f77: ifort
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: macos-13
experimental: true
mpi_impl: mpich
armci_network: mpi-pr
f77: ifort
cc: icc
config_opts: LIBS=-lifcore
oneapi: /Users/runner/apps/oneapi
- os: ubuntu-20.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-13
experimental: true
mpi_impl: mpich
armci_network: mpi-ts
config_opts: "--disable-static --enable-shared"
f77: gfortran-13
cc: clang
- os: macos-13
experimental: true
use_cmake: "Y"
mpi_impl: mpich
armci_network: mpi-pr
f77: gfortran-13
cc: clang
- os: ubuntu-20.04
experimental: true
use_cmake: "Y"
mpi_impl: openmpi
armci_network: mpi-pr
f77: gfortran
cc: gcc
- os: ubuntu-20.04
experimental: true
use_cmake: "Y"
mpi_impl: openmpi
armci_network: mpi-ts
f77: gfortran
cc: gcc
- os: ubuntu-20.04
experimental: true
mpi_impl: intel
armci_network: mpi-ts
f77: ifort
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
;;
esac
if [[ "$F77" == "ifort" ]] || [[ "$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: 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" == "ifort" ]] || [[ "$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" == "ifort" ]] || [[ "$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" == "ifort" ]] || [[ "$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