From 84277a5be992c9bd5f7004e2bfb74d75029ef985 Mon Sep 17 00:00:00 2001 From: Ramil Bakhshyiev Date: Sun, 19 May 2024 20:24:31 -0700 Subject: [PATCH] Workaround for CUDA 11.4.4 build in Conda on Ubuntu 22 / v6 kernel (#3459) Summary: When building with CUDA 11.4.4, CMake does not properly include files under Conda environment. This workaround flattens the include sub-directories in to the include root. It will unblock us for now while we are looking for a fix through CMakeLists files or figure out if it's a CMake bug and it gets fixed. Differential Revision: D57545169 --- conda/faiss-gpu/build-lib.sh | 6 ++++++ conda/faiss-gpu/meta.yaml | 3 +++ 2 files changed, 9 insertions(+) diff --git a/conda/faiss-gpu/build-lib.sh b/conda/faiss-gpu/build-lib.sh index 2d25e9c5e6..41f4f02bbc 100755 --- a/conda/faiss-gpu/build-lib.sh +++ b/conda/faiss-gpu/build-lib.sh @@ -6,6 +6,12 @@ set -e +# Workaround for CUDA 11.4.4 builds. Moves all necessary headers to include root. +if [[ -n "$FAISS_FLATTEN_CONDA_INCLUDES" && "$FAISS_FLATTEN_CONDA_INCLUDES" == "1" ]]; then + cp -r -n $CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/include/* $CONDA_PREFIX/include/ + cp -r -n $CONDA_PREFIX/x86_64-conda-linux-gnu/include/c++/11.2.0/* $CONDA_PREFIX/include/ + cp -r -n $CONDA_PREFIX/x86_64-conda-linux-gnu/include/c++/11.2.0/x86_64-conda-linux-gnu/* $CONDA_PREFIX/include/ +fi # Build libfaiss.so/libfaiss_avx2.so/libfaiss_avx512.so cmake -B _build \ diff --git a/conda/faiss-gpu/meta.yaml b/conda/faiss-gpu/meta.yaml index 3d614df1bf..db6b4e243f 100644 --- a/conda/faiss-gpu/meta.yaml +++ b/conda/faiss-gpu/meta.yaml @@ -43,6 +43,9 @@ outputs: - {{ pin_compatible('libfaiss', exact=True) }} script_env: - CUDA_ARCHS + {% if cudatoolkit == '11.4.4' %} + - FAISS_FLATTEN_CONDA_INCLUDES=1 + {% endif %} requirements: build: - {{ compiler('cxx') }}