Skip to main content

GPU-enabled FAISS wheels (CUDA 13, Taylor Geospatial).

Project description

faiss-cuda

GPU-enabled FAISS wheels published to PyPI, maintained by Taylor Geospatial.

pip install faiss-cuda          # CUDA 13.x (default — driver R580+)
pip install faiss-cuda-cu128    # CUDA 12.8 (driver R570+)

No system CUDA toolkit required. The CUDA runtime libraries are pulled from PyPI at install time (nvidia-cuda-runtime, nvidia-cublas for the default CUDA 13 package — NVIDIA dropped the -cuXX suffix at CUDA 13; *-cu12 for faiss-cuda-cu128) and preloaded by a small loader shipped in the wheel. Your only host prerequisite is a recent NVIDIA driver.

What's in the wheel

  • faiss Python package, GPU-enabled, built against FAISS upstream v1.14.1.
  • Default (faiss-cuda, CUDA 13) built for arch 80;86;89;90;100 — A100, A10/A30, RTX-40, H100/H200, Blackwell B100/B200.
  • faiss-cuda-cu128 (CUDA 12.8) built for 75;80;86;89;90 (Blackwell needs cu13).
  • manylinux_2_28_x86_64, CPython 3.11–3.14. libstdc++ is statically linked so no GCC 11+ runtime is required on the host — works on RHEL 8 / glibc 2.28 out of the box.
  • CUDA libs (libcudart, libcublas, libcublasLt) are excluded from the wheel — they install transitively from PyPI as nvidia-* packages, which keeps the wheel small and avoids ABI clashes if you also have PyTorch installed.

Verify

import faiss, numpy as np
res = faiss.StandardGpuResources()
xb = np.random.random((10000, 64)).astype("float32")
xq = np.random.random((5,     64)).astype("float32")
index = faiss.GpuIndexFlatL2(res, 64)
index.add(xb)
D, I = index.search(xq, 4)
print("GPU OK", I.shape)

Variants

Package CUDA Driver sm archs
faiss-cuda 13.0 R580+ 80, 86, 89, 90, 100
faiss-cuda-cu128 12.8 R570+ 75, 80, 86, 89, 90

To pin the runtime CUDA libs to the same minor as the build (reproducibility):

pip install 'faiss-cuda[fix-cuda]'

Build from source

Wheels are built natively on TGI RAILS (no container). The build script provisions CUDA toolkit via pip (nvidia-cuda-nvcc-cuXX), uses system gcc + openblas via modules, and runs auditwheel repair to certify the result as manylinux_2_28_x86_64. ccache persists builds across SLURM jobs.

Prereqs on the build host: NVIDIA GPU node with CUDA driver, RHEL 8 / glibc 2.28 baseline, gcc 11+, uv, openblas-devel.

sbatch --account=<PROJECT> scripts/rails.sbatch     # builds both cuda12 and cuda13
ls wheelhouse/

Or directly on a node:

scripts/rails_build.sh cuda12         # one package
scripts/rails_build.sh                # both

Releasing

  1. Build wheels on RAILS: sbatch scripts/rails.sbatch (~30 min cold, ~5 min cached).
  2. Tag and create a GitHub release, attaching every .whl from wheelhouse/:
    gh release create v1.14.1.post0 wheelhouse/*.whl --notes "..."
    
  3. The release.yml workflow fires on release: published, downloads the wheel assets, and runs uv publish with OIDC trusted publishing into the pypi environment. Both faiss-cuda and faiss-cuda-cu128 need trusted-publisher configs on PyPI pointing at release.yml + environment pypi.

Versioning

Package version follows upstream FAISS: <faiss_version>.postN (e.g. FAISS 1.14.1 → 1.14.1.post0). Bump postN on packaging-only changes. The faiss/ git submodule is the source of truth for the upstream version.

License

MIT. See LICENSE.

The wheels redistribute compiled binaries built from FAISS (Meta, MIT-licensed); the LICENSE file includes Meta's copyright and license text alongside ours.

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_cuda-1.14.1.post4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (99.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

faiss_cuda-1.14.1.post4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (99.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

faiss_cuda-1.14.1.post4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (99.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

faiss_cuda-1.14.1.post4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (99.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file faiss_cuda-1.14.1.post4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: faiss_cuda-1.14.1.post4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 99.1 MB
  • Tags: CPython 3.14, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for faiss_cuda-1.14.1.post4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7aeb7e60bd51468f2119b6e3d0bacb616f757b392a22bac216e57dd893fb8fae
MD5 6a927036b82ba31ac7f3562e6dc0b662
BLAKE2b-256 e506214e90f59c19ed9e0e4c7236383bcb2c0cb8fd0e7ca22798a442b0c67953

See more details on using hashes here.

File details

Details for the file faiss_cuda-1.14.1.post4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: faiss_cuda-1.14.1.post4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 99.1 MB
  • Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for faiss_cuda-1.14.1.post4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4d677a3f46dc72174b6fb366745ce077bcb5efb3127443c4475076627efde6f8
MD5 e5f71dbbff1be2cebd9be8199e88b937
BLAKE2b-256 003cbb1e4d46a8ae4700f4ee6fb3a1a99a15d7373b901eefe3fe29c3da7f6df1

See more details on using hashes here.

File details

Details for the file faiss_cuda-1.14.1.post4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: faiss_cuda-1.14.1.post4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 99.1 MB
  • Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for faiss_cuda-1.14.1.post4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6d3b1170eaa74224bcfa5dc7cf73471e4ea02eccc4866f1754fb89caee5cd553
MD5 b9b9444ccadc4021648afb1ee277b358
BLAKE2b-256 69b915722d75ef4fdf7c73ac633dc03e80dcce393ff5e130232fd5d592db7921

See more details on using hashes here.

File details

Details for the file faiss_cuda-1.14.1.post4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: faiss_cuda-1.14.1.post4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 99.1 MB
  • Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for faiss_cuda-1.14.1.post4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 592f1808c1b40c66cd1f0a00d4171d64c2eb12135532d336973d879934266fda
MD5 27467a7229521c021ba249fb9b86dc38
BLAKE2b-256 597a3f111014171a4d68ae487bc104926f020b4536589f31015851b06dfaf590

See more details on using hashes here.

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