167 lines
5.9 KiB
YAML
167 lines
5.9 KiB
YAML
name: Grid and Mesh Solver
|
|
on: [push]
|
|
|
|
env:
|
|
PETSC_VERSION: '3.20.5'
|
|
HOMEBREW_NO_ANALYTICS: 'ON' # Make Homebrew installation a little quicker
|
|
HOMEBREW_NO_AUTO_UPDATE: 'ON'
|
|
HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: 'ON'
|
|
HOMEBREW_NO_GITHUB_API: 'ON'
|
|
HOMEBREW_NO_INSTALL_CLEANUP: 'ON'
|
|
|
|
jobs:
|
|
|
|
gcc_ubuntu:
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
strategy:
|
|
matrix:
|
|
gcc_v: [9, 10, 11, 12, 13]
|
|
fail-fast: false
|
|
|
|
env:
|
|
GCC_V: ${{ matrix.gcc_v }}
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: GCC - Install
|
|
run: |
|
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-${GCC_V} gfortran-${GCC_V} g++-${GCC_V}
|
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_V} 100 \
|
|
--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${GCC_V} \
|
|
--slave /usr/bin/g++ g++ /usr/bin/g++-${GCC_V} \
|
|
--slave /usr/bin/gcov gcov /usr/bin/gcov-${GCC_V}
|
|
|
|
- name: PETSc - Cache download
|
|
id: petsc-download
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: download
|
|
key: petsc-${{ env.PETSC_VERSION }}.tar.gz
|
|
|
|
- name: PETSc - Download
|
|
if: steps.petsc-download.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget -q https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-${PETSC_VERSION}.tar.gz -P download
|
|
|
|
- name: PETSc - Prepare
|
|
run: |
|
|
tar -xf download/petsc-${PETSC_VERSION}.tar.gz -C .
|
|
export PETSC_DIR=${PWD}/petsc-${PETSC_VERSION}
|
|
export PETSC_ARCH=gcc${GCC_V}
|
|
printenv >> $GITHUB_ENV
|
|
|
|
- name: PETSc - Cache Installation
|
|
id: petsc-install
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: petsc-${{ env.PETSC_VERSION }}
|
|
key: petsc-${{ env.PETSC_VERSION }}-gcc${{ matrix.gcc_v }}-${{ hashFiles('**/petscversion.h') }}
|
|
|
|
- name: PETSc - Installation
|
|
run: |
|
|
cd petsc-${PETSC_VERSION}
|
|
./configure --with-fc=gfortran --with-cc=gcc --with-cxx=g++ \
|
|
--download-openmpi --download-fftw --download-hdf5 --download-hdf5-fortran-bindings=1 --download-zlib \
|
|
--with-mpi-f90module-visibility=1
|
|
make all
|
|
|
|
- name: DAMASK - Compile
|
|
run: |
|
|
cmake -B build/grid -DDAMASK_SOLVER=grid -DCMAKE_INSTALL_PREFIX=${PWD}
|
|
cmake --build build/grid --parallel
|
|
cmake --install build/grid
|
|
cmake -B build/mesh -DDAMASK_SOLVER=mesh -DCMAKE_INSTALL_PREFIX=${PWD}
|
|
cmake --build build/mesh --parallel
|
|
cmake --install build/mesh
|
|
|
|
- name: DAMASK - Run
|
|
run: |
|
|
./bin/DAMASK_grid -l tensionX.yaml -g 20grains16x16x16.vti -m material.yaml -w examples/grid
|
|
./bin/DAMASK_mesh -l tensionZ_3g.yaml -g cube_3grains.msh -m material.yaml -w examples/mesh
|
|
|
|
|
|
intel:
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Intel - Install
|
|
run: |
|
|
sudo apt-get remove -y \
|
|
'^aspnetcore-runtime.*' '^clang.*' '^dotnet.*' '^gfortran.*' '^mono.*' '^llvm.*' '^ruby.*' '^r-cran.*' '^r-base.*' '^dotnet.*' '^apache2.*'
|
|
sudo apt-get autoremove -y
|
|
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
|
|
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
|
|
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" \
|
|
| sudo tee /etc/apt/sources.list.d/oneAPI.list
|
|
sudo apt-get update
|
|
sudo apt-get install \
|
|
intel-basekit \
|
|
intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic intel-oneapi-compiler-fortran \
|
|
intel-oneapi-openmp intel-oneapi-mkl-devel
|
|
source /opt/intel/oneapi/setvars.sh
|
|
printenv >> $GITHUB_ENV
|
|
|
|
- name: PETSc - Cache download
|
|
id: petsc-download
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: download
|
|
key: petsc-${{ env.PETSC_VERSION }}.tar.gz
|
|
|
|
- name: PETSc - Download
|
|
if: steps.petsc-download.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget -q https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-${PETSC_VERSION}.tar.gz -P download
|
|
|
|
- name: PETSc - Prepare
|
|
run: |
|
|
tar -xf download/petsc-${PETSC_VERSION}.tar.gz -C .
|
|
sed -i "1800s/if not os.path.isfile(os.path.join(self.packageDir,self.configureName)):/if True:/g" \
|
|
./petsc-${PETSC_VERSION}/config/BuildSystem/config/package.py
|
|
export PETSC_DIR=${PWD}/petsc-${PETSC_VERSION}
|
|
export PETSC_ARCH=intel
|
|
printenv >> $GITHUB_ENV
|
|
|
|
- name: PETSc - Cache installation
|
|
id: petsc-install
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: petsc-${{ env.PETSC_VERSION }}
|
|
key: petsc-${{ env.PETSC_VERSION }}-intel-${{ hashFiles('**/petscversion.h') }}
|
|
|
|
- name: PETSc - Install
|
|
run: |
|
|
cd petsc-${PETSC_VERSION}
|
|
./configure \
|
|
--with-fc=mpiifx \
|
|
--with-cc=mpiicx \
|
|
--with-cxx=mpiicpx \
|
|
--download-fftw --download-hdf5 --download-hdf5-fortran-bindings=1 --download-zlib
|
|
make all
|
|
|
|
- name: DAMASK - Compile
|
|
run: |
|
|
cmake -B build/grid -DDAMASK_SOLVER=grid -DCMAKE_INSTALL_PREFIX=${PWD}
|
|
cmake --build build/grid --parallel
|
|
cmake --install build/grid
|
|
cmake -B build/mesh -DDAMASK_SOLVER=mesh -DCMAKE_INSTALL_PREFIX=${PWD}
|
|
cmake --build build/mesh --parallel
|
|
cmake --install build/mesh
|
|
|
|
- name: DAMASK - Run
|
|
run: |
|
|
./bin/DAMASK_grid -l tensionX.yaml -g 20grains16x16x16.vti -m material.yaml -w examples/grid
|
|
./bin/DAMASK_mesh -l tensionZ_3g.yaml -g cube_3grains.msh -m material.yaml -w examples/mesh
|