Skip to content

speed up build

speed up build #387

Workflow file for this run

# Adapted from: https://github.com/satu0king/Github-Documentation-With-Doxygen
# This is a basic workflow to help you get started with Actions
name: flare
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on: [push, pull_request]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
strategy:
matrix:
omp: [OFF, ON]
lapack: [OFF, ON]
python-version: ["3.10", "3.11", "3.12"]
name: "(OpenMP, Lapack, Python) ="
# The type of runner that the job will run on
runs-on: ubuntu-latest
env:
BUILD_DIR: build_${{ matrix.omp }}_${{ matrix.lapack }}
CC: gcc-9
CXX: g++-9
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Build
run: |
sudo apt install liblapacke liblapacke-dev libopenmpi-dev
mkdir ${BUILD_DIR}
cd ${BUILD_DIR}
if [ "${{ matrix.omp }}" = "ON" ]; then
unset NO_OMP
else
export NO_OMP=1
fi
if [ "${{ matrix.lapack }}" = "ON" ]; then
unset NO_LAPACK
else
export NO_LAPACK=1
fi
echo "OpenMP ${{ matrix.omp }}"
echo "Lapack ${{ matrix.lapack }}"
cmake ..
cmake --build . -j4
cp _C_flare* ../flare/bffs/sgp
cd ctests
./tests
# - name: Install LAMMPS
# run: |
# git clone --depth 1 https://github.com/lammps/lammps.git lammps
# cd lammps/src
# cp pair_hybrid.* pair_lj_cut.* ..
# rm pair_*.cpp pair_*.h
# mv ../pair_hybrid.* ../pair_lj_cut.* .
# cp MANYBODY/pair_tersoff.* .
# rm MANYBODY/pair_*.*
# rm MANYBODY/fix_*.*
# mv pair_tersoff.* MANYBODY/
# cp KOKKOS/pair_kokkos.* .
# rm KOKKOS/pair_*.*
# mv pair_kokkos.* KOKKOS/
# cd ../..
# cd lammps_plugins
# ./install.sh $(pwd)/../lammps
# cd ..
# sudo cp -r ${BUILD_DIR}/External/Eigen3/Eigen /usr/include
# cd lammps
# mkdir build
# cd build
# cmake ../cmake -DPKG_KOKKOS=ON -DKokkos_ENABLE_OPENMP=ON -DPKG_MANYBODY=ON
# make -j4
- name: Pip install
run: |
pip install -U codecov pytest pytest-cov pytest_mock Sphinx sphinx-rtd-theme breathe nbsphinx setuptools
pip install -r requirements.txt
- name: Patch ASE
run: |
ase_file="$(dirname $(python3 -c 'import ase; print(ase.__file__)'))/calculators/lammpsrun.py"
sed -i 's/line.startswith(_custom_thermo_mark)/line.strip\(\).startswith\("Step"\)/g' $ase_file
- name: Run tests
run: |
export lmp=$(pwd)/lammps/build/lmp
cd tests
pytest
# - name: Run LAMMPS tests with Kokkos
# run: |
# export lmp="$(pwd)/lammps/build/lmp -k on t 4 -sf kk -pk kokkos newton on neigh full"
# cd tests
# pytest test_lammps.py
# - name: Install Sphinx and Breathe
# run: |
# sudo apt-get update
# sudo apt-get install python3-sphinx python3-sphinx-rtd-theme python3-breathe python3-nbsphinx
# - name: Run Doxygen
# uses: mattnotmitt/[email protected]
# with:
# # Path to Doxyfile
# doxyfile-path: "./Doxyfile" # default is ./Doxyfile
# # Working directory
# working-directory: "./docs" # default is .
# - name: Run Sphinx
# run: |
# export PYTHONPATH=$PYTHONPATH:$PWD/lammps/python
# cd docs
# pwd
# ls
# make html
# - name: Publish the docs
# uses: peaceiris/actions-gh-pages@v3
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
# # Default Doxyfile build documentation to html directory.
# # Change the directory if changes in Doxyfile
# publish_dir: ./docs/build/html
# if: github.event_name == 'pull_request' && matrix.lapack == 'on' && matrix.omp == 'on'
# - name: Run tutorial
# run: |
# cd tests
# # Download colab notebook
# export fileid="18_pTcWM19AUiksaRyCgg9BCpVyw744xv"
# wget -O tutorial.ipynb 'https://docs.google.com/uc?export=download&id='${fileid}
# # Convert notebook into python script
# pip install -U jupyter nbconvert
# jupyter nbconvert --to script tutorial.ipynb
# # Remove bash commands in the notebook
# sed '/!/d' tutorial.txt > tutorial.py
# cat test_tutorial.py tutorial.py > tuttest.py
# # Download datasets needed for the tutorial
# wget http://quantum-machine.org/gdml/data/npz/aspirin_dft.npz
# wget https://www.ctcms.nist.gov/potentials/Download/1999--Mishin-Y-Farkas-D-Mehl-M-J-Papaconstantopoulos-D-A--Al/2/Al99.eam.alloy
# # Run script
# pytest -s tuttest.py
# # Remove output files
# rm Al* aspirin_dft.npz tutorial.ipynb tuttest.py tutorial.py tutorial.txt