Skip to content

Commit

Permalink
Merge pull request #246 from ashvardanian/main-dev
Browse files Browse the repository at this point in the history
Handling Denormalized Values
  • Loading branch information
ashvardanian authored Jan 24, 2025
2 parents b672abb + e54e939 commit 569cc7a
Show file tree
Hide file tree
Showing 11 changed files with 607 additions and 196 deletions.
192 changes: 163 additions & 29 deletions .github/workflows/prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ jobs:
name: Test C
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: git submodule update --init --recursive
- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: |
Expand All @@ -74,8 +74,8 @@ jobs:
architecture: [x64, arm64]

steps:
- uses: actions/checkout@v4
- run: git submodule update --init --recursive
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
Expand Down Expand Up @@ -114,8 +114,8 @@ jobs:
CXX: g++-12

steps:
- uses: actions/checkout@v4
- run: git submodule update --init --recursive
- name: Checkout
uses: actions/checkout@v4

- name: Update compilers
run: |
Expand All @@ -142,8 +142,8 @@ jobs:
CXX: g++-12

steps:
- uses: actions/checkout@v4
- run: git submodule update --init --recursive
- name: Checkout
uses: actions/checkout@v4

- name: Update compilers
run: |
Expand Down Expand Up @@ -175,8 +175,8 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- run: git submodule update --init --recursive
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: moonrepo/setup-rust@v1
Expand All @@ -191,37 +191,171 @@ jobs:
runs-on: ubuntu-22.04
container: swift:5.9
steps:
- uses: actions/checkout@v4
- name: Checkout
uses: actions/checkout@v4
- name: Test Swift
run: swift test

build_wheels:
name: Build Python ${{ matrix.python-version }} for ${{ matrix.os }}
runs-on: ${{ matrix.os }}
# Compiling Python images is a nightmare, assuming the number of platforms we support
# To minimize cross-compilation we use separate runners for each platform
# https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
# https://cibuildwheel.pypa.io/en/stable/#what-does-it-do
# Available Linux images: https://cibuildwheel.pypa.io/en/stable/options/#linux-image
build_wheels_linux_x86:
name: Build Python Wheels (Linux x86)
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["37", "38", "39", "310", "311", "312", "313"]
needs: [test_python]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install Toolchain
run: |
python -m pip install cibuildwheel
cibuildwheel --output-dir wheelhouse
env:
# Matches: `cp37-manylinux_x86_64` and `cp38-musllinux_x86_64`
CIBW_BUILD: cp${{ matrix.python-version }}-*
CIBW_PLATFORM: linux
CIBW_ARCHS: x86_64

build_wheels_linux_arm:
name: Build Python Wheels (Linux ARM)
runs-on: ubuntu-24.04-arm # These are maintained by Arm, not GitHub
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["37", "38", "39", "310", "311", "312", "313"]
needs: [test_python]
steps:
- uses: actions/[email protected]
- name: Set up Python
uses: actions/[email protected]
- name: Checkout
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: 3.9
python-version: "3.11"
- name: Install Toolchain
run: |
python -m pip install cibuildwheel
cibuildwheel --output-dir wheelhouse
env:
# Matches: `cp37-manylinux_aarch64` and `cp38-musllinux_aarch64`
CIBW_BUILD: cp${{ matrix.python-version }}-*
CIBW_PLATFORM: linux
CIBW_ARCHS: aarch64

# We only need QEMU for Linux builds
- name: Setup QEMU
if: matrix.os == 'ubuntu-latest'
uses: docker/setup-qemu-action@v3
- name: Upgrade MSVC tooling
if: matrix.os == 'windows-latest'
build_wheels_macos_x86:
name: Build Python Wheels (macOS x86)
runs-on: macos-13
strategy:
matrix:
python-version: ["37", "38", "39", "310", "311", "312", "313"]
needs: [test_python]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install Toolchain
run: |
python -m pip install cibuildwheel
cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: cp${{ matrix.python-version }}-*
CIBW_PLATFORM: macos
CIBW_ARCHS: x86_64

build_wheels_macos_arm:
name: Build Python Wheels (macOS ARM)
runs-on: macos-14
strategy:
matrix:
python-version: ["38", "39", "310", "311", "312", "313"] #! Python 3.7 isn't supported on ARM macOS
needs: [test_python]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install Toolchain
run: |
python -m pip install cibuildwheel
cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: cp${{ matrix.python-version }}-*
CIBW_PLATFORM: macos
CIBW_ARCHS: arm64

build_wheels_windows:
name: Build Python Wheels (Windows)
runs-on: windows-2022
strategy:
matrix:
python-version: ["37", "38", "39", "310", "311", "312", "313"]
architecture: [AMD64] # List ARM64 separately and avoid 32-bit
#! ARM64 isn't supported for Python 3.7 and 3.8
include:
- python-version: "39"
architecture: ARM64
- python-version: "310"
architecture: ARM64
- python-version: "311"
architecture: ARM64
- python-version: "312"
architecture: ARM64
- python-version: "313"
architecture: ARM64
needs: [test_python]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Setup MSVC
uses: microsoft/setup-msbuild@v2
with:
vs-version: "17.10"
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.21.3
- name: Build wheels
run: cibuildwheel --output-dir wheelhouse
- name: Install Toolchain
run: |
python -m pip install cibuildwheel
cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: cp${{ matrix.python-version }}-win_${{ matrix.architecture }}
CIBW_PLATFORM: windows

build_wheels_other:
name: Build Python Wheels (Other Platforms)
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["37", "38", "39", "310", "311", "312", "313"]
needs: [test_python]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Install Toolchain
run: |
python -m pip install cibuildwheel
cibuildwheel --output-dir wheelhouse
env:
# https://cibuildwheel.pypa.io/en/stable/options/#archs
CIBW_BUILD: cp${{ matrix.python-version }}-*
CIBW_PLATFORM: linux
CIBW_ARCHS: ppc64le s390x i686 #! `armv7l` not worth the trouble
Loading

0 comments on commit 569cc7a

Please sign in to comment.