diff --git a/.ci_support/linux_64_blas_implbliscuda_compiler_version12.9.yaml b/.ci_support/linux_64_blas_implblisc_stdlib_version2.17cuda_compiler_version12.9.yaml similarity index 100% rename from .ci_support/linux_64_blas_implbliscuda_compiler_version12.9.yaml rename to .ci_support/linux_64_blas_implblisc_stdlib_version2.17cuda_compiler_version12.9.yaml diff --git a/.ci_support/linux_64_blas_implbliscuda_compiler_versionNone.yaml b/.ci_support/linux_64_blas_implblisc_stdlib_version2.17cuda_compiler_versionNone.yaml similarity index 100% rename from .ci_support/linux_64_blas_implbliscuda_compiler_versionNone.yaml rename to .ci_support/linux_64_blas_implblisc_stdlib_version2.17cuda_compiler_versionNone.yaml diff --git a/.ci_support/linux_64_blas_implblisc_stdlib_version2.28cuda_compiler_version13.0.yaml b/.ci_support/linux_64_blas_implblisc_stdlib_version2.28cuda_compiler_version13.0.yaml new file mode 100644 index 00000000..27ad4b13 --- /dev/null +++ b/.ci_support/linux_64_blas_implblisc_stdlib_version2.28cuda_compiler_version13.0.yaml @@ -0,0 +1,39 @@ +blas_impl: +- blis +c_stdlib: +- sysroot +c_stdlib_version: +- '2.28' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- '13.0' +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +mkl: +- '2025' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +- 3.11.* *_cpython +- 3.12.* *_cpython +- 3.13.* *_cp313 +target_platform: +- linux-64 +zip_keys: +- - cxx_compiler_version + - c_stdlib_version + - cuda_compiler_version diff --git a/.ci_support/linux_64_blas_implmklcuda_compiler_version12.9.yaml b/.ci_support/linux_64_blas_implmklc_stdlib_version2.17cuda_compiler_version12.9.yaml similarity index 100% rename from .ci_support/linux_64_blas_implmklcuda_compiler_version12.9.yaml rename to .ci_support/linux_64_blas_implmklc_stdlib_version2.17cuda_compiler_version12.9.yaml diff --git a/.ci_support/linux_64_blas_implmklcuda_compiler_versionNone.yaml b/.ci_support/linux_64_blas_implmklc_stdlib_version2.17cuda_compiler_versionNone.yaml similarity index 100% rename from .ci_support/linux_64_blas_implmklcuda_compiler_versionNone.yaml rename to .ci_support/linux_64_blas_implmklc_stdlib_version2.17cuda_compiler_versionNone.yaml diff --git a/.ci_support/linux_64_blas_implmklc_stdlib_version2.28cuda_compiler_version13.0.yaml b/.ci_support/linux_64_blas_implmklc_stdlib_version2.28cuda_compiler_version13.0.yaml new file mode 100644 index 00000000..1ebff651 --- /dev/null +++ b/.ci_support/linux_64_blas_implmklc_stdlib_version2.28cuda_compiler_version13.0.yaml @@ -0,0 +1,39 @@ +blas_impl: +- mkl +c_stdlib: +- sysroot +c_stdlib_version: +- '2.28' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- '13.0' +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +mkl: +- '2025' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +- 3.11.* *_cpython +- 3.12.* *_cpython +- 3.13.* *_cp313 +target_platform: +- linux-64 +zip_keys: +- - cxx_compiler_version + - c_stdlib_version + - cuda_compiler_version diff --git a/.ci_support/linux_64_blas_implopenblascuda_compiler_version12.9.yaml b/.ci_support/linux_64_blas_implopenblasc_stdlib_version2.17cuda_compiler_version12.9.yaml similarity index 100% rename from .ci_support/linux_64_blas_implopenblascuda_compiler_version12.9.yaml rename to .ci_support/linux_64_blas_implopenblasc_stdlib_version2.17cuda_compiler_version12.9.yaml diff --git a/.ci_support/linux_64_blas_implopenblascuda_compiler_versionNone.yaml b/.ci_support/linux_64_blas_implopenblasc_stdlib_version2.17cuda_compiler_versionNone.yaml similarity index 100% rename from .ci_support/linux_64_blas_implopenblascuda_compiler_versionNone.yaml rename to .ci_support/linux_64_blas_implopenblasc_stdlib_version2.17cuda_compiler_versionNone.yaml diff --git a/.ci_support/linux_64_blas_implopenblasc_stdlib_version2.28cuda_compiler_version13.0.yaml b/.ci_support/linux_64_blas_implopenblasc_stdlib_version2.28cuda_compiler_version13.0.yaml new file mode 100644 index 00000000..106e6d75 --- /dev/null +++ b/.ci_support/linux_64_blas_implopenblasc_stdlib_version2.28cuda_compiler_version13.0.yaml @@ -0,0 +1,39 @@ +blas_impl: +- openblas +c_stdlib: +- sysroot +c_stdlib_version: +- '2.28' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- '13.0' +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +mkl: +- '2025' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +- 3.11.* *_cpython +- 3.12.* *_cpython +- 3.13.* *_cp313 +target_platform: +- linux-64 +zip_keys: +- - cxx_compiler_version + - c_stdlib_version + - cuda_compiler_version diff --git a/.ci_support/linux_aarch64_cuda_compiler_version12.9.yaml b/.ci_support/linux_aarch64_c_stdlib_version2.17cuda_compiler_version12.9.yaml similarity index 100% rename from .ci_support/linux_aarch64_cuda_compiler_version12.9.yaml rename to .ci_support/linux_aarch64_c_stdlib_version2.17cuda_compiler_version12.9.yaml diff --git a/.ci_support/linux_aarch64_cuda_compiler_versionNone.yaml b/.ci_support/linux_aarch64_c_stdlib_version2.17cuda_compiler_versionNone.yaml similarity index 100% rename from .ci_support/linux_aarch64_cuda_compiler_versionNone.yaml rename to .ci_support/linux_aarch64_c_stdlib_version2.17cuda_compiler_versionNone.yaml diff --git a/.ci_support/linux_aarch64_c_stdlib_version2.28cuda_compiler_version13.0.yaml b/.ci_support/linux_aarch64_c_stdlib_version2.28cuda_compiler_version13.0.yaml new file mode 100644 index 00000000..f257d4a1 --- /dev/null +++ b/.ci_support/linux_aarch64_c_stdlib_version2.28cuda_compiler_version13.0.yaml @@ -0,0 +1,39 @@ +blas_impl: +- openblas +c_stdlib: +- sysroot +c_stdlib_version: +- '2.28' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- '13.0' +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +mkl: +- '2025' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +- 3.11.* *_cpython +- 3.12.* *_cpython +- 3.13.* *_cp313 +target_platform: +- linux-aarch64 +zip_keys: +- - cxx_compiler_version + - c_stdlib_version + - cuda_compiler_version diff --git a/.ci_support/migrations/cuda130.yaml b/.ci_support/migrations/cuda130.yaml new file mode 100644 index 00000000..2bc82b75 --- /dev/null +++ b/.ci_support/migrations/cuda130.yaml @@ -0,0 +1,62 @@ +migrator_ts: 1755016036 +__migrator: + operation: key_add + migration_number: + 1 + build_number: + 1 + paused: false + override_cbc_keys: + - cuda_compiler_stub + check_solvable: false + primary_key: cuda_compiler_version + ordering: + cuda_compiler_version: + - 12.4 + - 12.6 + - 12.8 + - None + - 12.9 + - 13.0 + # to allow manual opt-in for CUDA 11.8, see + # https://github.com/conda-forge/conda-forge-pinning-feedstock/pull/7472 + # must be last due to how cuda_compiler ordering in that migrator works + - 11.8 + wait_for_migrators: + - cuda129 + commit_message: | + Upgrade to CUDA 13.0 + + CUDA 13.0 requires architecture `sm_75` or higher, and renamed `sm_101` to + `sm_110`. To build for these, maintainers will need to modify their existing list of + specified architectures (e.g. `CMAKE_CUDA_ARCHITECTURES`, `TORCH_CUDA_ARCH_LIST`, etc.) + for their package. + + Since CUDA 12.8, the conda-forge nvcc package now sets `CUDAARCHS` and + in its activation script to a string containing all + of the supported real architectures plus the virtual architecture of the + latest. Recipes for packages who use these variables to control their build + but do not want to build for all supported architectures will need to override + these variables in their build script. + + ref: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#new-features + + > [[!IMPORTANT]] + > Remember to update any CUDA 11/12 specific selector syntax in the recipe to include + > CUDA 13. For example `# [(cuda_compiler_version or "None").startswith("12")]` + > might be replaced with `# [cuda_compiler_version != "None"]`. + +cuda_compiler_version: # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 13.0 # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + +c_stdlib_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 2.28 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + +c_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + +cxx_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + +fortran_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml index ba4cd64b..75270dc8 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -22,42 +22,62 @@ jobs: max-parallel: 50 matrix: include: - - CONFIG: linux_64_blas_implbliscuda_compiler_version12.9 + - CONFIG: linux_64_blas_implblisc_stdlib_version2.17cuda_compiler_version12.9 UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - - CONFIG: linux_64_blas_implbliscuda_compiler_versionNone + - CONFIG: linux_64_blas_implblisc_stdlib_version2.17cuda_compiler_versionNone UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - - CONFIG: linux_64_blas_implmklcuda_compiler_version12.9 + - CONFIG: linux_64_blas_implblisc_stdlib_version2.28cuda_compiler_version13.0 UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - - CONFIG: linux_64_blas_implmklcuda_compiler_versionNone + - CONFIG: linux_64_blas_implmklc_stdlib_version2.17cuda_compiler_version12.9 UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - - CONFIG: linux_64_blas_implopenblascuda_compiler_version12.9 + - CONFIG: linux_64_blas_implmklc_stdlib_version2.17cuda_compiler_versionNone UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - - CONFIG: linux_64_blas_implopenblascuda_compiler_versionNone + - CONFIG: linux_64_blas_implmklc_stdlib_version2.28cuda_compiler_version13.0 UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - - CONFIG: linux_aarch64_cuda_compiler_version12.9 + - CONFIG: linux_64_blas_implopenblasc_stdlib_version2.17cuda_compiler_version12.9 UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - - CONFIG: linux_aarch64_cuda_compiler_versionNone + - CONFIG: linux_64_blas_implopenblasc_stdlib_version2.17cuda_compiler_versionNone + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_64_blas_implopenblasc_stdlib_version2.28cuda_compiler_version13.0 + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_c_stdlib_version2.17cuda_compiler_version12.9 + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_c_stdlib_version2.17cuda_compiler_versionNone + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_c_stdlib_version2.28cuda_compiler_version13.0 UPLOAD_PACKAGES: True os: ubuntu runs_on: ['ubuntu-latest'] diff --git a/README.md b/README.md index 02f6c178..e1d60a2e 100644 --- a/README.md +++ b/README.md @@ -44,59 +44,87 @@ Current build status - + - + - + - + - + - + - + - + + + + + + + + + + + + + diff --git a/recipe/build-lib.bat b/recipe/build-lib.bat index ea0745fa..b062712a 100644 --- a/recipe/build-lib.bat +++ b/recipe/build-lib.bat @@ -19,6 +19,8 @@ if "%cuda_compiler_version%"=="None" ( if "%cuda_compiler_version:~0,2%"=="12" ( set "CMAKE_CUDA_ARCHS=53-real;62-real;72-real;75-real;80-real;86-real;89-real;90" + ) else if "%cuda_compiler_version:~0,2%" == "13" ( + set "CMAKE_CUDA_ARCHS=75-real;80-real;86-real;89-real;90-real;100-real;110-real;120" ) REM turn off _extremely_ noisy nvcc warnings set "CUDAFLAGS=-w" diff --git a/recipe/build-lib.sh b/recipe/build-lib.sh index caeb09a3..70a83ab9 100644 --- a/recipe/build-lib.sh +++ b/recipe/build-lib.sh @@ -13,7 +13,9 @@ if [ "${cuda_compiler_version}" != "None" ]; then # devblogs.nvidia.com/cuda-pro-tip-understand-fat-binaries-jit-caching if [[ ${cuda_compiler_version} == 12.* ]]; then - export CMAKE_CUDA_ARCHS="53-real;62-real;72-real;75-real;80-real;86-real;89-real;90" + export CMAKE_CUDA_ARCHS="86-real" + elif [[ ${cuda_compiler_version} == 13.* ]]; then + export CMAKE_CUDA_ARCHS="86-real" fi export FAISS_ENABLE_GPU="ON" diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 9cd68470..2c8d57cf 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,8 +1,8 @@ -{% set version = "1.10.0" %} +{% set version = "1.11.0" %} # see github.com/conda-forge/conda-forge.github.io/issues/1059 for naming discussion {% set faiss_proc_type = "cuda" if cuda_compiler_version != "None" else "cpu" %} -{% set build = 0 %} +{% set build = 1 %} # Use a higher build number for the CUDA variant, to ensure that it's # preferred by conda's solver, and it's preferentially # installed where the platform supports it. @@ -46,28 +46,28 @@ package: source: url: https://github.com/facebookresearch/faiss/archive/v{{ version }}.tar.gz - sha256: 65b5493d6b8cb992f104677cab255a9b71ef1e1d2ea3b1500dc995c68b429949 - patches: - - patches/0001-adapt-header-target-directory-to-outputname.patch - # patch for avoiding crash in GPU test suite on windows - - patches/0002-skip-test_stress-for-GPU-on-windows.patch - # enable building libfaiss_avx2 without libfaiss - - patches/0003-enable-building-libfaiss_avx2-without-libfaiss.patch - # increase tolerance for test that occasionally fails marginally - - patches/0004-increase-tolerance-for-marginally-failing-test.patch - # add /bigobj on windows to avoid: "fatal error C1128: number of sections exceeded object file format limit" - - patches/0005-add-bigobj-to-swigfaiss-compile-options-on-windows.patch - # due to switch to ninja - - patches/0006-no-more-Release-subfolder.patch - # more fixes - - patches/0007-fix-index-type-in-openmp-loop.patch - - patches/0008-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch # [win] - - patches/0009-don-t-rely-on-luck-for-initialization-order-on-win-C.patch # [win and cuda_compiler_version != "None"] - # workaround for https://github.com/facebookresearch/faiss/issues/2985 - - patches/0010-fix-a-MSVC-problem.patch # [win and cuda_compiler_version != "None"] - # disable library dispatch based on detected CPU instruction sets; - # revisit this after (or when) #23 is fixed - - patches/0011-disable-loading-different-library-flavours-based-on-.patch + sha256: c5d517da6deb6a6d74290d7145331fc7474426025e2d826fa4a6d40670f4493c + # patches: + # - patches/0001-adapt-header-target-directory-to-outputname.patch + # # patch for avoiding crash in GPU test suite on windows + # - patches/0002-skip-test_stress-for-GPU-on-windows.patch + # # enable building libfaiss_avx2 without libfaiss + # - patches/0003-enable-building-libfaiss_avx2-without-libfaiss.patch + # # increase tolerance for test that occasionally fails marginally + # - patches/0004-increase-tolerance-for-marginally-failing-test.patch + # # add /bigobj on windows to avoid: "fatal error C1128: number of sections exceeded object file format limit" + # - patches/0005-add-bigobj-to-swigfaiss-compile-options-on-windows.patch + # # due to switch to ninja + # - patches/0006-no-more-Release-subfolder.patch + # # more fixes + # - patches/0007-fix-index-type-in-openmp-loop.patch + # - patches/0008-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch # [win] + # - patches/0009-don-t-rely-on-luck-for-initialization-order-on-win-C.patch # [win and cuda_compiler_version != "None"] + # # workaround for https://github.com/facebookresearch/faiss/issues/2985 + # - patches/0010-fix-a-MSVC-problem.patch # [win and cuda_compiler_version != "None"] + # # disable library dispatch based on detected CPU instruction sets; + # # revisit this after (or when) #23 is fixed + # - patches/0011-disable-loading-different-library-flavours-based-on-.patch build: number: {{ build }} @@ -252,13 +252,10 @@ outputs: # TestClustering::test_ivf_train_2level, OPQRelativeAccuracy::test_OIVFPQ and # TestComponents::test_update_codebooks_with_double. Remove after faiss>=1.13.0 # https://github.com/facebookresearch/faiss/pull/4523 - {% set skips = skips + " or test_float" %} - {% set skips = skips + " or test_ivf_train_2level" %} # [linux or win] + {% set skips = skips + " or (TestPreassigned and test_float)" %} + {% set skips = skips + " or (TestClustering and test_ivf_train_2level)" %} # [linux or win] {% set skips = skips + " or test_OIVFPQ" %} # [osx and blas_impl == 'blis'] - {% set skips = skips + " or test_update_codebooks_with_double" %} # [linux] - # Segfaults on Linux + CUDA builds - {% set skips = skips + " or (TestComputeGT and test_compute_GT_gpu)" %} # [linux and cuda_compiler_version != "None"] - {% set skips = skips + " or (TestComputeGT and test_compute_GT_ip_gpu)" %} # [linux and cuda_compiler_version != "None"] + # {% set skips = skips + " or test_update_codebooks_with_double" %} # [linux] # Segfaults on Windows + MKL + no CUDA builds {% set skips = skips + " or (TestReconstructBatch and test_exception)" %} # [win and blas_impl == 'mkl'] {% set skips = skips + " or (TestBucketSort and test_bucket_sort_parallel)" %} # [win and blas_impl == 'mkl']
VariantStatus
linux_64_blas_implbliscuda_compiler_version12.9linux_64_blas_implblisc_stdlib_version2.17cuda_compiler_version12.9 - variant + variant
linux_64_blas_implbliscuda_compiler_versionNonelinux_64_blas_implblisc_stdlib_version2.17cuda_compiler_versionNone - variant + variant
linux_64_blas_implmklcuda_compiler_version12.9linux_64_blas_implblisc_stdlib_version2.28cuda_compiler_version13.0 - variant + variant
linux_64_blas_implmklcuda_compiler_versionNonelinux_64_blas_implmklc_stdlib_version2.17cuda_compiler_version12.9 - variant + variant
linux_64_blas_implopenblascuda_compiler_version12.9linux_64_blas_implmklc_stdlib_version2.17cuda_compiler_versionNone - variant + variant
linux_64_blas_implopenblascuda_compiler_versionNonelinux_64_blas_implmklc_stdlib_version2.28cuda_compiler_version13.0 - variant + variant
linux_aarch64_cuda_compiler_version12.9linux_64_blas_implopenblasc_stdlib_version2.17cuda_compiler_version12.9 - variant + variant
linux_aarch64_cuda_compiler_versionNonelinux_64_blas_implopenblasc_stdlib_version2.17cuda_compiler_versionNone - variant + variant + +
linux_64_blas_implopenblasc_stdlib_version2.28cuda_compiler_version13.0 + + variant + +
linux_aarch64_c_stdlib_version2.17cuda_compiler_version12.9 + + variant + +
linux_aarch64_c_stdlib_version2.17cuda_compiler_versionNone + + variant + +
linux_aarch64_c_stdlib_version2.28cuda_compiler_version13.0 + + variant