added docker github actions executed only with [do_extra_archs] label

This commit is contained in:
edoapra 2021-01-05 16:48:52 -08:00
parent bb24962854
commit 73b1c92bcd
No known key found for this signature in database
GPG key ID: 48E12DA1EDE9E1B0
5 changed files with 196 additions and 17 deletions

View file

@ -0,0 +1,125 @@
name: NWChem_CI_archs
on: [push, pull_request]
jobs:
build_archs:
if: "!contains(github.event.head_commit.message, 'ci skip') && contains(github.event.head_commit.message, 'do_extra_archs')"
runs-on: ubuntu-18.04
strategy:
matrix:
include:
- arch: aarch64
distro_short: ubuntu
distro: ubuntu18.04
ftarget: " TARGET=ARMV8"
blas: "build_openblas"
scalapack: "off"
nwchem_modules: "tinyqmpw"
- arch: ppc64le
distro_short: ubuntu
distro: ubuntu18.04
blas: "build_openblas"
scalapack: "on"
ftarget: " TARGET=POWER8"
nwchem_modules: "tinyqmpw"
fail-fast: false
steps:
- name: Setup cache
id: setup-cache
uses: actions/cache@v2
with:
path: |
~/cache
key: ${{ runner.os }}-${{ matrix.mpi_impl}}-${{ matrix.distro}}-${{ matrix.arch}}-nwchem-v003
- uses: actions/checkout@v2
name: Checkout
with:
fetch-depth: 40
- name: tools_checkout
run: |
ls -l
cd src/tools
./get-tools-github
cd ..
mkdir -p ../bin/LINUX64
gcc -o ../bin/LINUX64/depend.x config/depend.c
make USE_INTERNALBLAS=y nwchem_config NWCHEM_MODULES="${{ matrix.nwchem_modules }}"
make USE_INTERNALBLAS=y deps_stamp
rm -f ../bin/LINUX64/depend.x
- name: reconfig when needed
if: steps.setup-cache.outputs.cache-hit != 'true'
run: |
cd src
make USE_INTERNALBLAS=y nwchem_config NWCHEM_MODULES="nwdft driver solvation"
- uses: uraimo/run-on-arch-action@v2.0.8
name: Build and Test NWChem
id: build
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
# Not required, but speeds up builds
githubToken: ${{ github.token }}
# Create cached/volume directories on host
setup: |
mkdir -p ~/cache
# Mount the ~/cache directory as ..nwchem/cache in the container
dockerRunArgs: |
--volume "${HOME}/cache:/home/runner/work/nwchem/nwchem/cache"
#environment
env: |
FORCETARGET: ${{ matrix.ftarget }}
COMEX_MAX_NB_OUTSTANDING: 4
SIMINT_MAXAM: 3
MPI_IMPL: openmpi
ARMCI_NETWORK: MPI-TS
FC: gfortran
DISTR: ${{ matrix.distro_short }}
BLAS_ENV: ${{ matrix.blas }}
SCALAPACK_ENV: ${{ matrix.scalapack }}
shell: /bin/sh
install: |
case "${{ matrix.distro }}" in
ubuntu*|jessie|stretch|buster)
apt-get update -q -y
apt-get install -q -y sudo git gfortran libopenmpi-dev curl wget unzip perl rsync python3-dev python-dev cmake
;;
fedora*)
dnf -y update
dnf -y install git which sudo curl wget unzip openblas-serial64 openmpi-devel perl python3-devel gcc-gfortran unzip cmake patch time
;;
esac
run: |
pwd
df
ls -lrt
uname -a
lscpu
./travis/build_env.sh
echo ' done build_env '
mkdir -p cache/libext/lib || true
mkdir -p src/libext/lib || true
ls -Rl src/libext || true
ls -lRrt cache
df cache
rsync -av cache/libext/lib/* src/libext/lib/. || true
echo "cache fetched"
ls -Rl cache/libext/lib/ ||true
./travis/compile_nwchem.sh
echo ' done compiling'
rsync -av src/libext/lib/* cache/libext/lib/. || true
echo "cache stored"
ls -l cache/libext/lib/
./travis/run_qas.sh
- name: Cache check
run: |
pwd
echo HOME is $HOME || true
ls -l ~/ || true
ls -Rl ~/cache || true
ls -l ~/ || true
ls -l ~/work/ || true
ls -l ~/work/nwchem || true

View file

@ -1,6 +1,12 @@
#!/bin/bash
os=`uname`
arch=`uname -m`
dist="ubuntu"
if test -f " /usr/lib/fedora-release"; then
dist="fedora"
fi
echo dist is "$dist"
echo DISTR is "$DISTR"
if [[ "$os" == "Darwin" ]]; then
# HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall oclint || true
# HOMEBREW_NO_INSTALL_CLEANUP=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install gcc "$MPI_IMPL" openblas python3 ||true
@ -13,7 +19,15 @@ arch=`uname -m`
# HOMEBREW_NO_INSTALL_CLEANUP=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install scalapack
# fi
fi
if [[ "$os" == "Linux" ]]; then
if [[ "$os" == "Linux" ]]; then
if [[ "$DISTR" == "fedora" ]];then
sudo dnf udate; sudo dnf -y install perl perl python3-devel time patch openblas-serial64 openmpi-devel cmake gcc-gfortran unzip
# module load mpi
export PATH=/usr/lib64/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH
which mpif90
mpif90 -show
else
if [[ "$MPI_IMPL" == "openmpi" ]]; then
mpi_bin="openmpi-bin" ; mpi_libdev="libopenmpi-dev" scalapack_libdev="libscalapack-openmpi-dev"
fi
@ -24,4 +38,5 @@ if [[ "$os" == "Linux" ]]; then
sudo add-apt-repository universe && sudo apt update
# sudo apt-get -y install gfortran python3-dev python-dev cmake "$mpi_libdev" "$mpi_bin" "$scalapack_libdev" make perl libopenblas-dev python3 rsync
sudo apt-get -y install gfortran python3-dev python-dev cmake "$mpi_libdev" "$mpi_bin" make perl python3 rsync
fi
fi

View file

@ -40,7 +40,7 @@ fi
# export LDFLAGS="-L/usr/local/opt/python@3.7/lib:$LDFLAGS"
fi
if [[ -z "$TRAVIS_HOME" ]]; then
make V=1 FOPTIMIZE="$FOPT" FDEBUG="$FDOPT" -j3
make V=0 FOPTIMIZE="$FOPT" FDEBUG="$FDOPT" -j3
else
../travis/sleep_loop.sh make V=1 FOPTIMIZE="$FOPT" FDEBUG="$FDOPT" -j3
fi
@ -53,14 +53,10 @@ fi
# ls -lrt $DYLD_LIBRARY_PATH
# tail -120 make.log
elif [[ "$os" == "Linux" ]]; then
if [[ "$arch" == "aarch64" ]]; then
export MAKEFLAGS=-j8
else
export MAKEFLAGS=-j3
fi
export MAKEFLAGS=-j3
echo "$FOPT$FDOPT"
if [[ -z "$TRAVIS_HOME" ]]; then
make V=1 FOPTIMIZE="$FOPT" FDEBUG="$FDOPT" -j3
make V=0 FOPTIMIZE="$FOPT" FDEBUG="$FDOPT" -j3
else
../travis/sleep_loop.sh make V=1 FOPTIMIZE="$FOPT" FDEBUG="$FDOPT" -j3
fi

View file

@ -1,6 +1,7 @@
#- env: == default ==
os=`uname`
arch=`uname -m`
echo DISTR is "$DISTR"
if [[ -z "$TRAVIS_BUILD_DIR" ]] ; then
TRAVIS_BUILD_DIR=$(pwd)
else
@ -30,10 +31,36 @@ export USE_NOIO=1
if [[ "$BLAS_SIZE" == "4" ]]; then
export USE_64TO32=y
fi
if [[ "$DISTR" == "fedora" ]]; then
export PATH=/usr/lib64/"$MPI_IMPL"/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib64/"$MPI_IMPL"/lib:$LD_LIBRARY_PATH
fi
if [[ "$BLAS_ENV" == "internal" ]]; then
export USE_INTERNALBLAS=1
export BLAS_SIZE=8
elif [[ "$BLAS_ENV" == "build_openblas" ]]; then
export BUILD_OPENBLAS="y"
export BLAS_SIZE=8
fi
if [[ -z "$USE_INTERNALBLAS" ]]; then
export BUILD_OPENBLAS="y"
export BUILD_SCALAPACK="y"
export BLAS_SIZE=8
export SCALAPACK_SIZE=8
if [[ -z "$BLASOPT" ]] ; then
export BUILD_OPENBLAS="y"
export BLAS_SIZE=8
else
unset BUILD_OPENBLAS
fi
if [[ "$SCALAPACK_ENV" == "off" ]]; then
unset BUILD_SCALAPACK
unset SCALAPACK
unset SCALAPACK_SIZE
else
if [[ -z "$SCALAPACK" ]] ; then
export BUILD_SCALAPACK="y"
export SCALAPACK_SIZE=8
else
unset BUILD_SCALAPACK
fi
fi
fi
export NWCHEM_EXECUTABLE=$TRAVIS_BUILD_DIR/.cachedir/binaries/$NWCHEM_TARGET/nwchem_"$arch"_`echo $NWCHEM_MODULES|sed 's/ /-/g'`_"$MPI_IMPL"

View file

@ -23,7 +23,7 @@ export NWCHEM_NWPW_LIBRARY=$TRAVIS_BUILD_DIR/.cachedir/files/libraryps/
nprocs=2
do_largeqas=1
if [[ "$EXTRA_BUILD" == "1" ]] || [[ ! -z "$USE_SIMINT" ]]; then
if [[ "$EXTRA_BUILD" == "1" ]] || [[ ! -z "$USE_SIMINT" ]] || [[ "$arch" == "aarch64" ]] || [[ "$arch" == "ppc64le" ]]; then
do_largeqas=0
fi
@ -64,6 +64,9 @@ export NWCHEM_NWPW_LIBRARY=$TRAVIS_BUILD_DIR/.cachedir/files/libraryps/
esac
;;
esac
if [[ "$MPI_IMPL" == "openmpi" ]]; then
export MPIRUN_NPOPT=" --allow-run-as-root -mca mpi_yield_when_idle 0 --oversubscribe -np "
fi
echo === ls binaries cache ===
ls -lrt $TRAVIS_BUILD_DIR/.cachedir/binaries/$NWCHEM_TARGET/ || true
echo =========================
@ -79,13 +82,26 @@ export NWCHEM_NWPW_LIBRARY=$TRAVIS_BUILD_DIR/.cachedir/files/libraryps/
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs tce_ipccsd_f2 tce_eaccsd_ozone
fi
else
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs dft_he2+ prop_mep_gcube
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs cosmo_h2o_dft
# check if dft is among modules
if [[ ! $(grep -i dft $TRAVIS_BUILD_DIR/src/stubs.F| awk '/dft_input/') ]]; then
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs dft_he2+
if [[ ! $(grep -i prop $TRAVIS_BUILD_DIR/src/stubs.F| awk '/prop_input/') ]]; then
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs prop_mep_gcube
fi
if [[ ! $(grep -i cosmo $TRAVIS_BUILD_DIR/src/stubs.F| awk '/cosmo_input/') ]]; then
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs cosmo_h2o_dft
fi
else
echo ' dft_input stubbed'
fi
if [[ "$USE_SIMINT" != "1" ]] ; then
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs pspw
# check if pspw is among modules
if [[ ! $(grep -i pspw $TRAVIS_BUILD_DIR/src/stubs.F| awk '/pspw_input/') ]]; then
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs pspw
fi
fi
# check if python is among modules
if [[ $(echo ${NWCHEM_MODULES}| awk ' /python/') ]]; then
if [[ ! $(grep -i python $TRAVIS_BUILD_DIR/src/stubs.F| awk '/python_input/') ]]; then
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs pyqa3
fi
if [[ "$do_largeqas" == 1 ]]; then