Skip to content

workflow draft

workflow draft #602

name: Build and test Python wheels
# testing only should be commented out in the final version
on: [push, pull_request]
# this is the release version
#on:
# push:
# tags:
# - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
build_wheels_unix:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, macos-13, windows-2022]
include:
- os: ubuntu-22.04
toolchain: gcc
arch_flags: "-march=x86-64" # probably -march=x86-64_v2 is safe
- os: macos-13
toolchain: llvm
arch_flags: "-mcpu=apple-m3"
- os: windows-2022
toolchain: llvm
arch_flags: "-march=x86-64_v2" # Windows11 requires avx2 so this should be fine
steps:
- uses: actions/checkout@v4
- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
compiler: ${{ matrix.toolchain }}
vcvarsall: ${{ contains(matrix.os, 'windows') }}
cmake: true
ninja: true
vcpkg: false
cppcheck: false
clangtidy: false
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- name: Build finufft wheels
shell: bash
run: |
python -m pip wheel python/finufft/ --wheel-dir=wheelhouse \
-C cmake.define.CMAKE_BUILD_TYPE=Release \
-C cmake.define.FINUFFT_ARCH_FLAGS=${{ matrix.arch_flags }} \
-C cmake.define.FINUFFT_USE_DUCC0=OFF \
-C cmake.define.CMAKE_GENERATOR=Ninja \
-C cmake.define.CMAKE_GENERATOR_PLATFORM=
# Required for CUDA
- name: Set up GCC 11
shell: bash
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y gcc-11 g++-11
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 60
sudo update-alternatives --set gcc /usr/bin/gcc-11
sudo update-alternatives --set g++ /usr/bin/g++-11
- name: Install cuda
if: runner.os != 'macOS' # Skip this step on macOS
uses: Jimver/[email protected]
with:
cuda: '11.4.0'
- name: Build cufinufft wheels
if: runner.os != 'macOS' # Skip this step on macOS
shell: bash
run: |
python -m pip wheel python/cufinufft/ --wheel-dir=wheelhouse \
-C cmake.define.CMAKE_BUILD_TYPE=Release \
-C cmake.define.FINUFFT_ARCH_FLAGS=${{ matrix.arch_flags }} \
-C cmake.define.FINUFFT_USE_DUCC0=OFF \
-C cmake.define.CMAKE_GENERATOR=Ninja \
-C cmake.define.CMAKE_GENERATOR_PLATFORM=
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
path: ./wheelhouse/*.whl