Skip to main content

GPU-enabled FAISS wheels (CUDA 12.8, 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+ 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_cu128-1.14.1.post3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (88.8 MB view details)

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

faiss_cuda_cu128-1.14.1.post3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (88.8 MB view details)

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

faiss_cuda_cu128-1.14.1.post3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (88.8 MB view details)

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

faiss_cuda_cu128-1.14.1.post3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (88.8 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_cu128-1.14.1.post3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: faiss_cuda_cu128-1.14.1.post3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 88.8 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_cu128-1.14.1.post3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b723df18622242bb993f9c004e32f2fbed2a8070ccc0b0f67761f34331eb34b
MD5 5bf7aceb2bfeed32fb43806371050c60
BLAKE2b-256 b7730d000d3e56d493110d75dccf307e7439f42de0578509c57396a5f3c90415

See more details on using hashes here.

File details

Details for the file faiss_cuda_cu128-1.14.1.post3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: faiss_cuda_cu128-1.14.1.post3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 88.8 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_cu128-1.14.1.post3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5debb2f2cb97787d76eadd4f8cdbd8067bfc680daf49a30becc854e4994c1060
MD5 a0a64d2b5b7051ce38d34c4aabfc7a1d
BLAKE2b-256 0872b558461d476731c8e3c95de303e5e3b8848d7fef515678844c83cf11c946

See more details on using hashes here.

File details

Details for the file faiss_cuda_cu128-1.14.1.post3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: faiss_cuda_cu128-1.14.1.post3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 88.8 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_cu128-1.14.1.post3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a9f6bcb7d6a7faeb4b09b0859d28681edf658e66d4eddacc0fe8c9613f2d18a
MD5 3f5370eb68ac7e323db36c0a452c271f
BLAKE2b-256 c1d4e9fd2fcdeb7dc4aea8fba69d4a63b37b88cdc9820c1d44afcba9580d8e6f

See more details on using hashes here.

File details

Details for the file faiss_cuda_cu128-1.14.1.post3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: faiss_cuda_cu128-1.14.1.post3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 88.8 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_cu128-1.14.1.post3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0346119188ed337ab655c152b098719ba454fcbb6b7a1205c6d33a4048bead0a
MD5 35b01fc884192cb92b8b79be1feee66b
BLAKE2b-256 5b50288d434b457731fd6acb9c5780ff418dc9b020fc0b955cfbd4bc76a736e9

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