Skip to content

Commit

Permalink
CI: update GHA, setup Codecov, setup dependabot, remove Azure
Browse files Browse the repository at this point in the history
  • Loading branch information
dalcinl committed Apr 24, 2024
1 parent 0bacc30 commit 69562d9
Show file tree
Hide file tree
Showing 8 changed files with 115 additions and 155 deletions.
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
86 changes: 67 additions & 19 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,77 @@
name: github-CI
name: main

on: [push]
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:

jobs:
build:

test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
name: Python ${{ matrix.python-version }} example
os:
- ubuntu-latest
- macos-latest
mpi:
- mpich
- openmpi
py:
# - "3.7"
# - "3.8"
# - "3.9"
- "3.10"
- "3.11"
- "3.12"

steps:
- uses: actions/checkout@v3
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: setup-conda
uses: s-weigand/setup-conda@v1

- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
update-conda: true
python-version: ${{ matrix.python-version }}
conda-channels: anaconda, conda-forge
- run: conda --version
- run: which python
python-version: ${{ matrix.py }}

- run: |
conda config --set always_yes yes
conda install -n root conda-build numpy fftw
conda build ./conf
# Install fftw
case $(uname) in
Linux)
sudo apt update
sudo apt install -y -q libfftw3-dev
;;
Darwin)
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
brew install fftw
;;
esac
- run: python -m pip install -U pip build

- run: python -m build

- uses: mpi4py/setup-mpi@v1
with:
mpi: ${{ matrix.mpi }}

- run: pip install -vvv dist/mpi4py_fft-*.whl
env:
CFLAGS: "-O0"

- run: pip install -r conf/requirements-test.txt

- if: matrix.mpi == 'mpich' && startsWith(matrix.os, 'ubuntu')
run: ./runtests.sh
working-directory: tests

- if: matrix.mpi == 'mpich' && startsWith(matrix.os, 'ubuntu')
uses: codecov/codecov-action@v4
with:
files: test/coverage.xml
name: ${{ matrix.os }}-${{ matrix.mpi }}-${{ matrix.py }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ _templates/
*.dat
*.html
*.xml
*.txt
*.h5
*.nc
*.xdmf
Expand Down
83 changes: 0 additions & 83 deletions azure-pipelines.yml

This file was deleted.

3 changes: 3 additions & 0 deletions conf/requirements-test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
coverage
pyfftw; sys_platform == 'linux' and python_version < '3.12'
scipy
80 changes: 36 additions & 44 deletions tests/runtests.sh
Original file line number Diff line number Diff line change
@@ -1,47 +1,39 @@
#!/bin/sh
set -e

PY=$(python -c 'import sys; print(sys.version_info.major)')
export OMPI_MCA_plm=isolated
export OMPI_MCA_btl_vader_single_copy_mechanism=none
export OMPI_MCA_rmaps_base_oversubscribe=yes

if [ $PY -eq 3 ]; then
# coverage only for python version 3

python -m coverage erase

python -m coverage run -m test_fftw
python -m coverage run -m test_libfft
python -m coverage run -m test_io
python -m coverage run -m test_darray
mpiexec -n 2 python -m coverage run -m test_pencil

#mpiexec -n 4 python -m coverage test_pencil.py
#mpiexec -n 8 python -m coverage test_pencil.py
mpiexec -n 2 python -m coverage run -m test_mpifft
#mpiexec -n 4 python -m coverage test_mpifft.py
# mpiexec -n 8 python -m coverage test_mpifft.py
# mpiexec -n 12 python -m coverage test_mpifft.py
mpiexec -n 2 python -m coverage run spectral_dns_solver.py
mpiexec -n 2 python -m coverage run -m test_io
#mpiexec -n 4 python -m coverage run -m test_io
mpiexec -n 2 python -m coverage run -m test_darray
#mpiexec -n 4 python -m coverage run -m test_darray

python -m coverage combine

else
python test_fftw.py
python test_libfft.py
mpiexec -n 2 python test_pencil.py
#mpiexec -n 4 python test_pencil.py
#mpiexec -n 8 python test_pencil.py
mpiexec -n 2 python test_mpifft.py
#mpiexec -n 4 python test_mpifft.py
# mpiexec -n 8 python test_mpifft.py
# mpiexec -n 12 python test_mpifft.py
mpiexec -n 2 python test_io.py
mpiexec -n 2 python test_darray.py
mpiexec -n 2 python spectral_dns_solver.py
fi
export OMPI_MCA_plm_ssh_agent=false
export OMPI_MCA_pml=ob1
export OMPI_MCA_btl=tcp,self
export OMPI_MCA_mpi_yield_when_idle=true
export OMPI_MCA_btl_base_warn_component_unused=false
export OMPI_MCA_rmaps_base_oversubscribe=true
export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe

set -x

python -m coverage erase

python -m coverage run -m test_fftw
python -m coverage run -m test_libfft
python -m coverage run -m test_io
python -m coverage run -m test_darray

mpiexec -n 2 python -m coverage run -m test_pencil
mpiexec -n 4 python -m coverage run -m test_pencil
#mpiexec -n 8 python -m coverage test_pencil.py

mpiexec -n 2 python -m coverage run -m test_mpifft
mpiexec -n 4 python -m coverage run -m test_mpifft
#mpiexec -n 8 python -m coverage test_mpifft.py
#mpiexec -n 12 python -m coverage test_mpifft.py

mpiexec -n 2 python -m coverage run -m test_io
mpiexec -n 4 python -m coverage run -m test_io

mpiexec -n 2 python -m coverage run -m test_darray
mpiexec -n 4 python -m coverage run -m test_darray

mpiexec -n 2 python -m coverage run spectral_dns_solver.py

python -m coverage combine
python -m coverage xml
4 changes: 2 additions & 2 deletions tests/test_mpifft.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@ def test_mpifft():
fft.backward.input_array.shape)
assert (fft.backward.output_pencil.subshape ==
fft.backward.output_array.shape)
assert np.alltrue(np.array(fft.global_shape(True)) == np.array(fft.forward.output_pencil.shape))
assert np.alltrue(np.array(fft.global_shape(False)) == np.array(fft.forward.input_pencil.shape))
assert np.all(np.array(fft.global_shape(True)) == np.array(fft.forward.output_pencil.shape))
assert np.all(np.array(fft.global_shape(False)) == np.array(fft.forward.input_pencil.shape))
ax = -1 if axes is None else axes[-1] if isinstance(axes[-1], int) else axes[-1][-1]
assert fft.forward.input_pencil.substart[ax] == 0
assert fft.backward.output_pencil.substart[ax] == 0
Expand Down
7 changes: 1 addition & 6 deletions tests/test_speed.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
from time import time
import numpy as np
import pyfftw
import scipy.fftpack as sp
from mpi4py_fft import fftw
import pickle

try:
import pyfftw
except ImportError:
print('pyFFTW not available')
raise SystemExit(0)

try:
#fftw.import_wisdom('wisdom.dat')
pyfftw.import_wisdom(pickle.load(open('pyfftw.wisdom', 'rb')))
Expand Down

0 comments on commit 69562d9

Please sign in to comment.