Skip to main content

A library for efficient similarity search and clustering of dense vectors.

Project description

faiss-wheels

This repository is based on kyamagu/faiss-wheels.

PyPI PyPI

Overview

This repository provides scripts to build GPU-enabled wheels for the faiss library. Distributes faiss-gpu-cuXX packages to PyPI using the contents of this repository.

Key Features

  • No local CUDA installation required - Dynamically links to CUDA Runtime and cuBLAS libraries from PyPI
  • Builds CUDA 11.8+ and CUDA 12.1+ compatible wheels
  • Supports Volta to Ada Lovelace architecture GPUs (Compute Capability 7.0–8.9)
  • Bundles OpenBLAS in Linux
  • Reduces wheel file size through dynamic linking instead of static compilation

Important Requirements

The published faiss-gpu-cuXX packages require proper system setup that cannot be managed by pip. It is your responsibility to prepare a suitable environment:

  1. NVIDIA Driver: Your host must have a CUDA-compatible NVIDIA driver installed

  2. GPU Architecture: Your GPU must be compatible (Compute Capability 7.0–8.9)

    • Supported: Volta, Turing, Ampere, Ada Lovelace
  3. Library Compatibility: If you install multiple CUDA-dependent libraries (e.g., PyTorch) in the same environment, they must link to the same CUDA version

GPU Architecture Support for PyPI Packages

Support Policy for faiss-gpu-cu11 and faiss-gpu-cu12

Note: This is an unofficial, personal development project with limited computational resources. Due to these constraints, comprehensive testing across all NVIDIA GPU architectures is not feasible. The pre-built faiss-gpu-cu11 and faiss-gpu-cu12 packages on PyPI aim to support the same GPU architecture range (Compute Capability 7.0–8.9) as the official Faiss repository.

For Unsupported GPU Architectures

If you have a GPU architecture that is not supported by these pre-built wheels:

  1. Official Faiss: Follow the official Faiss repository build instructions
  2. Build from Source: Use this repository's code to build wheels for your specific architecture (see Building from Source section)

Installation

The faiss-gpu-cu11 and faiss-gpu-cu12 wheels are available on PyPI. Choose the appropriate version for your CUDA environment.

For CUDA 12

# Install with fixed CUDA 12.1 (requires NVIDIA Driver ≥R530)
pip install 'faiss-gpu-cu12[fix-cuda]'

# Install with CUDA 12.X (X≥1) - allows flexibility but driver requirement varies
pip install faiss-gpu-cu12

Details:

  • faiss-gpu-cu12 is built with CUDA Toolkit 12.1 and maintains minor version compatibility
  • With [fix-cuda]: Installs exactly CUDA 12.1, requiring NVIDIA Driver ≥R530
  • Without [fix-cuda]: Allows any CUDA 12.X (X≥1), driver requirement depends on the actual CUDA version installed
    • For example: CUDA 12.4 requires Driver ≥R550
  • Use without [fix-cuda] when integrating with other CUDA-dependent packages (e.g., PyTorch with CUDA 12.4)

System Requirements:

  • OS: Linux x86_64 (glibc ≥2.17)
  • GPU: Compute Capability 7.0–8.9

For CUDA 11

# Install with CUDA 11.8 (requires NVIDIA Driver ≥R520)
pip install faiss-gpu-cu11[fix-cuda]

# Same as above (CUDA 11.8 is the final version)
pip install faiss-gpu-cu11

Details:

  • faiss-gpu-cu11 is built with CUDA Toolkit 11.8
  • Both commands install CUDA 11.8 since no newer CUDA 11.X versions exist
  • Requires NVIDIA Driver ≥R520

System Requirements:

  • OS: Linux x86_64 (glibc ≥2.17)
  • GPU: Compute Capability 7.0–8.9

Driver Compatibility Reference

CUDA Version Minimum Driver Version
CUDA 11.8 ≥R520 (520.61.05)
CUDA 12.1 ≥R530 (530.30.02)
CUDA 12.2+ Check NVIDIA Documentation

Warning: When installing without [fix-cuda], pip may resolve to a newer CUDA version that requires a newer driver than you have installed. Always verify driver compatibility before installation.

Advanced: Using System CUDA Libraries

If you need to use system-installed CUDA instead of PyPI CUDA packages, you can bypass the automatic CUDA loading:

  1. Exclude PyPI CUDA dependencies using your package manager (e.g., uv, pdm)
  2. Set environment variable: _FAISS_WHEEL_DISABLE_CUDA_PRELOAD=1
  3. Ensure CUDA libraries are accessible via LD_LIBRARY_PATH

Example with uv (workaround):

# In pyproject.toml
[tool.uv]
override-dependencies = [
    "nvidia-cuda-runtime-cu11==0.0.0; sys_platform == 'never'",
    "nvidia-cublas-cu11==0.0.0; sys_platform == 'never'",
]

Versioning

  • Follows the original faiss repository versioning (e.g., 1.11.0)
  • Patches specific to this repository use postN suffix (e.g., 1.11.0.post1)

Building from Source

Build faiss-gpu-cu11 and faiss-gpu-cu12 wheels using cibuildwheel.

Build Configuration

# Configure build parameters
export NJOB="32"                          # Number of parallel build jobs
export FAISS_OPT_LEVEL="generic"          # Options: generic, avx2, avx512
export CUDA_ARCHITECTURES="70-real;80-real"  # Target GPU architectures

# For builds without GPU testing
export CIBW_TEST_COMMAND_LINUX=""

# For builds with GPU testing (requires NVIDIA Docker)
export CIBW_CONTAINER_ENGINE='docker; create_args: --gpus all'
# Note: GPU testing requires Docker with NVIDIA Container Toolkit configured

Build Commands

# Build faiss-gpu-cu11 wheels
uvx cibuildwheel@2.23.2 variant/gpu-cu11 --output-dir wheelhouse/gpu-cu11

# Build faiss-gpu-cu12 wheels
uvx cibuildwheel@2.23.2 variant/gpu-cu12 --output-dir wheelhouse/gpu-cu12

Wheels will be created in {repository_root}/wheelhouse/gpu-cuXX/.

Build Requirements

  • OS: Linux x86_64
  • NVIDIA Container Toolkit (if running tests)
  • NVIDIA Driver: ≥R530 (if running tests with CUDA 12)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

faiss_gpu_cu12-1.13.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

faiss_gpu_cu12-1.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

faiss_gpu_cu12-1.13.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

faiss_gpu_cu12-1.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

File details

Details for the file faiss_gpu_cu12-1.13.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.13.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b491d0201512fcc70f874b166b196acf533183a45057c3be56263cb74be70bc1
MD5 cb356fa6a76d535ad955f344071fa3da
BLAKE2b-256 b9e72dec3daa67368c7f2a89549603e56938cf328779b6acf91f6ab98be30f69

See more details on using hashes here.

Provenance

The following attestation bundles were made for faiss_gpu_cu12-1.13.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheel.yml on Di-Is/faiss-gpu-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faiss_gpu_cu12-1.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 feba45c2271a350de30a1be5e9e1e1b1b43915b5f20975529a9c26cbc0ef1b03
MD5 2212741c68a3029b540071301c8aade4
BLAKE2b-256 9b1da8f088944f827cddbdaa0dfe77f486b457f6174dc3a4b6e4cb103a4dac8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for faiss_gpu_cu12-1.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheel.yml on Di-Is/faiss-gpu-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faiss_gpu_cu12-1.13.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.13.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 752fa4044ec10a3a55f4fa0e81472db8915b4fa40bec6166959c69391b3e5142
MD5 36d795b36e8d6f22b613e28fcc65fbee
BLAKE2b-256 c11d7823598589ba8a67bcaff5fe93d4025991cda04a6ecc93cba862ae89b63a

See more details on using hashes here.

Provenance

The following attestation bundles were made for faiss_gpu_cu12-1.13.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheel.yml on Di-Is/faiss-gpu-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faiss_gpu_cu12-1.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78d256cf1fcdaec6c1fe6715fceeddd43a9daa6de3e6d62950a23c9728f50043
MD5 9badc42b056512af577b4db9f4020d8c
BLAKE2b-256 ab23d0859cdd75d61c5fca6cc46fc6a349979caa4965112e7e1a515aa909e332

See more details on using hashes here.

Provenance

The following attestation bundles were made for faiss_gpu_cu12-1.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheel.yml on Di-Is/faiss-gpu-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page