From 3c876783a5cd88d30c13551f9f4e30b0c36a28d7 Mon Sep 17 00:00:00 2001 From: James Le Houx Date: Mon, 30 Mar 2026 08:15:05 +0000 Subject: [PATCH 1/3] Fix GPU wheels versioned as 4.0.3.dev0 instead of release tag version The CIBW_BEFORE_BUILD sed command that renames the package to openimpala-cuda dirties the git working tree. setuptools_scm's guess-next-dev scheme then produces X.Y.Z+1.dev0 instead of the tagged version. Fix by setting SETUPTOOLS_SCM_PRETEND_VERSION from the release tag in both CPU and GPU wheel workflows. https://claude.ai/code/session_01RKnn97qiD7sbCeABHH3eQk --- .github/workflows/pypi-wheels-cpu.yml | 8 ++++++++ .github/workflows/pypi-wheels-gpu.yml | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/.github/workflows/pypi-wheels-cpu.yml b/.github/workflows/pypi-wheels-cpu.yml index 9fd6762..242dfe4 100644 --- a/.github/workflows/pypi-wheels-cpu.yml +++ b/.github/workflows/pypi-wheels-cpu.yml @@ -18,6 +18,13 @@ jobs: submodules: recursive # Fetches Catch2, nlohmann/json, or pybind11 if needed fetch-depth: 0 + - name: Extract version from tag + id: version + run: | + # Strip leading 'v' from tag (e.g. v4.0.2 -> 4.0.2) + VERSION="${GITHUB_REF_NAME#v}" + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + - name: Set up Python uses: actions/setup-python@v5 with: @@ -130,6 +137,7 @@ jobs: CMAKE_CXX_COMPILER="mpicxx" CMAKE_PREFIX_PATH="/usr/local" CMAKE_GENERATOR="Unix Makefiles" + SETUPTOOLS_SCM_PRETEND_VERSION="${{ steps.version.outputs.version }}" # Vendor libraries into the wheel, but exclude host-specific MPI and # runtime libraries that users must provide on their system. diff --git a/.github/workflows/pypi-wheels-gpu.yml b/.github/workflows/pypi-wheels-gpu.yml index f7023bf..0b663ff 100644 --- a/.github/workflows/pypi-wheels-gpu.yml +++ b/.github/workflows/pypi-wheels-gpu.yml @@ -18,6 +18,13 @@ jobs: submodules: recursive fetch-depth: 0 + - name: Extract version from tag + id: version + run: | + # Strip leading 'v' from tag (e.g. v4.0.2 -> 4.0.2) + VERSION="${GITHUB_REF_NAME#v}" + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + - name: Set up Python uses: actions/setup-python@v5 with: @@ -143,6 +150,7 @@ jobs: CMAKE_PREFIX_PATH="/usr/local" CMAKE_GENERATOR="Unix Makefiles" CMAKE_ARGS="-DGPU_BACKEND=CUDA '-DCMAKE_CUDA_ARCHITECTURES=60;70;75;80;86;89;90' -DCMAKE_CUDA_HOST_COMPILER=/opt/rh/gcc-toolset-13/root/usr/bin/g++" + SETUPTOOLS_SCM_PRETEND_VERSION="${{ steps.version.outputs.version }}" # Vendor libraries but exclude host-specific MPI, OpenMP, Fortran runtime, # and CUDA runtime libraries (users must have CUDA toolkit installed). From 1af3272dd99b3f5cab46f6f530b8b960ec889ff5 Mon Sep 17 00:00:00 2001 From: James Le Houx Date: Mon, 30 Mar 2026 08:15:40 +0000 Subject: [PATCH 2/3] Add pre-existing paper and figure files https://claude.ai/code/session_01RKnn97qiD7sbCeABHH3eQk --- figure.pdf | Bin 0 -> 39520 bytes figure.png | Bin 0 -> 280911 bytes figure.py | 112 ++++++++++++++++++++++++++++++++++++ paper.bib | 166 +++++++++++++++++++++++++++++++++++++---------------- paper.md | 67 +++++++++++++++++---- 5 files changed, 286 insertions(+), 59 deletions(-) create mode 100644 figure.pdf create mode 100644 figure.png create mode 100644 figure.py diff --git a/figure.pdf b/figure.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4a6c32aa9bafab4478ddf47a32b3e8a86a8d3c6f GIT binary patch literal 39520 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