diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml deleted file mode 100755 index db63e416..00000000 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ /dev/null @@ -1,97 +0,0 @@ -# This file was generated automatically from conda-smithy. To update this configuration, -# update the conda-forge.yml and/or the recipe/meta.yaml. -# -*- mode: yaml -*- - -jobs: -- job: linux - pool: - vmImage: ubuntu-latest - strategy: - matrix: - linux_64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13: - CONFIG: linux_64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13: - CONFIG: linux_64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11: - CONFIG: linux_64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64-cuda11.8:ubi8 - linux_aarch64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13: - CONFIG: linux_aarch64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13: - CONFIG: linux_aarch64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11: - CONFIG: linux_aarch64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64-cuda11.8:ubi8 - linux_ppc64le_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13: - CONFIG: linux_ppc64le_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_ppc64le_cuda_compilercuda-nvcccuda_compiler_version12.4cxx_compiler_version12: - CONFIG: linux_ppc64le_cuda_compilercuda-nvcccuda_compiler_version12.4cxx_compiler_version12 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_ppc64le_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11: - CONFIG: linux_ppc64le_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64-cuda11.8:ubi8 - timeoutInMinutes: 360 - variables: {} - - steps: - - script: | - sudo mkdir -p /opt/empty_dir || true - for d in \ - /opt/ghc \ - /opt/hostedtoolcache \ - /usr/lib/jvm \ - /usr/local/.ghcup \ - /usr/local/lib/android \ - /usr/local/share/powershell \ - /usr/share/dotnet \ - /usr/share/swift \ - ; do - sudo rsync --stats -a --delete /opt/empty_dir/ $d || true - done - sudo apt-get purge -y -f firefox \ - google-chrome-stable \ - microsoft-edge-stable - sudo apt-get autoremove -y >& /dev/null - sudo apt-get autoclean -y >& /dev/null - df -h - displayName: Manage disk space - # configure qemu binfmt-misc running. This allows us to run docker containers - # embedded qemu-static - - script: | - docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes - ls /proc/sys/fs/binfmt_misc/ - condition: not(startsWith(variables['CONFIG'], 'linux_64')) - displayName: Configure binfmt_misc - - - script: | - export CI=azure - export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) - export remote_url=$(Build.Repository.Uri) - export sha=$(Build.SourceVersion) - export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME - export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) - if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then - export IS_PR_BUILD="True" - else - export IS_PR_BUILD="False" - fi - .scripts/run_docker_build.sh - displayName: Run docker build - env: - BINSTAR_TOKEN: $(BINSTAR_TOKEN) - FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index ac0bf384..e468448e 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,15 +5,25 @@ jobs: - job: osx pool: - vmImage: macOS-13 + vmImage: $(VMIMAGE) strategy: matrix: - osx_64_: - CONFIG: osx_64_ + osx_64_blas_implblis: + CONFIG: osx_64_blas_implblis UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15 + osx_64_blas_implmkl: + CONFIG: osx_64_blas_implmkl + UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15 + osx_64_blas_implopenblas: + CONFIG: osx_64_blas_implopenblas + UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15 osx_arm64_: CONFIG: osx_arm64_ UPLOAD_PACKAGES: 'True' + VMIMAGE: macOS-15 timeoutInMinutes: 360 variables: {} @@ -37,4 +47,4 @@ jobs: env: BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 23631b50..8152bbd4 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -8,14 +8,11 @@ jobs: vmImage: windows-2022 strategy: matrix: - win_64_cuda_compilerNonecuda_compiler_versionNone: - CONFIG: win_64_cuda_compilerNonecuda_compiler_versionNone + win_64_blas_implbliscuda_compiler_versionNone: + CONFIG: win_64_blas_implbliscuda_compiler_versionNone UPLOAD_PACKAGES: 'True' - win_64_cuda_compilercuda-nvcccuda_compiler_version12.6: - CONFIG: win_64_cuda_compilercuda-nvcccuda_compiler_version12.6 - UPLOAD_PACKAGES: 'True' - win_64_cuda_compilernvcccuda_compiler_version11.8: - CONFIG: win_64_cuda_compilernvcccuda_compiler_version11.8 + win_64_blas_implopenblascuda_compiler_versionNone: + CONFIG: win_64_blas_implopenblascuda_compiler_versionNone UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 variables: @@ -41,4 +38,4 @@ jobs: UPLOAD_TEMP: $(UPLOAD_TEMP) BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.ci_support/linux_64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13.yaml b/.ci_support/linux_64_blas_implbliscuda_compiler_version12.9.yaml similarity index 71% rename from .ci_support/linux_64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13.yaml rename to .ci_support/linux_64_blas_implbliscuda_compiler_version12.9.yaml index add71196..722c71f7 100644 --- a/.ci_support/linux_64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13.yaml +++ b/.ci_support/linux_64_blas_implbliscuda_compiler_version12.9.yaml @@ -1,9 +1,9 @@ +blas_impl: +- blis c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -11,22 +11,17 @@ channel_targets: cuda_compiler: - cuda-nvcc cuda_compiler_version: -- '12.6' +- '12.9' cxx_compiler: - gxx cxx_compiler_version: -- '13' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib +mkl: +- '2025' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -35,13 +30,10 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - linux-64 zip_keys: - - cxx_compiler_version - - cuda_compiler + - c_stdlib_version - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/linux_64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml b/.ci_support/linux_64_blas_implbliscuda_compiler_versionNone.yaml similarity index 71% rename from .ci_support/linux_64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml rename to .ci_support/linux_64_blas_implbliscuda_compiler_versionNone.yaml index c47769a8..8ccdcbcf 100644 --- a/.ci_support/linux_64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml +++ b/.ci_support/linux_64_blas_implbliscuda_compiler_versionNone.yaml @@ -1,32 +1,27 @@ +blas_impl: +- blis c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: - conda-forge main cuda_compiler: -- None +- cuda-nvcc cuda_compiler_version: - None cxx_compiler: - gxx cxx_compiler_version: -- '13' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib +mkl: +- '2025' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -35,13 +30,10 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - linux-64 zip_keys: - - cxx_compiler_version - - cuda_compiler + - c_stdlib_version - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/linux_ppc64le_cuda_compilercuda-nvcccuda_compiler_version12.4cxx_compiler_version12.yaml b/.ci_support/linux_64_blas_implmklcuda_compiler_version12.9.yaml similarity index 69% rename from .ci_support/linux_ppc64le_cuda_compilercuda-nvcccuda_compiler_version12.4cxx_compiler_version12.yaml rename to .ci_support/linux_64_blas_implmklcuda_compiler_version12.9.yaml index 2d17bf0a..e2bca73d 100644 --- a/.ci_support/linux_ppc64le_cuda_compilercuda-nvcccuda_compiler_version12.4cxx_compiler_version12.yaml +++ b/.ci_support/linux_64_blas_implmklcuda_compiler_version12.9.yaml @@ -1,9 +1,9 @@ +blas_impl: +- mkl c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -11,22 +11,17 @@ channel_targets: cuda_compiler: - cuda-nvcc cuda_compiler_version: -- '12.4' +- '12.9' cxx_compiler: - gxx cxx_compiler_version: -- '12' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib +mkl: +- '2025' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -35,13 +30,10 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: -- linux-ppc64le +- linux-64 zip_keys: - - cxx_compiler_version - - cuda_compiler + - c_stdlib_version - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/linux_64_blas_implmklcuda_compiler_versionNone.yaml b/.ci_support/linux_64_blas_implmklcuda_compiler_versionNone.yaml new file mode 100644 index 00000000..5fb8d4af --- /dev/null +++ b/.ci_support/linux_64_blas_implmklcuda_compiler_versionNone.yaml @@ -0,0 +1,39 @@ +blas_impl: +- mkl +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- None +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_implopenblascuda_compiler_version12.9.yaml new file mode 100644 index 00000000..f865cc21 --- /dev/null +++ b/.ci_support/linux_64_blas_implopenblascuda_compiler_version12.9.yaml @@ -0,0 +1,39 @@ +blas_impl: +- openblas +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- '12.9' +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_versionNone.yaml b/.ci_support/linux_64_blas_implopenblascuda_compiler_versionNone.yaml new file mode 100644 index 00000000..97888265 --- /dev/null +++ b/.ci_support/linux_64_blas_implopenblascuda_compiler_versionNone.yaml @@ -0,0 +1,39 @@ +blas_impl: +- openblas +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- None +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_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml b/.ci_support/linux_64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml deleted file mode 100644 index e023753f..00000000 --- a/.ci_support/linux_64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml +++ /dev/null @@ -1,47 +0,0 @@ -c_stdlib: -- sysroot -c_stdlib_version: -- '2.17' -cdt_name: -- conda -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -cuda_compiler: -- nvcc -cuda_compiler_version: -- '11.8' -cxx_compiler: -- gxx -cxx_compiler_version: -- '11' -docker_image: -- quay.io/condaforge/linux-anvil-x86_64-cuda11.8:ubi8 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib -numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.10.* *_cpython -- 3.11.* *_cpython -- 3.12.* *_cpython -- 3.9.* *_cpython -target_platform: -- linux-64 -zip_keys: -- - cxx_compiler_version - - cuda_compiler - - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/linux_aarch64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13.yaml b/.ci_support/linux_aarch64_cuda_compiler_version12.9.yaml similarity index 72% rename from .ci_support/linux_aarch64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13.yaml rename to .ci_support/linux_aarch64_cuda_compiler_version12.9.yaml index 5dc54573..21e166d0 100644 --- a/.ci_support/linux_aarch64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13.yaml +++ b/.ci_support/linux_aarch64_cuda_compiler_version12.9.yaml @@ -1,9 +1,9 @@ +blas_impl: +- openblas c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -11,22 +11,17 @@ channel_targets: cuda_compiler: - cuda-nvcc cuda_compiler_version: -- '12.6' +- '12.9' cxx_compiler: - gxx cxx_compiler_version: -- '13' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib +mkl: +- '2025' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -35,13 +30,10 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - linux-aarch64 zip_keys: - - cxx_compiler_version - - cuda_compiler + - c_stdlib_version - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/linux_aarch64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml b/.ci_support/linux_aarch64_cuda_compiler_versionNone.yaml similarity index 72% rename from .ci_support/linux_aarch64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml rename to .ci_support/linux_aarch64_cuda_compiler_versionNone.yaml index cd8ec42b..bb4ef6fb 100644 --- a/.ci_support/linux_aarch64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml +++ b/.ci_support/linux_aarch64_cuda_compiler_versionNone.yaml @@ -1,32 +1,27 @@ +blas_impl: +- openblas c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: - conda-forge main cuda_compiler: -- None +- cuda-nvcc cuda_compiler_version: - None cxx_compiler: - gxx cxx_compiler_version: -- '13' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib +mkl: +- '2025' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -35,13 +30,10 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - linux-aarch64 zip_keys: - - cxx_compiler_version - - cuda_compiler + - c_stdlib_version - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/linux_aarch64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml b/.ci_support/linux_aarch64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml deleted file mode 100644 index 317801ec..00000000 --- a/.ci_support/linux_aarch64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml +++ /dev/null @@ -1,47 +0,0 @@ -c_stdlib: -- sysroot -c_stdlib_version: -- '2.17' -cdt_name: -- conda -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -cuda_compiler: -- nvcc -cuda_compiler_version: -- '11.8' -cxx_compiler: -- gxx -cxx_compiler_version: -- '11' -docker_image: -- quay.io/condaforge/linux-anvil-x86_64-cuda11.8:ubi8 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib -numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.10.* *_cpython -- 3.11.* *_cpython -- 3.12.* *_cpython -- 3.9.* *_cpython -target_platform: -- linux-aarch64 -zip_keys: -- - cxx_compiler_version - - cuda_compiler - - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/linux_ppc64le_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml b/.ci_support/linux_ppc64le_.yaml similarity index 72% rename from .ci_support/linux_ppc64le_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml rename to .ci_support/linux_ppc64le_.yaml index deafcd05..693bfd92 100644 --- a/.ci_support/linux_ppc64le_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -1,32 +1,27 @@ +blas_impl: +- openblas c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: - conda-forge main cuda_compiler: -- None +- cuda-nvcc cuda_compiler_version: - None cxx_compiler: - gxx cxx_compiler_version: -- '13' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib +mkl: +- '2025' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -35,13 +30,10 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - linux-ppc64le zip_keys: - - cxx_compiler_version - - cuda_compiler + - c_stdlib_version - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/linux_ppc64le_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml b/.ci_support/linux_ppc64le_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml deleted file mode 100644 index bb99c355..00000000 --- a/.ci_support/linux_ppc64le_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11.yaml +++ /dev/null @@ -1,47 +0,0 @@ -c_stdlib: -- sysroot -c_stdlib_version: -- '2.17' -cdt_name: -- conda -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -cuda_compiler: -- nvcc -cuda_compiler_version: -- '11.8' -cxx_compiler: -- gxx -cxx_compiler_version: -- '11' -docker_image: -- quay.io/condaforge/linux-anvil-x86_64-cuda11.8:ubi8 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib -numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.10.* *_cpython -- 3.11.* *_cpython -- 3.12.* *_cpython -- 3.9.* *_cpython -target_platform: -- linux-ppc64le -zip_keys: -- - cxx_compiler_version - - cuda_compiler - - cuda_compiler_version - - docker_image -- - python - - numpy diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_blas_implblis.yaml similarity index 77% rename from .ci_support/osx_64_.yaml rename to .ci_support/osx_64_blas_implblis.yaml index ea58fde6..69cdb065 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_blas_implblis.yaml @@ -1,32 +1,33 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.13' +- '11.0' MACOSX_SDK_VERSION: -- '10.13' +- '11.0' +blas_impl: +- blis c_stdlib: - macosx_deployment_target c_stdlib_version: -- '10.13' +- '11.0' channel_sources: - conda-forge channel_targets: - conda-forge main cuda_compiler: -- None +- cuda-nvcc cuda_compiler_version: - None cxx_compiler: - clangxx cxx_compiler_version: -- '18' +- '19' llvm_openmp: -- '18' +- '19' macos_machine: - x86_64-apple-darwin13.4.0 +mkl: +- '2023' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -35,9 +36,6 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - osx-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/osx_64_blas_implmkl.yaml b/.ci_support/osx_64_blas_implmkl.yaml new file mode 100644 index 00000000..4431b671 --- /dev/null +++ b/.ci_support/osx_64_blas_implmkl.yaml @@ -0,0 +1,41 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +blas_impl: +- mkl +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- None +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +llvm_openmp: +- '19' +macos_machine: +- x86_64-apple-darwin13.4.0 +mkl: +- '2023' +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: +- osx-64 diff --git a/.ci_support/osx_64_blas_implopenblas.yaml b/.ci_support/osx_64_blas_implopenblas.yaml new file mode 100644 index 00000000..6278fba4 --- /dev/null +++ b/.ci_support/osx_64_blas_implopenblas.yaml @@ -0,0 +1,41 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +blas_impl: +- openblas +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cuda_compiler: +- cuda-nvcc +cuda_compiler_version: +- None +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +llvm_openmp: +- '19' +macos_machine: +- x86_64-apple-darwin13.4.0 +mkl: +- '2023' +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: +- osx-64 diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index 95796780..6da9418a 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -2,6 +2,8 @@ MACOSX_DEPLOYMENT_TARGET: - '11.0' MACOSX_SDK_VERSION: - '11.0' +blas_impl: +- openblas c_stdlib: - macosx_deployment_target c_stdlib_version: @@ -11,22 +13,21 @@ channel_sources: channel_targets: - conda-forge main cuda_compiler: -- None +- cuda-nvcc cuda_compiler_version: - None cxx_compiler: - clangxx cxx_compiler_version: -- '18' +- '19' llvm_openmp: -- '18' +- '19' macos_machine: - arm64-apple-darwin20.0.0 +mkl: +- '2023' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -35,9 +36,6 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - osx-arm64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/win_64_cuda_compilercuda-nvcccuda_compiler_version12.6.yaml b/.ci_support/win_64_blas_implbliscuda_compiler_versionNone.yaml similarity index 61% rename from .ci_support/win_64_cuda_compilercuda-nvcccuda_compiler_version12.6.yaml rename to .ci_support/win_64_blas_implbliscuda_compiler_versionNone.yaml index a623002a..a2412135 100644 --- a/.ci_support/win_64_cuda_compilercuda-nvcccuda_compiler_version12.6.yaml +++ b/.ci_support/win_64_blas_implbliscuda_compiler_versionNone.yaml @@ -1,3 +1,5 @@ +blas_impl: +- blis c_stdlib: - vs channel_sources: @@ -7,18 +9,13 @@ channel_targets: cuda_compiler: - cuda-nvcc cuda_compiler_version: -- '12.6' +- None cxx_compiler: -- vs2019 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib +- vs2022 +mkl: +- '2025' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -27,11 +24,6 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - win-64 -zip_keys: -- - cuda_compiler - - cuda_compiler_version -- - python - - numpy diff --git a/.ci_support/win_64_cuda_compilerNonecuda_compiler_versionNone.yaml b/.ci_support/win_64_blas_implopenblascuda_compiler_versionNone.yaml similarity index 60% rename from .ci_support/win_64_cuda_compilerNonecuda_compiler_versionNone.yaml rename to .ci_support/win_64_blas_implopenblascuda_compiler_versionNone.yaml index ded8eb42..5fdfe307 100644 --- a/.ci_support/win_64_cuda_compilerNonecuda_compiler_versionNone.yaml +++ b/.ci_support/win_64_blas_implopenblascuda_compiler_versionNone.yaml @@ -1,3 +1,5 @@ +blas_impl: +- openblas c_stdlib: - vs channel_sources: @@ -5,20 +7,15 @@ channel_sources: channel_targets: - conda-forge main cuda_compiler: -- None +- cuda-nvcc cuda_compiler_version: - None cxx_compiler: -- vs2019 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib +- vs2022 +mkl: +- '2025' numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -27,11 +24,6 @@ python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython -- 3.9.* *_cpython +- 3.13.* *_cp313 target_platform: - win-64 -zip_keys: -- - cuda_compiler - - cuda_compiler_version -- - python - - numpy diff --git a/.ci_support/win_64_cuda_compilernvcccuda_compiler_version11.8.yaml b/.ci_support/win_64_cuda_compilernvcccuda_compiler_version11.8.yaml deleted file mode 100644 index 45a6b718..00000000 --- a/.ci_support/win_64_cuda_compilernvcccuda_compiler_version11.8.yaml +++ /dev/null @@ -1,37 +0,0 @@ -c_stdlib: -- vs -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -cuda_compiler: -- nvcc -cuda_compiler_version: -- '11.8' -cxx_compiler: -- vs2019 -libblas: -- 3.9 *netlib -liblapack: -- 3.9 *netlib -numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.10.* *_cpython -- 3.11.* *_cpython -- 3.12.* *_cpython -- 3.9.* *_cpython -target_platform: -- win-64 -zip_keys: -- - cuda_compiler - - cuda_compiler_version -- - python - - numpy diff --git a/.gitattributes b/.gitattributes index 18f114a1..85ccb8f4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -24,4 +24,5 @@ bld.bat text eol=crlf /README.md linguist-generated=true azure-pipelines.yml linguist-generated=true build-locally.py linguist-generated=true +pixi.toml linguist-generated=true shippable.yml linguist-generated=true diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8f128908..25eb89e7 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @weiji14 @h-vetinari \ No newline at end of file +* @h-vetinari @weiji14 \ No newline at end of file diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml index a948c6c1..ba4cd64b 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -1,15 +1,150 @@ -# This file was added automatically by admin-migrations. Do not modify. -# It ensures that Github Actions can run once rerendered for the first time. +# This file was generated automatically from conda-smithy. To update this configuration, +# update the conda-forge.yml and/or the recipe/meta.yaml. # -*- mode: yaml -*- name: Build conda package on: - workflow_dispatch: + push: + + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true jobs: build: - name: Disabled build - runs-on: ubuntu-slim - if: false + name: ${{ matrix.CONFIG }} + runs-on: ${{ matrix.runs_on }} + timeout-minutes: 360 + strategy: + fail-fast: false + max-parallel: 50 + matrix: + include: + - CONFIG: linux_64_blas_implbliscuda_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 + 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 + 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 + 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 + 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 + 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 + 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 + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_ppc64le_ + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 steps: - - run: exit 0 + + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Build on Linux + id: build-linux + if: matrix.os == 'ubuntu' + env: + CONFIG: ${{ matrix.CONFIG }} + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + DOCKER_IMAGE: ${{ matrix.DOCKER_IMAGE }} + CI: github_actions + CONDA_FORGE_DOCKER_RUN_ARGS: "${{ matrix.CONDA_FORGE_DOCKER_RUN_ARGS }}" + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} + shell: bash + run: | + if [[ "$(uname -m)" == "x86_64" ]]; then + echo "::group::Configure binfmt_misc" + docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes + fi + export flow_run_id="github_$GITHUB_RUN_ID" + export remote_url="https://github.com/$GITHUB_REPOSITORY" + export sha="$GITHUB_SHA" + export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)" + export GIT_BRANCH="$(basename $GITHUB_REF)" + if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi + echo "::endgroup::" + ./.scripts/run_docker_build.sh + + - name: Build on macOS + id: build-macos + if: matrix.os == 'macos' + env: + CONFIG: ${{ matrix.CONFIG }} + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + CI: github_actions + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} + shell: bash + run: | + export flow_run_id="github_$GITHUB_RUN_ID" + export remote_url="https://github.com/$GITHUB_REPOSITORY" + export sha="$GITHUB_SHA" + export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)" + export GIT_BRANCH="$(basename $GITHUB_REF)" + if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi + ./.scripts/run_osx_build.sh + + - name: Build on windows + id: build-windows + if: matrix.os == 'windows' + shell: cmd + run: | + set "flow_run_id=github_%GITHUB_RUN_ID%" + set "remote_url=https://github.com/%GITHUB_REPOSITORY%" + set "sha=%GITHUB_SHA%" + call ".scripts\run_win_build.bat" + env: + # default value; make it explicit, as it needs to match with artefact + # generation below. Not configurable for now, can be revisited later + CONDA_BLD_DIR: C:\bld + MINIFORGE_HOME: ${{ contains(runner.arch, 'ARM') && 'C' || 'D' }}:\Miniforge + PYTHONUNBUFFERED: 1 + CONFIG: ${{ matrix.CONFIG }} + CI: github_actions + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 179afe55..47b5408a 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,8 @@ /build_artifacts *.pyc + +# Rattler-build's artifacts are in `output` when not specifying anything. +/output +# Pixi's configuration +.pixi diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 827a29fb..be060cb0 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -20,6 +20,7 @@ export PYTHONUNBUFFERED=1 export RECIPE_ROOT="${RECIPE_ROOT:-/home/conda/recipe_root}" export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" +export RATTLER_CACHE_DIR="${FEEDSTOCK_ROOT}/build_artifacts/pkg_cache" cat >~/.condarc < /dev/null -touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" \ No newline at end of file +touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 00f377a8..b63b5a05 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -12,7 +12,7 @@ source .scripts/logging_utils.sh set -xeo pipefail THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )" -PROVIDER_DIR="$(basename $THISDIR)" +PROVIDER_DIR="$(basename "$THISDIR")" FEEDSTOCK_ROOT="$( cd "$( dirname "$0" )/.." >/dev/null && pwd )" RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe" @@ -111,4 +111,4 @@ docker run ${DOCKER_RUN_ARGS} \ test -f "$DONE_CANARY" # This closes the last group opened in `build_steps.sh` -( endgroup "Final checks" ) 2> /dev/null \ No newline at end of file +( endgroup "Final checks" ) 2> /dev/null diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 0e3c3942..bac7141a 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -63,6 +63,25 @@ if [[ "${sha:-}" == "" ]]; then sha=$(git rev-parse HEAD) fi +if [[ "${OSX_SDK_DIR:-}" == "" ]]; then + if [[ "${CI:-}" == "" ]]; then + echo "Please set OSX_SDK_DIR to a directory where SDKs can be downloaded to. Aborting" + exit 1 + else + export OSX_SDK_DIR=/opt/conda-sdks + /usr/bin/sudo mkdir -p "${OSX_SDK_DIR}" + /usr/bin/sudo chown "${USER}" "${OSX_SDK_DIR}" + fi +else + if tmpf=$(mktemp -p "$OSX_SDK_DIR" tmp.XXXXXXXX 2>/dev/null); then + rm -f "$tmpf" + echo "OSX_SDK_DIR is writeable without sudo, continuing" + else + echo "User-provided OSX_SDK_DIR is not writeable for current user! Aborting" + exit 1 + fi +fi + echo -e "\n\nRunning the build setup script." source run_conda_forge_build_setup @@ -117,4 +136,4 @@ else fi ( endgroup "Uploading packages" ) 2> /dev/null -fi \ No newline at end of file +fi diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 283e1438..27c552b1 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -25,7 +25,7 @@ set "MICROMAMBA_EXE=%MICROMAMBA_TMPDIR%\micromamba.exe" echo Downloading micromamba %MICROMAMBA_VERSION% if not exist "%MICROMAMBA_TMPDIR%" mkdir "%MICROMAMBA_TMPDIR%" -certutil -urlcache -split -f "%MICROMAMBA_URL%" "%MICROMAMBA_EXE%" +powershell -ExecutionPolicy Bypass -Command "(New-Object Net.WebClient).DownloadFile('%MICROMAMBA_URL%', '%MICROMAMBA_EXE%')" if !errorlevel! neq 0 exit /b !errorlevel! echo Creating environment @@ -148,4 +148,4 @@ if /i "%CI%" == "azure" ( echo ##[endgroup] exit /b ) -exit /b \ No newline at end of file +exit /b diff --git a/LICENSE.txt b/LICENSE.txt index 2ec51d75..c5aa738f 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,5 @@ BSD-3-Clause license -Copyright (c) 2015-2022, conda-forge contributors -All rights reserved. +Copyright (c) 2015-2026, conda-forge contributors Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 66141276..02f6c178 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Summary: A library for efficient similarity search and clustering of dense vecto Development: https://github.com/facebookresearch/faiss -Documentation: https://rawgit.com/facebookresearch/faiss/master/docs/html/annotated.html +Documentation: https://faiss.ai/ Faiss is a library for efficient similarity search and clustering of dense vectors. It contains algorithms that search in sets of vectors of any size, up to ones that @@ -44,101 +44,108 @@ Current build status - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + @@ -229,12 +236,12 @@ it is possible to build and upload installable packages to the [conda-forge](https://anaconda.org/conda-forge) [anaconda.org](https://anaconda.org/) channel for Linux, Windows and OSX respectively. -To manage the continuous integration and simplify feedstock maintenance +To manage the continuous integration and simplify feedstock maintenance, [conda-smithy](https://github.com/conda-forge/conda-smithy) has been developed. Using the ``conda-forge.yml`` within this repository, it is possible to re-render all of this feedstock's supporting files (e.g. the CI configuration files) with ``conda smithy rerender``. -For more information please check the [conda-forge documentation](https://conda-forge.org/docs/). +For more information, please check the [conda-forge documentation](https://conda-forge.org/docs/). Terminology =========== @@ -261,7 +268,7 @@ merged, the recipe will be re-built and uploaded automatically to the everybody to install and use from the `conda-forge` channel. Note that all branches in the conda-forge/faiss-split-feedstock are immediately built and any created packages are uploaded, so PRs should be based -on branches in forks and branches in the main repository should only be used to +on branches in forks, and branches in the main repository should only be used to build distinct package versions. In order to produce a uniquely identifiable distribution: @@ -275,4 +282,5 @@ Feedstock Maintainers ===================== * [@h-vetinari](https://github.com/h-vetinari/) +* [@weiji14](https://github.com/weiji14/) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index eff4ad66..03594e44 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -7,7 +7,7 @@ stages: jobs: - job: Skip pool: - vmImage: 'ubuntu-22.04' + vmImage: 'ubuntu-latest' variables: DECODE_PERCENTS: 'false' RET: 'true' @@ -28,6 +28,5 @@ stages: condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true')) dependsOn: Check jobs: - - template: ./.azure-pipelines/azure-pipelines-linux.yml - template: ./.azure-pipelines/azure-pipelines-osx.yml - template: ./.azure-pipelines/azure-pipelines-win.yml \ No newline at end of file diff --git a/build-locally.py b/build-locally.py index c4a56c66..05493e4d 100755 --- a/build-locally.py +++ b/build-locally.py @@ -1,5 +1,6 @@ #!/bin/sh """exec" "python3" "$0" "$@" #""" # fmt: off # fmt: on + # # This file has been generated by conda-smithy in order to build the recipe # locally. @@ -10,6 +11,7 @@ import os import platform import subprocess +import sys from argparse import ArgumentParser @@ -26,13 +28,6 @@ def setup_environment(ns): os.path.dirname(__file__), "miniforge3" ) - # The default cache location might not be writable using docker on macOS. - if ns.config.startswith("linux") and platform.system() == "Darwin": - os.environ["CONDA_FORGE_DOCKER_RUN_ARGS"] = ( - os.environ.get("CONDA_FORGE_DOCKER_RUN_ARGS", "") - + " -e RATTLER_CACHE_DIR=/tmp/rattler_cache" - ) - def run_docker_build(ns): script = ".scripts/run_docker_build.sh" @@ -44,10 +39,19 @@ def run_osx_build(ns): subprocess.check_call([script]) +def run_win_build(ns): + script = ".scripts/run_win_build.bat" + subprocess.check_call(["cmd", "/D", "/Q", "/C", f"CALL {script}"]) + + def verify_config(ns): + choices_filter = ns.filter or "*" valid_configs = { - os.path.basename(f)[:-5] for f in glob.glob(".ci_support/*.yaml") + os.path.basename(f)[:-5] + for f in glob.glob(f".ci_support/{choices_filter}.yaml") } + if choices_filter != "*": + print(f"filtering for '{choices_filter}.yaml' configs") print(f"valid configs are {valid_configs}") if ns.config in valid_configs: print("Using " + ns.config + " configuration") @@ -60,38 +64,43 @@ def verify_config(ns): selections = list(enumerate(sorted(valid_configs), 1)) for i, c in selections: print(f"{i}. {c}") - s = input("\n> ") + try: + s = input("\n> ") + except KeyboardInterrupt: + print("\nno option selected, bye!", file=sys.stderr) + sys.exit(1) idx = int(s) - 1 ns.config = selections[idx][1] print(f"selected {ns.config}") else: raise ValueError("config " + ns.config + " is not valid") - # Remove the following, as implemented - if ns.config.startswith("win"): - raise ValueError( - f"only Linux/macOS configs currently supported, got {ns.config}" + if ( + ns.config.startswith("osx") + and platform.system() == "Darwin" + and not os.environ.get("OSX_SDK_DIR") + ): + raise RuntimeError( + "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=$PWD/SDKs' " + "to download the SDK automatically to '$PWD/SDKs/MacOSX.sdk'. " + "Note: OSX_SDK_DIR must be set to an absolute path. " + "Setting this variable implies agreement to the licensing terms of the SDK by Apple." ) - elif ns.config.startswith("osx"): - if "OSX_SDK_DIR" not in os.environ: - raise RuntimeError( - "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=$PWD/SDKs' " - "to download the SDK automatically to '$PWD/SDKs/MacOSX.sdk'. " - "Note: OSX_SDK_DIR must be set to an absolute path. " - "Setting this variable implies agreement to the licensing terms of the SDK by Apple." - ) def main(args=None): p = ArgumentParser("build-locally") p.add_argument("config", default=None, nargs="?") + p.add_argument( + "--filter", + default=None, + help="Glob string to filter which build choices are presented in interactive mode.", + ) p.add_argument( "--debug", action="store_true", help="Setup debug environment using `conda debug`", ) - p.add_argument( - "--output-id", help="If running debug, specify the output to setup." - ) + p.add_argument("--output-id", help="If running debug, specify the output to setup.") ns = p.parse_args(args=args) verify_config(ns) @@ -104,10 +113,10 @@ def main(args=None): run_docker_build(ns) elif ns.config.startswith("osx"): run_osx_build(ns) + elif ns.config.startswith("win"): + run_win_build(ns) finally: - recipe_license_file = os.path.join( - "recipe", "recipe-scripts-license.txt" - ) + recipe_license_file = os.path.join("recipe", "recipe-scripts-license.txt") if os.path.exists(recipe_license_file): os.remove(recipe_license_file) diff --git a/recipe/build-lib.bat b/recipe/build-lib.bat index 25595045..ea0745fa 100644 --- a/recipe/build-lib.bat +++ b/recipe/build-lib.bat @@ -17,9 +17,7 @@ if "%cuda_compiler_version%"=="None" ( REM this is to support PTX JIT compilation; see first link above or cf. REM devblogs.nvidia.com/cuda-pro-tip-understand-fat-binaries-jit-caching - if "%cuda_compiler_version%"=="11.8" ( - set "CMAKE_CUDA_ARCHS=53-real;62-real;72-real;75-real;80-real;86-real;89" - ) else if "%cuda_compiler_version:~0,2%"=="12" ( + 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" ) REM turn off _extremely_ noisy nvcc warnings diff --git a/recipe/build-lib.sh b/recipe/build-lib.sh index fae6a792..caeb09a3 100644 --- a/recipe/build-lib.sh +++ b/recipe/build-lib.sh @@ -2,7 +2,7 @@ set -ex declare -a CUDA_CONFIG_ARGS -if [ ${cuda_compiler_version} != "None" ]; then +if [ "${cuda_compiler_version}" != "None" ]; then # for documentation see e.g. # docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#building-for-maximum-compatibility # docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#ptxas-options-gpu-name @@ -12,20 +12,18 @@ if [ ${cuda_compiler_version} != "None" ]; then # this is to support PTX JIT compilation; see first link above or cf. # devblogs.nvidia.com/cuda-pro-tip-understand-fat-binaries-jit-caching - if [[ ${cuda_compiler_version} == 11.8 ]]; then - export CMAKE_CUDA_ARCHS="53-real;62-real;72-real;75-real;80-real;86-real;89" - elif [[ ${cuda_compiler_version} == 12.* ]]; then + 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" fi - FAISS_ENABLE_GPU="ON" + export FAISS_ENABLE_GPU="ON" CUDA_CONFIG_ARGS+=( -DCMAKE_CUDA_ARCHITECTURES="${CMAKE_CUDA_ARCHS}" ) # cmake does not generate output for the call below; echo some info echo "Set up extra cmake-args: CUDA_CONFIG_ARGS=${CUDA_CONFIG_ARGS+"${CUDA_CONFIG_ARGS[@]}"}" else - FAISS_ENABLE_GPU="OFF" + export FAISS_ENABLE_GPU="OFF" fi mkdir build diff --git a/recipe/build-pkg.bat b/recipe/build-pkg.bat index 81635efa..15fb28ec 100644 --- a/recipe/build-pkg.bat +++ b/recipe/build-pkg.bat @@ -23,7 +23,7 @@ cmake -G Ninja ^ ../faiss/python if %ERRORLEVEL% neq 0 exit 1 -cmake --build . --target swigfaiss --config Release -j %CPU_COUNT% +cmake --build . --target swigfaiss faiss_example_external_module --config Release -j %CPU_COUNT% if %ERRORLEVEL% neq 0 exit 1 :: Build actual python module. diff --git a/recipe/build-pkg.sh b/recipe/build-pkg.sh index ee0dc927..70c0259f 100644 --- a/recipe/build-pkg.sh +++ b/recipe/build-pkg.sh @@ -2,10 +2,10 @@ set -ex FAISS_ENABLE_GPU="" -if [ ${cuda_compiler_version} != "None" ]; then - FAISS_ENABLE_GPU="ON" +if [ "${cuda_compiler_version}" != "None" ]; then + export FAISS_ENABLE_GPU="ON" else - FAISS_ENABLE_GPU="OFF" + export FAISS_ENABLE_GPU="OFF" fi # see https://github.com/swig/swig/issues/568 @@ -17,14 +17,16 @@ mkdir build_python pushd build_python # Build vanilla version (no avx2), see build-lib.sh +Python_NumPy_INCLUDE_DIR="$(python -c 'import numpy; print(numpy.get_include())')" cmake -G Ninja \ ${CMAKE_ARGS} \ -Dfaiss_ROOT=_libfaiss_stage/ \ + -DFAISS_ENABLE_GPU=${FAISS_ENABLE_GPU} \ -DCMAKE_BUILD_TYPE=Release \ - -DPython_NumPy_INCLUDE_DIR=$SP_DIR/numpy/core/include \ + -DPython_NumPy_INCLUDE_DIR=${Python_NumPy_INCLUDE_DIR} \ ../faiss/python -cmake --build . --target swigfaiss -j $CPU_COUNT +cmake --build . --target swigfaiss faiss_example_external_module -j $CPU_COUNT # Build actual python module. $PYTHON setup.py install --single-version-externally-managed --record=record.txt --prefix=$PREFIX diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 9fa738fa..9cd68470 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,12 +1,17 @@ -{% set version = "1.9.0" %} +{% set version = "1.10.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 %} +# 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. {% if cuda_compiler_version != "None" %} -{% set cuda_major = environ.get("cuda_compiler_version", "11.8").split(".")[0] | int %} -{% else %} -{% set cuda_major = 0 %} -{% set cuda_compiler_version = "None" %} +{% set build = build + 200 %} +{% endif %} + +{% if blas_impl == "mkl" %} +{% set build = build + 100 %} {% endif %} # headers for upstream-folders 'faiss/*.h', 'faiss/{impl,invlists,utils}/*.h', @@ -41,7 +46,7 @@ package: source: url: https://github.com/facebookresearch/faiss/archive/v{{ version }}.tar.gz - sha256: f6721f1a479b0bdd8547e5bb0dbfa872643e7ea37686c6bf6fc99fb933b3fe4f + sha256: 65b5493d6b8cb992f104677cab255a9b71ef1e1d2ea3b1500dc995c68b429949 patches: - patches/0001-adapt-header-target-directory-to-outputname.patch # patch for avoiding crash in GPU test suite on windows @@ -56,20 +61,21 @@ source: - patches/0006-no-more-Release-subfolder.patch # more fixes - patches/0007-fix-index-type-in-openmp-loop.patch - # compare https://github.com/facebookresearch/faiss/pull/2927 - - patches/0008-loosen-test-tolerance-in-test_ivf_train_2level.patch - - patches/0009-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch # [win] - - patches/0010-don-t-rely-on-luck-for-initialization-order-on-win-C.patch # [win and cuda_compiler_version != "None"] + - 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/0011-fix-a-MSVC-problem.patch # [win and cuda_compiler_version != "None"] - # backport https://github.com/facebookresearch/faiss/pull/4010 for missing headers - - patches/0012-Some-chore-fixes-4010.patch + - 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/0013-disable-loading-different-library-flavours-based-on-.patch + - patches/0011-disable-loading-different-library-flavours-based-on-.patch build: - number: 0 + number: {{ build }} + # Windows CUDA builds unsupported - https://github.com/facebookresearch/faiss/issues/2985 + skip: true # [win and cuda_compiler_version != "None"] + # Windows + MKL disabled because of too many segfaults, see + # https://github.com/conda-forge/faiss-split-feedstock/pull/83#discussion_r2948647890 + skip: true # [win and blas_impl == "mkl"] requirements: build: @@ -91,14 +97,14 @@ outputs: script: build-lib.sh # [unix] script: build-lib.bat # [win] build: - string: "h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}_{{ faiss_proc_type }}" # [cuda_compiler_version == "None"] - string: "cuda{{ cuda_compiler_version | replace('.', '') }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}_{{ faiss_proc_type }}" # [cuda_compiler_version != "None"] + string: "cpu_{{ blas_impl }}_h{{ PKG_HASH }}_{{ build }}" # [cuda_compiler_version == "None"] + string: "cuda{{ cuda_compiler_version | replace('.', '') }}_{{ blas_impl }}_h{{ PKG_HASH }}_{{ build }}" # [cuda_compiler_version != "None"] run_exports: # faiss follows SemVer, so restrict packages built with libfaiss to use # at least the same version at runtime, but below the next major version. - libfaiss >={{ version }},<2 # additionally, we need to ensure matching proc-type - - libfaiss =*=*_{{ faiss_proc_type }} + - libfaiss * {{ faiss_proc_type }}* requirements: build: - {{ stdlib('c') }} @@ -108,7 +114,7 @@ outputs: - python # [build_platform != target_platform] - cmake - ninja - {% if cuda_major >= 12 %} + {% if cuda_compiler_version != "None" %} - cuda-version {{ cuda_compiler_version }} # [build_platform != target_platform] - cuda-cudart-dev # [build_platform != target_platform] - cuda-profiler-api # [build_platform != target_platform] @@ -116,21 +122,23 @@ outputs: - libcurand-dev # [build_platform != target_platform] {% endif %} host: - - libgomp # [linux] - - llvm-openmp # [osx] - - libblas # [not osx] - - liblapack # [not osx] - {% if cuda_major >= 12 %} + - blas-devel * *{{ blas_impl }} + - llvm-openmp # [unix] + # - intel-openmp # [win and blas_impl == 'mkl'] + {% if cuda_compiler_version != "None" %} - cuda-version {{ cuda_compiler_version }} - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev {% endif %} + run: + - libblas * *{{ blas_impl }} + - {{ blas_impl }} run_constrained: - faiss-cpu <0.0a0 # [cuda_compiler_version != "None"] - faiss-gpu <0.0a0 # [cuda_compiler_version == "None"] - - faiss-proc =*={{ faiss_proc_type }} + - faiss-proc * {{ faiss_proc_type }} test: commands: @@ -159,8 +167,8 @@ outputs: script: build-pkg.sh # [not win] script: build-pkg.bat # [win] build: - string: "py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}_{{ faiss_proc_type }}" # [cuda_compiler_version == "None"] - string: "py{{ CONDA_PY }}cuda{{ cuda_compiler_version | replace('.', '') }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}_{{ faiss_proc_type }}" # [cuda_compiler_version != "None"] + string: "cpu_{{ blas_impl }}_py{{ CONDA_PY }}_h{{ PKG_HASH }}_{{ build }}" # [cuda_compiler_version == "None"] + string: "cuda{{ cuda_compiler_version | replace('.', '') }}_{{ blas_impl }}_py{{ CONDA_PY }}_h{{ PKG_HASH }}_{{ build }}" # [cuda_compiler_version != "None"] requirements: build: - {{ stdlib('c') }} @@ -177,21 +185,21 @@ outputs: - pip - setuptools - numpy - - libfaiss ={{ version }}=*_{{ faiss_proc_type }} - - libgomp # [linux] - - llvm-openmp # [osx] - {% if cuda_major >= 12 %} + - libfaiss {{ version }}.* {{ faiss_proc_type }}* + - llvm-openmp # [unix] + # - intel-openmp # [win and blas_impl == 'mkl'] + {% if cuda_compiler_version != "None" %} - cuda-version {{ cuda_compiler_version }} - - libcublas-dev # [win] + - libcublas-dev {% endif %} run: - python - packaging - - libfaiss ={{ version }}=*_{{ faiss_proc_type }} + - libfaiss {{ version }}.* {{ faiss_proc_type }}* run_constrained: - faiss-cpu <0.0a0 # [cuda_compiler_version != "None"] - faiss-gpu <0.0a0 # [cuda_compiler_version == "None"] - - faiss-proc =*={{ faiss_proc_type }} + - faiss-proc * {{ faiss_proc_type }} {% if not (aarch64 or ppc64le) or py == 311 %} # only run the full test suite for one python version when in emulation @@ -199,10 +207,6 @@ outputs: # in behaviour across python versions anyway test: requires: - # trying to test all blas-variants runs into conda/conda-build#3947 - # - libblas =*=*{{ blas_impl }} - # testing with MKL on x86_64, as upstream considers this the most important - - libblas =*=*mkl # [x86_64] - scipy - pytest files: @@ -223,8 +227,9 @@ outputs: {% set skips = skips + " or (test_contrib and test_checkpoint)" %} # [win] # marginal tolerance violation {% set skips = skips + " or (TestProductLocalSearchQuantizer and test_lut)" %} # [osx] - # two failing tests on on aarch (test_index_accuracy & test_index_accuracy2) - {% set skips = skips + " or (test_residual_quantizer and test_index_accuracy)" %} # [aarch64 or ppc64le] + # two failing tests on on aarch and win (test_index_accuracy & test_index_accuracy2) + {% set skips = skips + " or (test_residual_quantizer and test_index_accuracy)" %} # [aarch64 or ppc64le or win] + {% set skips = skips + " or (test_local_search_quantizer and test_index_accuracy2)" %} # [win] # test errors on aarch (probably due to emulation) {% set skips = skips + " or (TestPCA and test_pca)" %} # [aarch64] {% set skips = skips + " or test_PQ4_speed" %} # [aarch64] @@ -243,6 +248,31 @@ outputs: {% set skips = skips + " or (TestIndexProduct and test_accuracy1)" %} {% set skips = skips + " or test_wrapped_quantizer_HNSW" %} {% endif %} + # Failing tests on NumPy 2: TestPreassigned::test_float, + # 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 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"] + # 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'] + {% set skips = skips + " or (TestBucketSort and test_bucket_sort_inplace_parallel)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestMapInt64ToInt64 and test_small)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestClone and test_IDMap)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestClone and test_IVF)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestBigBatchSearch and test_Flat)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestBigBatchSearch and test_PQ)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestBigBatchSearch and test_SQ)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestBigBatchSearch and test_checkpoint)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestInvlistSort and test_sort)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestIVFAQFastScan)" %} # [win and blas_impl == 'mkl'] + {% set skips = skips + " or (TestIVFPAQFastScan)" %} # [win and blas_impl == 'mkl'] # the linux & windows CI agents support AVX2 (OSX doesn't yet), so by default, # we expect faiss will load the library with AVX2-support, see # https://github.com/facebookresearch/faiss/blob/v1.7.1/faiss/python/loader.py#L52-L66 @@ -259,7 +289,7 @@ outputs: skip: true # [cuda_compiler_version != "None"] requirements: run: - - faiss ={{ version }}=*_cpu + - faiss {{ version }}.* cpu* test: imports: - faiss @@ -269,7 +299,7 @@ outputs: skip: true # [cuda_compiler_version == "None"] requirements: run: - - faiss ={{ version }}=*_cuda + - faiss {{ version }}.* cuda* test: imports: - faiss @@ -293,7 +323,7 @@ about: [recommend](https://github.com/conda-forge/staged-recipes/pull/11337#issuecomment-623718460) using the MKL implementation of blas/lapack. You can ensure that this is installed by adding "libblas =*=*mkl" to your dependencies. - doc_url: https://rawgit.com/facebookresearch/faiss/master/docs/html/annotated.html + doc_url: https://faiss.ai/ dev_url: https://github.com/facebookresearch/faiss extra: diff --git a/recipe/patches/0001-adapt-header-target-directory-to-outputname.patch b/recipe/patches/0001-adapt-header-target-directory-to-outputname.patch index 1617bc41..c1a95200 100644 --- a/recipe/patches/0001-adapt-header-target-directory-to-outputname.patch +++ b/recipe/patches/0001-adapt-header-target-directory-to-outputname.patch @@ -1,7 +1,7 @@ -From b10e7de1831aeb28348b55383c3e139eac9ede00 Mon Sep 17 00:00:00 2001 +From 0887bdb21ebdc9e98753aa4fa97c6bc68ed44810 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 14 Feb 2021 15:52:27 +0100 -Subject: [PATCH 01/13] adapt header target directory to outputname +Subject: [PATCH 01/11] adapt header target directory to outputname --- faiss/CMakeLists.txt | 20 ++++++++++++++++---- @@ -9,17 +9,17 @@ Subject: [PATCH 01/13] adapt header target directory to outputname 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/faiss/CMakeLists.txt b/faiss/CMakeLists.txt -index 2871d9747..fbd17a23b 100644 +index 6e9eb883..99d8285e 100644 --- a/faiss/CMakeLists.txt +++ b/faiss/CMakeLists.txt -@@ -233,9 +233,14 @@ endif() +@@ -242,9 +242,14 @@ endif() set(FAISS_HEADERS ${FAISS_HEADERS} PARENT_SCOPE) add_library(faiss ${FAISS_SRC}) +set_target_properties(faiss PROPERTIES OUTPUT_NAME "faiss") add_library(faiss_avx2 ${FAISS_SRC}) --if(NOT FAISS_OPT_LEVEL STREQUAL "avx2" AND NOT FAISS_OPT_LEVEL STREQUAL "avx512") +-if(NOT FAISS_OPT_LEVEL STREQUAL "avx2" AND NOT FAISS_OPT_LEVEL STREQUAL "avx512" AND NOT FAISS_OPT_LEVEL STREQUAL "avx512_spr") +set_target_properties(faiss_avx2 PROPERTIES OUTPUT_NAME "faiss_avx2") + +if(FAISS_OPT_LEVEL STREQUAL "avx2") @@ -28,7 +28,7 @@ index 2871d9747..fbd17a23b 100644 set_target_properties(faiss_avx2 PROPERTIES EXCLUDE_FROM_ALL TRUE) endif() if(NOT WIN32) -@@ -373,6 +378,13 @@ else() +@@ -394,6 +399,13 @@ else() target_link_libraries(faiss_sve PRIVATE ${LAPACK_LIBRARIES}) endif() @@ -42,7 +42,7 @@ index 2871d9747..fbd17a23b 100644 install(TARGETS faiss EXPORT faiss-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} -@@ -405,7 +417,7 @@ endif() +@@ -433,7 +445,7 @@ endif() foreach(header ${FAISS_HEADERS}) get_filename_component(dir ${header} DIRECTORY ) install(FILES ${header} @@ -51,7 +51,7 @@ index 2871d9747..fbd17a23b 100644 ) endforeach() -@@ -422,9 +434,9 @@ configure_file(${PROJECT_SOURCE_DIR}/cmake/faiss-config.cmake.in +@@ -450,9 +462,9 @@ configure_file(${PROJECT_SOURCE_DIR}/cmake/faiss-config.cmake.in ) install(FILES ${PROJECT_BINARY_DIR}/cmake/faiss-config.cmake ${PROJECT_BINARY_DIR}/cmake/faiss-config-version.cmake @@ -64,11 +64,11 @@ index 2871d9747..fbd17a23b 100644 + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${libname} ) diff --git a/faiss/gpu/CMakeLists.txt b/faiss/gpu/CMakeLists.txt -index b84362266..8a3cc36ef 100644 +index 16574aab..bcd8a137 100644 --- a/faiss/gpu/CMakeLists.txt +++ b/faiss/gpu/CMakeLists.txt -@@ -306,10 +306,17 @@ target_link_libraries(faiss_avx2 PRIVATE "$") +@@ -309,10 +309,17 @@ target_link_libraries(faiss_avx512 PRIVATE "$") target_link_libraries(faiss_sve PRIVATE "$") +# to distinguish between faiss and faiss_avx2 diff --git a/recipe/patches/0002-skip-test_stress-for-GPU-on-windows.patch b/recipe/patches/0002-skip-test_stress-for-GPU-on-windows.patch index 6fe6e587..2c97275d 100644 --- a/recipe/patches/0002-skip-test_stress-for-GPU-on-windows.patch +++ b/recipe/patches/0002-skip-test_stress-for-GPU-on-windows.patch @@ -1,14 +1,14 @@ -From ad8cbb02c90f10b5222498024b0000d96dd432df Mon Sep 17 00:00:00 2001 +From e3dcf950cfbb74b9997252e115377bfdf1cb6811 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Fri, 19 Feb 2021 14:14:31 +0100 -Subject: [PATCH 02/13] skip test_stress for GPU on windows +Subject: [PATCH 02/11] skip test_stress for GPU on windows --- faiss/gpu/test/test_gpu_basics.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/faiss/gpu/test/test_gpu_basics.py b/faiss/gpu/test/test_gpu_basics.py -index 4b4024d23..0798c7f6a 100755 +index 0156e842..cf9328cc 100755 --- a/faiss/gpu/test/test_gpu_basics.py +++ b/faiss/gpu/test/test_gpu_basics.py @@ -6,6 +6,7 @@ diff --git a/recipe/patches/0003-enable-building-libfaiss_avx2-without-libfaiss.patch b/recipe/patches/0003-enable-building-libfaiss_avx2-without-libfaiss.patch index 4e4be6c6..b149c785 100644 --- a/recipe/patches/0003-enable-building-libfaiss_avx2-without-libfaiss.patch +++ b/recipe/patches/0003-enable-building-libfaiss_avx2-without-libfaiss.patch @@ -1,17 +1,17 @@ -From e7d62b3d0d33d9538b7c83e4abbdd00919868a2a Mon Sep 17 00:00:00 2001 +From 2b62a2fe546d13bf06720088c8ce00a6c9931b6c Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Wed, 2 Jun 2021 22:58:19 +0200 -Subject: [PATCH 03/13] enable building libfaiss_avx2 without libfaiss +Subject: [PATCH 03/11] enable building libfaiss_avx2 without libfaiss --- faiss/CMakeLists.txt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/faiss/CMakeLists.txt b/faiss/CMakeLists.txt -index fbd17a23b..53e27d3f1 100644 +index 99d8285e..ffab1189 100644 --- a/faiss/CMakeLists.txt +++ b/faiss/CMakeLists.txt -@@ -385,18 +385,21 @@ else() +@@ -406,18 +406,21 @@ else() get_target_property(libname faiss OUTPUT_NAME) endif() diff --git a/recipe/patches/0004-increase-tolerance-for-marginally-failing-test.patch b/recipe/patches/0004-increase-tolerance-for-marginally-failing-test.patch index ab9bc1bc..48a29caf 100644 --- a/recipe/patches/0004-increase-tolerance-for-marginally-failing-test.patch +++ b/recipe/patches/0004-increase-tolerance-for-marginally-failing-test.patch @@ -1,17 +1,17 @@ -From d47fbe5168ec7c1b5732f3c945bd907de055bbbb Mon Sep 17 00:00:00 2001 +From 7f0beb401d2639c5696644adee3219b7eb8dbcbe Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sat, 5 Jun 2021 01:45:14 +0200 -Subject: [PATCH 04/13] increase tolerance for marginally failing test +Subject: [PATCH 04/11] increase tolerance for marginally failing test --- tests/test_residual_quantizer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_residual_quantizer.py b/tests/test_residual_quantizer.py -index f4381607e..0ce4cffd2 100644 +index c9ae4090..a640a8d7 100644 --- a/tests/test_residual_quantizer.py +++ b/tests/test_residual_quantizer.py -@@ -677,7 +677,7 @@ class TestAdditiveQuantizerWithLUT(unittest.TestCase): +@@ -708,7 +708,7 @@ class TestAdditiveQuantizerWithLUT(unittest.TestCase): norms = np.zeros(1 << aq.tot_bits, dtype="float32") aq.compute_centroid_norms(sp(norms)) diff --git a/recipe/patches/0005-add-bigobj-to-swigfaiss-compile-options-on-windows.patch b/recipe/patches/0005-add-bigobj-to-swigfaiss-compile-options-on-windows.patch index 86e069b0..acfee147 100644 --- a/recipe/patches/0005-add-bigobj-to-swigfaiss-compile-options-on-windows.patch +++ b/recipe/patches/0005-add-bigobj-to-swigfaiss-compile-options-on-windows.patch @@ -1,17 +1,17 @@ -From 78882cdef9eb9c25557460a7f94dcd0067914ff3 Mon Sep 17 00:00:00 2001 +From accd9b17d5b53c05c600498d982834cdb6bc686d Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sat, 5 Jun 2021 16:29:53 +0200 -Subject: [PATCH 05/13] add /bigobj to swigfaiss compile options on windows +Subject: [PATCH 05/11] add /bigobj to swigfaiss compile options on windows --- faiss/python/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/faiss/python/CMakeLists.txt b/faiss/python/CMakeLists.txt -index aea99af79..298725701 100644 +index 3fc46f4c..ec8cfd0a 100644 --- a/faiss/python/CMakeLists.txt +++ b/faiss/python/CMakeLists.txt -@@ -33,6 +33,8 @@ macro(configure_swigfaiss source) +@@ -32,6 +32,8 @@ macro(configure_swigfaiss source) set_source_files_properties(${source} PROPERTIES SWIG_FLAGS -DSWIGWIN ) diff --git a/recipe/patches/0006-no-more-Release-subfolder.patch b/recipe/patches/0006-no-more-Release-subfolder.patch index 06c1e6c4..d61c0a1b 100644 --- a/recipe/patches/0006-no-more-Release-subfolder.patch +++ b/recipe/patches/0006-no-more-Release-subfolder.patch @@ -1,21 +1,21 @@ -From f155504480573b6e66cc97f4bd665f0590a653bb Mon Sep 17 00:00:00 2001 +From bd0e39e64d0dd7a81f0129f790ee695fb396a0fe Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Thu, 25 May 2023 22:29:29 +1100 -Subject: [PATCH 06/13] no more Release/ subfolder +Subject: [PATCH 06/11] no more Release/ subfolder --- faiss/python/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faiss/python/setup.py b/faiss/python/setup.py -index 46cacc051..68945531a 100644 +index 23611cb3..4745b970 100644 --- a/faiss/python/setup.py +++ b/faiss/python/setup.py -@@ -21,7 +21,7 @@ shutil.copyfile("extra_wrappers.py", "faiss/extra_wrappers.py") +@@ -23,7 +23,7 @@ shutil.copyfile("extra_wrappers.py", "faiss/extra_wrappers.py") shutil.copyfile("array_conversions.py", "faiss/array_conversions.py") - ext = ".pyd" if platform.system() == 'Windows' else ".so" --prefix = "Release/" * (platform.system() == 'Windows') + ext = ".pyd" if platform.system() == "Windows" else ".so" +-prefix = "Release/" * (platform.system() == "Windows") +prefix = "" swigfaiss_generic_lib = f"{prefix}_swigfaiss{ext}" diff --git a/recipe/patches/0007-fix-index-type-in-openmp-loop.patch b/recipe/patches/0007-fix-index-type-in-openmp-loop.patch index e9c9920c..84f229cc 100644 --- a/recipe/patches/0007-fix-index-type-in-openmp-loop.patch +++ b/recipe/patches/0007-fix-index-type-in-openmp-loop.patch @@ -1,14 +1,14 @@ -From 60b99f230450a3e52a03c2f6ace7005b8d331e55 Mon Sep 17 00:00:00 2001 +From 683173795de508089b5ba4092a5e19197b908ea8 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Fri, 26 May 2023 13:16:44 +1100 -Subject: [PATCH 07/13] fix index type in openmp loop +Subject: [PATCH 07/11] fix index type in openmp loop --- faiss/utils/distances_fused/simdlib_based.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faiss/utils/distances_fused/simdlib_based.cpp b/faiss/utils/distances_fused/simdlib_based.cpp -index 309fb7211..6a9698b94 100644 +index 146dfe88..1a531c1a 100644 --- a/faiss/utils/distances_fused/simdlib_based.cpp +++ b/faiss/utils/distances_fused/simdlib_based.cpp @@ -260,7 +260,7 @@ void exhaustive_L2sqr_fused_cmax( diff --git a/recipe/patches/0009-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch b/recipe/patches/0008-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch similarity index 59% rename from recipe/patches/0009-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch rename to recipe/patches/0008-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch index 79f5aca5..7031aeb2 100644 --- a/recipe/patches/0009-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch +++ b/recipe/patches/0008-don-t-hide-faiss-gpu-symbols-temporarily-install-fai.patch @@ -1,7 +1,7 @@ -From 2adc5bcc2c3f88f38fd47ba2d66ea2d2487b7c44 Mon Sep 17 00:00:00 2001 +From 85860f8b347620df512ed729f5258194b5aac707 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Thu, 8 Aug 2024 08:26:56 +1100 -Subject: [PATCH 09/13] don't hide faiss::gpu symbols; temporarily install +Subject: [PATCH 08/11] don't hide faiss::gpu symbols; temporarily install faiss_gpu.lib this is a windows-only patch; we need to faiss_gpu.lib to be able @@ -13,25 +13,27 @@ it should not actually make it into the final package. We also need to mark the symbols PUBLIC that faiss_gpu needs itself, e.g. from cuBLAS. --- - faiss/gpu/CMakeLists.txt | 13 +++++++++---- - faiss/python/CMakeLists.txt | 8 ++++---- - 2 files changed, 13 insertions(+), 8 deletions(-) + faiss/gpu/CMakeLists.txt | 15 ++++++++++----- + faiss/python/CMakeLists.txt | 10 +++++----- + 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/faiss/gpu/CMakeLists.txt b/faiss/gpu/CMakeLists.txt -index 8a3cc36ef..fd8475dad 100644 +index bcd8a137..c5bcc917 100644 --- a/faiss/gpu/CMakeLists.txt +++ b/faiss/gpu/CMakeLists.txt -@@ -301,10 +301,15 @@ endif() +@@ -303,11 +303,16 @@ endif() # Export FAISS_GPU_HEADERS variable to parent scope. set(FAISS_GPU_HEADERS ${FAISS_GPU_HEADERS} PARENT_SCOPE) -target_link_libraries(faiss PRIVATE "$") -target_link_libraries(faiss_avx2 PRIVATE "$") -target_link_libraries(faiss_avx512 PRIVATE "$") +-target_link_libraries(faiss_avx512_spr PRIVATE "$") -target_link_libraries(faiss_sve PRIVATE "$") +target_link_libraries(faiss PUBLIC "$") +target_link_libraries(faiss_avx2 PUBLIC "$") +target_link_libraries(faiss_avx512 PUBLIC "$") ++target_link_libraries(faiss_avx512_spr PUBLIC "$") +target_link_libraries(faiss_sve PUBLIC "$") + +install(TARGETS faiss_gpu @@ -42,27 +44,23 @@ index 8a3cc36ef..fd8475dad 100644 # to distinguish between faiss and faiss_avx2 if(FAISS_OPT_LEVEL STREQUAL "avx2") diff --git a/faiss/python/CMakeLists.txt b/faiss/python/CMakeLists.txt -index 298725701..98fa53731 100644 +index ec8cfd0a..a7c5f575 100644 --- a/faiss/python/CMakeLists.txt +++ b/faiss/python/CMakeLists.txt -@@ -178,16 +178,16 @@ if(FAISS_ENABLE_GPU) - if(FAISS_ENABLE_RAFT) - find_package(raft COMPONENTS compiled distributed) +@@ -219,11 +219,11 @@ if(FAISS_ENABLE_GPU) + if(FAISS_ENABLE_CUVS) + find_package(cuvs) endif() -- target_link_libraries(swigfaiss PRIVATE CUDA::cudart -+ target_link_libraries(swigfaiss PRIVATE CUDA::cudart CUDA::cublas - $<$:raft::raft> - $<$:nvidia::cutlass::cutlass>) -- target_link_libraries(swigfaiss_avx2 PRIVATE CUDA::cudart -+ target_link_libraries(swigfaiss_avx2 PRIVATE CUDA::cudart CUDA::cublas - $<$:raft::raft> - $<$:nvidia::cutlass::cutlass>) -- target_link_libraries(swigfaiss_avx512 PRIVATE CUDA::cudart -+ target_link_libraries(swigfaiss_avx512 PRIVATE CUDA::cudart CUDA::cublas - $<$:raft::raft> - $<$:nvidia::cutlass::cutlass>) -- target_link_libraries(swigfaiss_sve PRIVATE CUDA::cudart -+ target_link_libraries(swigfaiss_sve PRIVATE CUDA::cudart CUDA::cublas - $<$:raft::raft> - $<$:nvidia::cutlass::cutlass>) +- target_link_libraries(swigfaiss PRIVATE CUDA::cudart $<$:cuvs::cuvs>) +- target_link_libraries(swigfaiss_avx2 PRIVATE CUDA::cudart $<$:cuvs::cuvs>) +- target_link_libraries(swigfaiss_avx512 PRIVATE CUDA::cudart $<$:cuvs::cuvs>) +- target_link_libraries(swigfaiss_avx512_spr PRIVATE CUDA::cudart $<$:cuvs::cuvs>) +- target_link_libraries(swigfaiss_sve PRIVATE CUDA::cudart $<$:cuvs::cuvs>) ++ target_link_libraries(swigfaiss PRIVATE CUDA::cudart CUDA::cublas $<$:cuvs::cuvs>) ++ target_link_libraries(swigfaiss_avx2 PRIVATE CUDA::cudart CUDA::cublas $<$:cuvs::cuvs>) ++ target_link_libraries(swigfaiss_avx512 PRIVATE CUDA::cudart CUDA::cublas $<$:cuvs::cuvs>) ++ target_link_libraries(swigfaiss_avx512_spr PRIVATE CUDA::cudart CUDA::cublas $<$:cuvs::cuvs>) ++ target_link_libraries(swigfaiss_sve PRIVATE CUDA::cudart CUDA::cublas $<$:cuvs::cuvs>) endif() + endif() + diff --git a/recipe/patches/0008-loosen-test-tolerance-in-test_ivf_train_2level.patch b/recipe/patches/0008-loosen-test-tolerance-in-test_ivf_train_2level.patch deleted file mode 100644 index 77b93798..00000000 --- a/recipe/patches/0008-loosen-test-tolerance-in-test_ivf_train_2level.patch +++ /dev/null @@ -1,23 +0,0 @@ -From c26cefc4fc7923596057eb8afc1eb030cc63834f Mon Sep 17 00:00:00 2001 -From: "H. Vetinari" -Date: Wed, 7 Aug 2024 16:21:52 +1100 -Subject: [PATCH 08/13] loosen test tolerance in test_ivf_train_2level - -compare https://github.com/facebookresearch/faiss/commit/391601dc3f4793e10aaf9d21f5bbe2a94ecf4f50 ---- - tests/test_contrib.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/test_contrib.py b/tests/test_contrib.py -index a2eb7046b..df342c3a4 100644 ---- a/tests/test_contrib.py -+++ b/tests/test_contrib.py -@@ -567,7 +567,7 @@ class TestClustering(unittest.TestCase): - - # normally 47 / 200 differences - ndiff = (Iref != Inew).sum() -- self.assertLess(ndiff, 51) -+ self.assertLess(ndiff, 53) - - - class TestBigBatchSearch(unittest.TestCase): diff --git a/recipe/patches/0010-don-t-rely-on-luck-for-initialization-order-on-win-C.patch b/recipe/patches/0009-don-t-rely-on-luck-for-initialization-order-on-win-C.patch similarity index 79% rename from recipe/patches/0010-don-t-rely-on-luck-for-initialization-order-on-win-C.patch rename to recipe/patches/0009-don-t-rely-on-luck-for-initialization-order-on-win-C.patch index 5d1d41a5..22ffcfca 100644 --- a/recipe/patches/0010-don-t-rely-on-luck-for-initialization-order-on-win-C.patch +++ b/recipe/patches/0009-don-t-rely-on-luck-for-initialization-order-on-win-C.patch @@ -1,7 +1,7 @@ -From 1ef6a481fc6138cb45d4f5b19aeee29216221dbd Mon Sep 17 00:00:00 2001 +From 5a5cf87826a2881def2bb50420f530ef3b6ea9a8 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Thu, 8 Aug 2024 15:40:34 +1100 -Subject: [PATCH 10/13] don't rely on luck for initialization order on win+CUDA +Subject: [PATCH 09/11] don't rely on luck for initialization order on win+CUDA --- faiss/gpu/GpuIndex.cu | 20 -------------------- @@ -9,10 +9,10 @@ Subject: [PATCH 10/13] don't rely on luck for initialization order on win+CUDA 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/faiss/gpu/GpuIndex.cu b/faiss/gpu/GpuIndex.cu -index d1ae3b538..39626d9c9 100644 +index 033cb9aa..08769920 100644 --- a/faiss/gpu/GpuIndex.cu +++ b/faiss/gpu/GpuIndex.cu -@@ -526,24 +526,4 @@ bool isGpuIndexImplemented(faiss::Index* index) { +@@ -525,24 +525,4 @@ bool isGpuIndexImplemented(faiss::Index* index) { } // namespace gpu @@ -24,8 +24,8 @@ index d1ae3b538..39626d9c9 100644 -struct InitGpuCompileOptions { - InitGpuCompileOptions() { - gpu_compile_options = "GPU "; --#ifdef USE_NVIDIA_RAFT -- gpu_compile_options += "NVIDIA_RAFT "; +-#ifdef USE_NVIDIA_CUVS +- gpu_compile_options += "NVIDIA_CUVS "; -#endif - -#ifdef USE_AMD_ROCM @@ -38,7 +38,7 @@ index d1ae3b538..39626d9c9 100644 - } // namespace faiss diff --git a/faiss/utils/utils.cpp b/faiss/utils/utils.cpp -index d0883ca96..04d5c4f09 100644 +index 85bf1348..326e019c 100644 --- a/faiss/utils/utils.cpp +++ b/faiss/utils/utils.cpp @@ -104,8 +104,10 @@ int sgemv_( diff --git a/recipe/patches/0011-fix-a-MSVC-problem.patch b/recipe/patches/0010-fix-a-MSVC-problem.patch similarity index 90% rename from recipe/patches/0011-fix-a-MSVC-problem.patch rename to recipe/patches/0010-fix-a-MSVC-problem.patch index 3bf809bf..272fff76 100644 --- a/recipe/patches/0011-fix-a-MSVC-problem.patch +++ b/recipe/patches/0010-fix-a-MSVC-problem.patch @@ -1,7 +1,7 @@ -From d05531f39dd8204338046f8e72ed306a98ecca09 Mon Sep 17 00:00:00 2001 +From 396afcd9bf23436e9a9b60af0c27b4eda8a6da0e Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Thu, 19 Dec 2024 20:21:14 +1100 -Subject: [PATCH 11/13] fix a MSVC problem +Subject: [PATCH 10/11] fix a MSVC problem see https://github.com/facebookresearch/faiss/issues/2985 --- @@ -9,7 +9,7 @@ see https://github.com/facebookresearch/faiss/issues/2985 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/faiss/gpu/impl/PQCodeDistances-inl.cuh b/faiss/gpu/impl/PQCodeDistances-inl.cuh -index f054915b7..c49c8f267 100644 +index e2e66f30..555916f6 100644 --- a/faiss/gpu/impl/PQCodeDistances-inl.cuh +++ b/faiss/gpu/impl/PQCodeDistances-inl.cuh @@ -509,7 +509,7 @@ void runPQCodeDistancesMM( diff --git a/recipe/patches/0013-disable-loading-different-library-flavours-based-on-.patch b/recipe/patches/0011-disable-loading-different-library-flavours-based-on-.patch similarity index 80% rename from recipe/patches/0013-disable-loading-different-library-flavours-based-on-.patch rename to recipe/patches/0011-disable-loading-different-library-flavours-based-on-.patch index e5e9c183..f7e1567b 100644 --- a/recipe/patches/0013-disable-loading-different-library-flavours-based-on-.patch +++ b/recipe/patches/0011-disable-loading-different-library-flavours-based-on-.patch @@ -1,7 +1,7 @@ -From a111d1873d60680e3c4febfdb27e618aac6329af Mon Sep 17 00:00:00 2001 +From a7d732cb42461efb9390154fb7fe0eb4b9dc53f6 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Thu, 19 Dec 2024 23:00:58 +1100 -Subject: [PATCH 13/13] disable loading different library flavours based on +Subject: [PATCH 11/11] disable loading different library flavours based on available instruction sets the code in question ends up calling `numpy.distutils` which doesn't exist on @@ -12,10 +12,10 @@ flavours (i.e. avx2, avx512, sve) of libraries that could be loaded in any case. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faiss/python/loader.py b/faiss/python/loader.py -index 977ada1d9..20f4d986b 100644 +index caef9e55..a4a595d9 100644 --- a/faiss/python/loader.py +++ b/faiss/python/loader.py -@@ -85,7 +85,7 @@ opt_level = os.environ.get(opt_env_variable_name, None) +@@ -88,7 +88,7 @@ opt_level = os.environ.get(opt_env_variable_name, None) if opt_level is None: logger.debug(f"Environment variable {opt_env_variable_name} is not set, " \ "so let's pick the instruction set according to the current CPU") diff --git a/recipe/patches/0012-Some-chore-fixes-4010.patch b/recipe/patches/0012-Some-chore-fixes-4010.patch deleted file mode 100644 index 63c934b7..00000000 --- a/recipe/patches/0012-Some-chore-fixes-4010.patch +++ /dev/null @@ -1,113 +0,0 @@ -From eed58fa49efdaef6584789523af82cc3f886da59 Mon Sep 17 00:00:00 2001 -From: Shengqi Chen -Date: Tue, 19 Nov 2024 16:48:35 -0800 -Subject: [PATCH 12/13] Some chore fixes (#4010) - -Summary: -- Fix a typo in comment -- Add missing header files to `FAISS_HEADERS` in CMake config - -There should be some check against the inconsistency between `FAISS_HEADERS` and actual files, e.g. test compiling with installed headers and shared library (otherwise it always succeeds in the source dir). - -This is not the first time that headers are missing (https://github.com/facebookresearch/faiss/issues/3218). - -Pull Request resolved: https://github.com/facebookresearch/faiss/pull/4010 - -Reviewed By: junjieqi - -Differential Revision: D65630647 - -Pulled By: kuarora - -fbshipit-source-id: 2efcfc4bbd0b2d29efa817e1ff9371942c15d30a - -conda-forge cherry-pick note: -Minus impl/code_distance/code_distance-sve.h, which doesn't exist in 1.9.0 ---- - faiss/CMakeLists.txt | 8 ++++++++ - faiss/impl/ResidualQuantizer.h | 2 +- - tests/test_graph_based.py | 2 +- - 3 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/faiss/CMakeLists.txt b/faiss/CMakeLists.txt -index 53e27d3f1..5d9162f18 100644 ---- a/faiss/CMakeLists.txt -+++ b/faiss/CMakeLists.txt -@@ -126,6 +126,7 @@ set(FAISS_HEADERS - IndexIVFPQR.h - IndexIVFSpectralHash.h - IndexLSH.h -+ IndexNeuralNetCodec.h - IndexLattice.h - IndexNNDescent.h - IndexNSG.h -@@ -169,6 +170,7 @@ set(FAISS_HEADERS - impl/ScalarQuantizer.h - impl/ThreadedIndex-inl.h - impl/ThreadedIndex.h -+ impl/index_read_utils.h - impl/io.h - impl/io_macros.h - impl/kmeans1d.h -@@ -180,13 +182,16 @@ set(FAISS_HEADERS - impl/code_distance/code_distance.h - impl/code_distance/code_distance-generic.h - impl/code_distance/code_distance-avx2.h -+ impl/code_distance/code_distance-avx512.h - invlists/BlockInvertedLists.h - invlists/DirectMap.h - invlists/InvertedLists.h - invlists/InvertedListsIOHook.h -+ invlists/OnDiskInvertedLists.h - utils/AlignedTable.h - utils/bf16.h - utils/Heap.h -+ utils/NeuralNet.h - utils/WorkerThread.h - utils/distances.h - utils/extra_distances-inl.h -@@ -205,8 +210,10 @@ set(FAISS_HEADERS - utils/sorting.h - utils/simdlib.h - utils/simdlib_avx2.h -+ utils/simdlib_avx512.h - utils/simdlib_emulated.h - utils/simdlib_neon.h -+ utils/simdlib_ppc64.h - utils/utils.h - utils/distances_fused/avx512.h - utils/distances_fused/distances_fused.h -@@ -217,6 +224,7 @@ set(FAISS_HEADERS - utils/approx_topk/mode.h - utils/approx_topk_hamming/approx_topk_hamming.h - utils/transpose/transpose-avx2-inl.h -+ utils/transpose/transpose-avx512-inl.h - utils/hamming_distance/common.h - utils/hamming_distance/generic-inl.h - utils/hamming_distance/hamdis-inl.h -diff --git a/faiss/impl/ResidualQuantizer.h b/faiss/impl/ResidualQuantizer.h -index 004f7cabd..b62525d9a 100644 ---- a/faiss/impl/ResidualQuantizer.h -+++ b/faiss/impl/ResidualQuantizer.h -@@ -112,7 +112,7 @@ struct ResidualQuantizer : AdditiveQuantizer { - - /** lower-level encode function - * -- * @param n number of vectors to hanlde -+ * @param n number of vectors to handle - * @param residuals vectors to encode, size (n, beam_size, d) - * @param beam_size input beam size - * @param new_beam_size output beam size (should be <= K * beam_size) -diff --git a/tests/test_graph_based.py b/tests/test_graph_based.py -index 81786efdf..2724447d0 100644 ---- a/tests/test_graph_based.py -+++ b/tests/test_graph_based.py -@@ -335,7 +335,7 @@ class TestNSG(unittest.TestCase): - """Make some invalid entries in the input knn graph. - - It would cause a warning but IndexNSG should be able -- to handel this. -+ to handle this. - """ - knn_graph = self.make_knn_graph(faiss.METRIC_L2) - knn_graph[:100, 5] = -111
VariantStatus
linux_64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13linux_64_blas_implbliscuda_compiler_version12.9 - variant + variant
linux_64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13linux_64_blas_implbliscuda_compiler_versionNone - variant + variant
linux_64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11linux_64_blas_implmklcuda_compiler_version12.9 - variant + variant
linux_aarch64_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13linux_64_blas_implmklcuda_compiler_versionNone - variant + variant
linux_aarch64_cuda_compilercuda-nvcccuda_compiler_version12.6cxx_compiler_version13linux_64_blas_implopenblascuda_compiler_version12.9 - variant + variant
linux_aarch64_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11linux_64_blas_implopenblascuda_compiler_versionNone - variant + variant
linux_ppc64le_cuda_compilerNonecuda_compiler_versionNonecxx_compiler_version13linux_aarch64_cuda_compiler_version12.9 - variant + variant
linux_ppc64le_cuda_compilercuda-nvcccuda_compiler_version12.4cxx_compiler_version12linux_aarch64_cuda_compiler_versionNone - variant + variant
linux_ppc64le_cuda_compilernvcccuda_compiler_version11.8cxx_compiler_version11linux_ppc64le - variant + variant
osx_64osx_64_blas_implblis - variant + variant
osx_arm64osx_64_blas_implmkl - variant + variant
win_64_cuda_compilerNonecuda_compiler_versionNoneosx_64_blas_implopenblas - variant + variant + +
osx_arm64 + + variant
win_64_cuda_compilercuda-nvcccuda_compiler_version12.6win_64_blas_implbliscuda_compiler_versionNone - variant + variant
win_64_cuda_compilernvcccuda_compiler_version11.8win_64_blas_implopenblascuda_compiler_versionNone - variant + variant