diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml
deleted file mode 100755
index d08eed2c6..000000000
--- a/.azure-pipelines/azure-pipelines-osx.yml
+++ /dev/null
@@ -1,40 +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: osx
- pool:
- vmImage: macOS-15
- strategy:
- matrix:
- osx_64_:
- CONFIG: osx_64_
- UPLOAD_PACKAGES: 'True'
- osx_arm64_:
- CONFIG: osx_arm64_
- UPLOAD_PACKAGES: 'True'
- timeoutInMinutes: 360
- variables: {}
-
- steps:
- # TODO: Fast finish on azure pipelines?
- - script: |
- export CI=azure
- export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt)
- export remote_url=$(Build.Repository.Uri)
- export sha=$(Build.SourceVersion)
- export OSX_FORCE_SDK_DOWNLOAD="1"
- 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_osx_build.sh
- displayName: Run OSX build
- env:
- BINSTAR_TOKEN: $(BINSTAR_TOKEN)
- FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN)
- STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN)
diff --git a/.ci_support/linux_64_cuda_compiler_version12.9microarch_level1.yaml b/.ci_support/linux_64_cuda_compiler_version12.9microarch_level1.yaml
deleted file mode 100644
index de7cdabbb..000000000
--- a/.ci_support/linux_64_cuda_compiler_version12.9microarch_level1.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
-c_compiler:
-- gcc
-c_compiler_version:
-- '14'
-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'
-cudnn:
-- '9'
-cxx_compiler:
-- gxx
-cxx_compiler_version:
-- '14'
-docker_image:
-- quay.io/condaforge/linux-anvil-x86_64:alma9
-flatbuffers:
-- 25.2.10
-giflib:
-- '5.2'
-github_actions_labels:
-- cirun-openstack-cpu-2xlarge
-icu:
-- '75'
-libabseil:
-- '20250512'
-libcurl:
-- '8'
-libgrpc:
-- '1.73'
-libjpeg_turbo:
-- '3'
-libpng:
-- '1.6'
-libprotobuf:
-- 6.31.1
-libtensorflow_cc:
-- '2.16'
-microarch_level:
-- '1'
-nccl:
-- '2'
-numpy:
-- '2'
-openssl:
-- '3.5'
-perl:
-- 5.32.1
-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
-snappy:
-- '1.2'
-sqlite:
-- '3'
-target_platform:
-- linux-64
-tensorflow:
-- '2.16'
-zip_keys:
-- - c_compiler_version
- - cxx_compiler_version
- - c_stdlib_version
- - cuda_compiler_version
-zlib:
-- '1'
diff --git a/.ci_support/linux_64_cuda_compiler_versionNonemicroarch_level1.yaml b/.ci_support/linux_64_cuda_compiler_versionNonemicroarch_level1.yaml
deleted file mode 100644
index cf3f3c57e..000000000
--- a/.ci_support/linux_64_cuda_compiler_versionNonemicroarch_level1.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
-c_compiler:
-- gcc
-c_compiler_version:
-- '14'
-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
-cudnn:
-- '9'
-cxx_compiler:
-- gxx
-cxx_compiler_version:
-- '14'
-docker_image:
-- quay.io/condaforge/linux-anvil-x86_64:alma9
-flatbuffers:
-- 25.2.10
-giflib:
-- '5.2'
-github_actions_labels:
-- cirun-openstack-cpu-2xlarge
-icu:
-- '75'
-libabseil:
-- '20250512'
-libcurl:
-- '8'
-libgrpc:
-- '1.73'
-libjpeg_turbo:
-- '3'
-libpng:
-- '1.6'
-libprotobuf:
-- 6.31.1
-libtensorflow_cc:
-- '2.16'
-microarch_level:
-- '1'
-nccl:
-- '2'
-numpy:
-- '2'
-openssl:
-- '3.5'
-perl:
-- 5.32.1
-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
-snappy:
-- '1.2'
-sqlite:
-- '3'
-target_platform:
-- linux-64
-tensorflow:
-- '2.16'
-zip_keys:
-- - c_compiler_version
- - cxx_compiler_version
- - c_stdlib_version
- - cuda_compiler_version
-zlib:
-- '1'
diff --git a/.ci_support/linux_64_cuda_compiler_versionNonemicroarch_level3.yaml b/.ci_support/linux_64_cuda_compiler_versionNonemicroarch_level3.yaml
deleted file mode 100644
index 6e720a3ff..000000000
--- a/.ci_support/linux_64_cuda_compiler_versionNonemicroarch_level3.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
-c_compiler:
-- gcc
-c_compiler_version:
-- '14'
-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
-cudnn:
-- '9'
-cxx_compiler:
-- gxx
-cxx_compiler_version:
-- '14'
-docker_image:
-- quay.io/condaforge/linux-anvil-x86_64:alma9
-flatbuffers:
-- 25.2.10
-giflib:
-- '5.2'
-github_actions_labels:
-- cirun-openstack-cpu-2xlarge
-icu:
-- '75'
-libabseil:
-- '20250512'
-libcurl:
-- '8'
-libgrpc:
-- '1.73'
-libjpeg_turbo:
-- '3'
-libpng:
-- '1.6'
-libprotobuf:
-- 6.31.1
-libtensorflow_cc:
-- '2.16'
-microarch_level:
-- '3'
-nccl:
-- '2'
-numpy:
-- '2'
-openssl:
-- '3.5'
-perl:
-- 5.32.1
-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
-snappy:
-- '1.2'
-sqlite:
-- '3'
-target_platform:
-- linux-64
-tensorflow:
-- '2.16'
-zip_keys:
-- - c_compiler_version
- - cxx_compiler_version
- - c_stdlib_version
- - cuda_compiler_version
-zlib:
-- '1'
diff --git a/.ci_support/linux_aarch64_c_compiler_version11cuda_compiler_versionNonecxx_compiler_version11.yaml b/.ci_support/linux_aarch64_c_compiler_version11cuda_compiler_versionNonecxx_compiler_version11.yaml
deleted file mode 100644
index ab16ae612..000000000
--- a/.ci_support/linux_aarch64_c_compiler_version11cuda_compiler_versionNonecxx_compiler_version11.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-c_compiler:
-- gcc
-c_compiler_version:
-- '11'
-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:
-- '11'
-docker_image:
-- quay.io/condaforge/linux-anvil-x86_64:alma9
-flatbuffers:
-- 25.2.10
-giflib:
-- '5.2'
-github_actions_labels:
-- cirun-openstack-cpu-2xlarge
-icu:
-- '75'
-libabseil:
-- '20250512'
-libcurl:
-- '8'
-libgrpc:
-- '1.73'
-libjpeg_turbo:
-- '3'
-libpng:
-- '1.6'
-libprotobuf:
-- 6.31.1
-libtensorflow_cc:
-- '2.16'
-microarch_level:
-- '1'
-numpy:
-- '2'
-openssl:
-- '3.5'
-perl:
-- 5.32.1
-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
-snappy:
-- '1.2'
-sqlite:
-- '3'
-target_platform:
-- linux-aarch64
-tensorflow:
-- '2.16'
-zip_keys:
-- - c_compiler_version
- - cxx_compiler_version
- - c_stdlib_version
- - cuda_compiler_version
-zlib:
-- '1'
diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml
deleted file mode 100644
index c256efd13..000000000
--- a/.ci_support/osx_64_.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-MACOSX_DEPLOYMENT_TARGET:
-- '11.0'
-MACOSX_SDK_VERSION:
-- '11.0'
-c_compiler:
-- clang
-c_compiler_version:
-- '19'
-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'
-flatbuffers:
-- 25.2.10
-giflib:
-- '5.2'
-icu:
-- '75'
-libabseil:
-- '20250512'
-libcurl:
-- '8'
-libgrpc:
-- '1.73'
-libjpeg_turbo:
-- '3'
-libpng:
-- '1.6'
-libprotobuf:
-- 6.31.1
-libtensorflow_cc:
-- '2.16'
-macos_machine:
-- x86_64-apple-darwin13.4.0
-microarch_level:
-- '1'
-numpy:
-- '2'
-openssl:
-- '3.5'
-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
-snappy:
-- '1.2'
-sqlite:
-- '3'
-target_platform:
-- osx-64
-tensorflow:
-- '2.16'
-zip_keys:
-- - c_compiler_version
- - cxx_compiler_version
-zlib:
-- '1'
diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml
deleted file mode 100644
index 6bbb5ccff..000000000
--- a/.ci_support/osx_arm64_.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-MACOSX_DEPLOYMENT_TARGET:
-- '11.0'
-MACOSX_SDK_VERSION:
-- '11.0'
-c_compiler:
-- clang
-c_compiler_version:
-- '19'
-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'
-flatbuffers:
-- 25.2.10
-giflib:
-- '5.2'
-icu:
-- '75'
-libabseil:
-- '20250512'
-libcurl:
-- '8'
-libgrpc:
-- '1.73'
-libjpeg_turbo:
-- '3'
-libpng:
-- '1.6'
-libprotobuf:
-- 6.31.1
-libtensorflow_cc:
-- '2.16'
-macos_machine:
-- arm64-apple-darwin20.0.0
-microarch_level:
-- '1'
-numpy:
-- '2'
-openssl:
-- '3.5'
-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
-snappy:
-- '1.2'
-sqlite:
-- '3'
-target_platform:
-- osx-arm64
-tensorflow:
-- '2.16'
-zip_keys:
-- - c_compiler_version
- - cxx_compiler_version
-zlib:
-- '1'
diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml
index 801e12b2d..02d36289e 100644
--- a/.github/workflows/conda-build.yml
+++ b/.github/workflows/conda-build.yml
@@ -21,31 +21,11 @@ jobs:
fail-fast: false
matrix:
include:
- - CONFIG: linux_64_cuda_compiler_version12.9microarch_level1
- UPLOAD_PACKAGES: True
- os: ubuntu
- runs_on: ['cirun-openstack-cpu-2xlarge--${{ github.run_id }}-linux_64_cuda_compiler_version12.9microa_h28a6e8b1', 'linux', 'x64', 'self-hosted']
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
- CONFIG: linux_64_cuda_compiler_version12.9microarch_level3
UPLOAD_PACKAGES: True
os: ubuntu
runs_on: ['cirun-openstack-cpu-2xlarge--${{ github.run_id }}-linux_64_cuda_compiler_version12.9microa_h764a83b2', 'linux', 'x64', 'self-hosted']
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
- - CONFIG: linux_64_cuda_compiler_versionNonemicroarch_level1
- UPLOAD_PACKAGES: True
- os: ubuntu
- runs_on: ['cirun-openstack-cpu-2xlarge--${{ github.run_id }}-linux_64_cuda_compiler_versionNonemicroa_h0e112a19', 'linux', 'x64', 'self-hosted']
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
- - CONFIG: linux_64_cuda_compiler_versionNonemicroarch_level3
- UPLOAD_PACKAGES: True
- os: ubuntu
- runs_on: ['cirun-openstack-cpu-2xlarge--${{ github.run_id }}-linux_64_cuda_compiler_versionNonemicroa_hb1134425', 'linux', 'x64', 'self-hosted']
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
- - CONFIG: linux_aarch64_c_compiler_version11cuda_compiler_versionNonecxx_compiler_version11
- UPLOAD_PACKAGES: True
- os: ubuntu
- runs_on: ['cirun-openstack-cpu-2xlarge--${{ github.run_id }}-linux_aarch64_c_compiler_version11cuda_c_hde0bec76', 'linux', 'x64', 'self-hosted']
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
steps:
- name: Checkout code
diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh
deleted file mode 100755
index a71f1c52c..000000000
--- a/.scripts/run_osx_build.sh
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env bash
-
-# -*- mode: jinja-shell -*-
-
-source .scripts/logging_utils.sh
-
-set -xe
-
-MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}"
-MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash
-export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}"
-
-( startgroup "Provisioning base env with micromamba" ) 2> /dev/null
-MICROMAMBA_VERSION="1.5.10-0"
-if [[ "$(uname -m)" == "arm64" ]]; then
- osx_arch="osx-arm64"
-else
- osx_arch="osx-64"
-fi
-MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-${osx_arch}"
-MAMBA_ROOT_PREFIX="${MINIFORGE_HOME}-micromamba-$(date +%s)"
-echo "Downloading micromamba ${MICROMAMBA_VERSION}"
-micromamba_exe="$(mktemp -d)/micromamba"
-curl -L -o "${micromamba_exe}" "${MICROMAMBA_URL}"
-chmod +x "${micromamba_exe}"
-echo "Creating environment"
-"${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \
- --channel conda-forge \
- pip python=3.12 conda-build conda-libmamba-solver conda-forge-ci-setup=4 "conda-build>=24.1"
-echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}"
-mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}"
-echo "Cleaning up micromamba"
-rm -rf "${MAMBA_ROOT_PREFIX}" "${micromamba_exe}" || true
-( endgroup "Provisioning base env with micromamba" ) 2> /dev/null
-
-( startgroup "Configuring conda" ) 2> /dev/null
-echo "Activating environment"
-source "${MINIFORGE_HOME}/etc/profile.d/conda.sh"
-conda activate base
-export CONDA_SOLVER="libmamba"
-export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1
-
-
-
-
-
-echo -e "\n\nSetting up the condarc and mangling the compiler."
-setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml
-
-if [[ "${CI:-}" != "" ]]; then
- mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml
-fi
-
-if [[ "${CI:-}" != "" ]]; then
- echo -e "\n\nMangling homebrew in the CI to avoid conflicts."
- /usr/bin/sudo mangle_homebrew
- /usr/bin/sudo -k
-else
- echo -e "\n\nNot mangling homebrew as we are not running in CI"
-fi
-
-if [[ "${sha:-}" == "" ]]; then
- sha=$(git rev-parse HEAD)
-fi
-
-echo -e "\n\nRunning the build setup script."
-source run_conda_forge_build_setup
-
-
-
-( endgroup "Configuring conda" ) 2> /dev/null
-
-echo -e "\n\nMaking the build clobber file"
-make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml
-
-if [[ -f LICENSE.txt ]]; then
- cp LICENSE.txt "recipe/recipe-scripts-license.txt"
-fi
-
-if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then
- if [[ "x${BUILD_OUTPUT_ID:-}" != "x" ]]; then
- EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --output-id ${BUILD_OUTPUT_ID}"
- fi
- conda debug ./recipe -m ./.ci_support/${CONFIG}.yaml \
- ${EXTRA_CB_OPTIONS:-} \
- --clobber-file ./.ci_support/clobber_${CONFIG}.yaml
-
- # Drop into an interactive shell
- /bin/bash
-else
-
- if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then
- EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test"
- fi
-
- CONDA_SOLVER=libmamba conda-build ./recipe -m ./.ci_support/${CONFIG}.yaml \
- --suppress-variables ${EXTRA_CB_OPTIONS:-} \
- --clobber-file ./.ci_support/clobber_${CONFIG}.yaml \
- --extra-meta flow_run_id="$flow_run_id" remote_url="$remote_url" sha="$sha"
-
- ( startgroup "Inspecting artifacts" ) 2> /dev/null
-
- # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4
- command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir ./recipe -m ./.ci_support/${CONFIG}.yaml || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4"
-
- ( endgroup "Inspecting artifacts" ) 2> /dev/null
- ( startgroup "Validating outputs" ) 2> /dev/null
-
- validate_recipe_outputs "${FEEDSTOCK_NAME}"
-
- ( endgroup "Validating outputs" ) 2> /dev/null
-
- ( startgroup "Uploading packages" ) 2> /dev/null
-
- if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then
- upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml
- fi
-
- ( endgroup "Uploading packages" ) 2> /dev/null
-fi
diff --git a/README.md b/README.md
index f57247f98..bc59749a0 100644
--- a/README.md
+++ b/README.md
@@ -24,73 +24,6 @@ Current build status
-
-
- | Azure |
-
-
-
-
-
-
-
-
- | Variant | Status |
-
- | linux_64_cuda_compiler_version12.9microarch_level1 |
-
-
-
-
- |
-
- | linux_64_cuda_compiler_version12.9microarch_level3 |
-
-
-
-
- |
-
- | linux_64_cuda_compiler_versionNonemicroarch_level1 |
-
-
-
-
- |
-
- | linux_64_cuda_compiler_versionNonemicroarch_level3 |
-
-
-
-
- |
-
- | linux_aarch64_c_compiler_version11cuda_compiler_versionNonecxx_compiler_version11 |
-
-
-
-
- |
-
- | osx_64 |
-
-
-
-
- |
-
- | osx_arm64 |
-
-
-
-
- |
-
-
-
-
- |
-
Current release info
@@ -104,10 +37,8 @@ Current release info
| [](https://anaconda.org/conda-forge/tensorflow) | [](https://anaconda.org/conda-forge/tensorflow) | [](https://anaconda.org/conda-forge/tensorflow) | [](https://anaconda.org/conda-forge/tensorflow) |
| [](https://anaconda.org/conda-forge/tensorflow-avx2) | [](https://anaconda.org/conda-forge/tensorflow-avx2) | [](https://anaconda.org/conda-forge/tensorflow-avx2) | [](https://anaconda.org/conda-forge/tensorflow-avx2) |
| [](https://anaconda.org/conda-forge/tensorflow-base) | [](https://anaconda.org/conda-forge/tensorflow-base) | [](https://anaconda.org/conda-forge/tensorflow-base) | [](https://anaconda.org/conda-forge/tensorflow-base) |
-| [](https://anaconda.org/conda-forge/tensorflow-cpu) | [](https://anaconda.org/conda-forge/tensorflow-cpu) | [](https://anaconda.org/conda-forge/tensorflow-cpu) | [](https://anaconda.org/conda-forge/tensorflow-cpu) |
| [](https://anaconda.org/conda-forge/tensorflow-estimator) | [](https://anaconda.org/conda-forge/tensorflow-estimator) | [](https://anaconda.org/conda-forge/tensorflow-estimator) | [](https://anaconda.org/conda-forge/tensorflow-estimator) |
| [](https://anaconda.org/conda-forge/tensorflow-gpu) | [](https://anaconda.org/conda-forge/tensorflow-gpu) | [](https://anaconda.org/conda-forge/tensorflow-gpu) | [](https://anaconda.org/conda-forge/tensorflow-gpu) |
-| [](https://anaconda.org/conda-forge/tensorflow-sse3) | [](https://anaconda.org/conda-forge/tensorflow-sse3) | [](https://anaconda.org/conda-forge/tensorflow-sse3) | [](https://anaconda.org/conda-forge/tensorflow-sse3) |
Installing tensorflow
=====================
@@ -119,16 +50,16 @@ conda config --add channels conda-forge
conda config --set channel_priority strict
```
-Once the `conda-forge` channel has been enabled, `libtensorflow, libtensorflow_cc, libtensorflow_framework, tensorflow, tensorflow-avx2, tensorflow-base, tensorflow-cpu, tensorflow-estimator, tensorflow-gpu, tensorflow-sse3` can be installed with `conda`:
+Once the `conda-forge` channel has been enabled, `libtensorflow, libtensorflow_cc, libtensorflow_framework, tensorflow, tensorflow-avx2, tensorflow-base, tensorflow-estimator, tensorflow-gpu` can be installed with `conda`:
```
-conda install libtensorflow libtensorflow_cc libtensorflow_framework tensorflow tensorflow-avx2 tensorflow-base tensorflow-cpu tensorflow-estimator tensorflow-gpu tensorflow-sse3
+conda install libtensorflow libtensorflow_cc libtensorflow_framework tensorflow tensorflow-avx2 tensorflow-base tensorflow-estimator tensorflow-gpu
```
or with `mamba`:
```
-mamba install libtensorflow libtensorflow_cc libtensorflow_framework tensorflow tensorflow-avx2 tensorflow-base tensorflow-cpu tensorflow-estimator tensorflow-gpu tensorflow-sse3
+mamba install libtensorflow libtensorflow_cc libtensorflow_framework tensorflow tensorflow-avx2 tensorflow-base tensorflow-estimator tensorflow-gpu
```
It is possible to list all of the versions of `libtensorflow` available on your platform with `conda`:
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
deleted file mode 100644
index a13f0ae28..000000000
--- a/azure-pipelines.yml
+++ /dev/null
@@ -1,31 +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 -*-
-
-stages:
-- stage: Check
- jobs:
- - job: Skip
- pool:
- vmImage: 'ubuntu-22.04'
- variables:
- DECODE_PERCENTS: 'false'
- RET: 'true'
- steps:
- - checkout: self
- fetchDepth: '2'
- - bash: |
- git_log=`git log --max-count=1 --skip=1 --pretty=format:"%B" | tr "\n" " "`
- echo "##vso[task.setvariable variable=log]$git_log"
- displayName: Obtain commit message
- - bash: echo "##vso[task.setvariable variable=RET]false"
- condition: and(eq(variables['Build.Reason'], 'PullRequest'), or(contains(variables.log, '[skip azp]'), contains(variables.log, '[azp skip]'), contains(variables.log, '[skip ci]'), contains(variables.log, '[ci skip]')))
- displayName: Skip build?
- - bash: echo "##vso[task.setvariable variable=start_main;isOutput=true]$RET"
- name: result
- displayName: Export result
-- stage: Build
- condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true'))
- dependsOn: Check
- jobs:
- - template: ./.azure-pipelines/azure-pipelines-osx.yml
\ No newline at end of file
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index fb5be67d4..302b3e06c 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -1,6 +1,6 @@
{% set version = "2.19.1" %}
{% set estimator_version = "2.15.0" %}
-{% set build = 2 %}
+{% set build = 4 %}
{% if cuda_compiler_version != "None" %}
{% set build = build + 200 %}
@@ -13,9 +13,9 @@
{% set build = build + 25*(microarch_level | int - 1) %}
# Quite often libml_dtypes-headers and ml_dtypes diverge.
-# https://github.com/tensorflow/tensorflow/blob/v2.18.0/third_party/py/ml_dtypes/workspace.bzl
-{% set libml_dtypes_version = "0.5.1" %}
-{% set ml_dtypes_version = "0.5.1" %}
+# https://github.com/tensorflow/tensorflow/blob/v2.19.1/third_party/py/ml_dtypes/workspace.bzl
+{% set libml_dtypes_version = "0.5.4" %}
+{% set ml_dtypes_version = "0.5.4" %}
package:
name: tensorflow-split
@@ -73,8 +73,9 @@ source:
- patches/0039-Fix-matmul-unused-result-error.patch
- patches/0040-Support-cuda-12.8.patch
- patches/0041-Disable-profiler.patch
- - patches/0042-bump-h5py-req.patch # [aarch64]
- - patches/0043-cross-arch-config.patch # [aarch64 and target_platform != build_platform]
+ - patches/0042-cross-arch-config.patch # [aarch64 and target_platform != build_platform]
+ # https://github.com/tensorflow/tensorflow/pull/99046
+ - patches/0043-Fix-shared-memory-alignment-in-concat-split-GPU-kern.patch
# backport https://github.com/tensorflow/tensorflow/pull/99364
- patches/0044-Support-for-TFv2.20-to-compile-with-CUDA-v12.9.1.patch
- url: https://github.com/tensorflow/estimator/archive/refs/tags/v{{ estimator_version.replace(".rc", "-rc") }}.tar.gz
@@ -86,6 +87,8 @@ build:
skip: true # [win]
# TODO: debug issues with CUDA cross-compilation
skip: true # [aarch64 and cuda_compiler_version != "None"]
+ skip: true # [cuda_compiler_version == "None"]
+ skip: true # [microarch_level != 3]
requirements:
build:
@@ -235,6 +238,7 @@ outputs:
# tensorflow 2.18 doesn't support py313 until 2.20, see
# https://github.com/tensorflow/tensorflow/issues/78774
skip: true # [py==313]
+ skip: true # [py!=312]
string: cuda{{ cuda_compiler_version | replace('.', '') }}py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version != "None"]
string: cpu_py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version == "None"]
# weigh down cpu implementation and give cuda preference
@@ -362,6 +366,7 @@ outputs:
# tensorflow 2.18 doesn't support py313 until 2.20, see
# https://github.com/tensorflow/tensorflow/issues/78774
skip: true # [py==313]
+ skip: true # [py!=312]
string: cuda{{ cuda_compiler_version | replace('.', '') }}py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version != "None"]
string: cpu_py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version == "None"]
# weigh down cpu implementation and give cuda preference
@@ -409,6 +414,7 @@ outputs:
# tensorflow 2.18 doesn't support py313 until 2.20, see
# https://github.com/tensorflow/tensorflow/issues/78774
skip: true # [py==313]
+ skip: true # [py!=312]
string: cuda{{ cuda_compiler_version | replace('.', '') }}py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version != "None"]
string: cpu_py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version == "None"]
requirements:
@@ -581,6 +587,7 @@ outputs:
# tensorflow 2.18 doesn't support py313 until 2.20, see
# https://github.com/tensorflow/tensorflow/issues/78774
skip: true # [py==313]
+ skip: true # [py!=312]
string: cuda{{ cuda_compiler_version | replace('.', '') }}py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version != "None"]
string: cpu_py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version == "None"]
requirements:
@@ -599,6 +606,7 @@ outputs:
# tensorflow 2.18 doesn't support py313 until 2.20, see
# https://github.com/tensorflow/tensorflow/issues/78774
skip: true # [py==313]
+ skip: true # [py!=312]
string: cuda{{ cuda_compiler_version | replace('.', '') }}py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version != "None"]
string: cpu_py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version == "None"]
requirements:
@@ -617,6 +625,7 @@ outputs:
# tensorflow 2.18 doesn't support py313 until 2.20, see
# https://github.com/tensorflow/tensorflow/issues/78774
skip: true # [py==313]
+ skip: true # [py!=312]
string: cuda{{ cuda_compiler_version | replace('.', '') }}py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version != "None"]
string: cpu_py{{ CONDA_PY }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [cuda_compiler_version == "None"]
requirements:
diff --git a/recipe/patches/0042-bump-h5py-req.patch b/recipe/patches/0042-bump-h5py-req.patch
deleted file mode 100644
index 6de87bdd5..000000000
--- a/recipe/patches/0042-bump-h5py-req.patch
+++ /dev/null
@@ -1,309 +0,0 @@
-From e2c9291edfeac83893563ae0fcd90ab36a89af9e Mon Sep 17 00:00:00 2001
-From: dslarm
-Date: Tue, 16 Sep 2025 19:41:25 +0000
-Subject: [PATCH 42/44] bump h5py req
-
-h5py and psutil are not available as a binary for
-the versions of h5py in tensorflow 2.18's spec, but the
-system won't try to build it. Bump the version so we get ones that
-do exist.
----
- .../requirements_updater/requirements.in | 3 +-
- requirements_lock_3_10.txt | 50 +------------------
- requirements_lock_3_11.txt | 50 +------------------
- requirements_lock_3_12.txt | 50 +------------------
- requirements_lock_3_9.txt | 49 +-----------------
- 5 files changed, 10 insertions(+), 192 deletions(-)
-
-diff --git a/ci/official/requirements_updater/requirements.in b/ci/official/requirements_updater/requirements.in
-index 68871582683..145aab77a17 100644
---- a/ci/official/requirements_updater/requirements.in
-+++ b/ci/official/requirements_updater/requirements.in
-@@ -1,7 +1,7 @@
- # Note that numpy 2.1.0 does not support python 3.9
- numpy >= 2.0.0, < 2.2.0
- wheel ~= 0.41.2
--h5py >= 3.11.0
-+h5py >= 3.12.0
- lit ~= 17.0.2
- opt_einsum == 3.3.0
- astunparse == 1.6.3
-@@ -23,6 +23,7 @@ tensorboard ~= 2.19.0
- # Test dependencies
- grpcio >= 1.24.3, < 2.0
- portpicker == 1.6.0
-+psutil >=7.0.0
- scipy >= 1.13.0
- requests >= 2.31.0
- packaging==23.2
-diff --git a/requirements_lock_3_10.txt b/requirements_lock_3_10.txt
-index 0bf28443588..b5ac15546b9 100644
---- a/requirements_lock_3_10.txt
-+++ b/requirements_lock_3_10.txt
-@@ -185,36 +185,7 @@ grpcio==1.64.1 \
- # via
- # -r ci/official/requirements_updater/requirements.in
- # tensorboard
--h5py==3.13.0 \
-- --hash=sha256:10894c55d46df502d82a7a4ed38f9c3fdbcb93efb42e25d275193e093071fade \
-- --hash=sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3 \
-- --hash=sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec \
-- --hash=sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508 \
-- --hash=sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4 \
-- --hash=sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca \
-- --hash=sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4 \
-- --hash=sha256:4f97ecde7ac6513b21cd95efdfc38dc6d19f96f6ca6f2a30550e94e551458e0a \
-- --hash=sha256:5540daee2b236d9569c950b417f13fd112d51d78b4c43012de05774908dff3f5 \
-- --hash=sha256:560e71220dc92dfa254b10a4dcb12d56b574d2d87e095db20466b32a93fec3f9 \
-- --hash=sha256:56dd172d862e850823c4af02dc4ddbc308f042b85472ffdaca67f1598dff4a57 \
-- --hash=sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a \
-- --hash=sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a \
-- --hash=sha256:82690e89c72b85addf4fc4d5058fb1e387b6c14eb063b0b879bf3f42c3b93c35 \
-- --hash=sha256:851ae3a8563d87a5a0dc49c2e2529c75b8842582ccaefbf84297d2cfceeacd61 \
-- --hash=sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8 \
-- --hash=sha256:9c82ece71ed1c2b807b6628e3933bc6eae57ea21dac207dca3470e3ceaaf437c \
-- --hash=sha256:be949b46b7388074c5acae017fbbe3e5ba303fd9daaa52157fdfef30bbdacadd \
-- --hash=sha256:c10f061764d8dce0a9592ce08bfd5f243a00703325c388f1086037e5d619c5f1 \
-- --hash=sha256:d2cf6a231a07c14acd504a945a6e9ec115e0007f675bde5e0de30a4dc8d86a31 \
-- --hash=sha256:d571644958c5e19a61c793d8d23cd02479572da828e333498c9acc463f4a3997 \
-- --hash=sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d \
-- --hash=sha256:e520ec76de00943dd017c8ea3f354fa1d2f542eac994811943a8faedf2a7d5cb \
-- --hash=sha256:e79d8368cd9295045956bfb436656bea3f915beaa11d342e9f79f129f5178763 \
-- --hash=sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868 \
-- --hash=sha256:fb267ce4b83f9c42560e9ff4d30f60f7ae492eacf9c7ede849edf8c1b860e16b
-- # via
-- # -r ci/official/requirements_updater/requirements.in
-- # keras
-+h5py>=3.12.0
- idna==3.7 \
- --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
- --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
-@@ -587,24 +558,7 @@ protobuf==4.25.3 \
- --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \
- --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2
- # via tensorboard
--psutil==5.9.8 \
-- --hash=sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d \
-- --hash=sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73 \
-- --hash=sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8 \
-- --hash=sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2 \
-- --hash=sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e \
-- --hash=sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36 \
-- --hash=sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7 \
-- --hash=sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c \
-- --hash=sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee \
-- --hash=sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421 \
-- --hash=sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf \
-- --hash=sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81 \
-- --hash=sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0 \
-- --hash=sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631 \
-- --hash=sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 \
-- --hash=sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8
-- # via portpicker
-+psutil>=7.0.0
- pyelftools==0.31 \
- --hash=sha256:c774416b10310156879443b81187d182d8d9ee499660380e645918b50bc88f99 \
- --hash=sha256:f52de7b3c7e8c64c8abc04a79a1cf37ac5fb0b8a49809827130b858944840607
-diff --git a/requirements_lock_3_11.txt b/requirements_lock_3_11.txt
-index b305e7e58f8..a6606206652 100644
---- a/requirements_lock_3_11.txt
-+++ b/requirements_lock_3_11.txt
-@@ -185,36 +185,7 @@ grpcio==1.64.1 \
- # via
- # -r ci/official/requirements_updater/requirements.in
- # tensorboard
--h5py==3.13.0 \
-- --hash=sha256:10894c55d46df502d82a7a4ed38f9c3fdbcb93efb42e25d275193e093071fade \
-- --hash=sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3 \
-- --hash=sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec \
-- --hash=sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508 \
-- --hash=sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4 \
-- --hash=sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca \
-- --hash=sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4 \
-- --hash=sha256:4f97ecde7ac6513b21cd95efdfc38dc6d19f96f6ca6f2a30550e94e551458e0a \
-- --hash=sha256:5540daee2b236d9569c950b417f13fd112d51d78b4c43012de05774908dff3f5 \
-- --hash=sha256:560e71220dc92dfa254b10a4dcb12d56b574d2d87e095db20466b32a93fec3f9 \
-- --hash=sha256:56dd172d862e850823c4af02dc4ddbc308f042b85472ffdaca67f1598dff4a57 \
-- --hash=sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a \
-- --hash=sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a \
-- --hash=sha256:82690e89c72b85addf4fc4d5058fb1e387b6c14eb063b0b879bf3f42c3b93c35 \
-- --hash=sha256:851ae3a8563d87a5a0dc49c2e2529c75b8842582ccaefbf84297d2cfceeacd61 \
-- --hash=sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8 \
-- --hash=sha256:9c82ece71ed1c2b807b6628e3933bc6eae57ea21dac207dca3470e3ceaaf437c \
-- --hash=sha256:be949b46b7388074c5acae017fbbe3e5ba303fd9daaa52157fdfef30bbdacadd \
-- --hash=sha256:c10f061764d8dce0a9592ce08bfd5f243a00703325c388f1086037e5d619c5f1 \
-- --hash=sha256:d2cf6a231a07c14acd504a945a6e9ec115e0007f675bde5e0de30a4dc8d86a31 \
-- --hash=sha256:d571644958c5e19a61c793d8d23cd02479572da828e333498c9acc463f4a3997 \
-- --hash=sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d \
-- --hash=sha256:e520ec76de00943dd017c8ea3f354fa1d2f542eac994811943a8faedf2a7d5cb \
-- --hash=sha256:e79d8368cd9295045956bfb436656bea3f915beaa11d342e9f79f129f5178763 \
-- --hash=sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868 \
-- --hash=sha256:fb267ce4b83f9c42560e9ff4d30f60f7ae492eacf9c7ede849edf8c1b860e16b
-- # via
-- # -r ci/official/requirements_updater/requirements.in
-- # keras
-+h5py>=3.12.0
- idna==3.7 \
- --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
- --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
-@@ -587,24 +558,7 @@ protobuf==4.25.3 \
- --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \
- --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2
- # via tensorboard
--psutil==5.9.8 \
-- --hash=sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d \
-- --hash=sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73 \
-- --hash=sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8 \
-- --hash=sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2 \
-- --hash=sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e \
-- --hash=sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36 \
-- --hash=sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7 \
-- --hash=sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c \
-- --hash=sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee \
-- --hash=sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421 \
-- --hash=sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf \
-- --hash=sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81 \
-- --hash=sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0 \
-- --hash=sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631 \
-- --hash=sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 \
-- --hash=sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8
-- # via portpicker
-+psutil>=7.0.0
- pyelftools==0.31 \
- --hash=sha256:c774416b10310156879443b81187d182d8d9ee499660380e645918b50bc88f99 \
- --hash=sha256:f52de7b3c7e8c64c8abc04a79a1cf37ac5fb0b8a49809827130b858944840607
-diff --git a/requirements_lock_3_12.txt b/requirements_lock_3_12.txt
-index 179f77b4843..1a803ef414f 100644
---- a/requirements_lock_3_12.txt
-+++ b/requirements_lock_3_12.txt
-@@ -185,36 +185,7 @@ grpcio==1.64.1 \
- # via
- # -r ci/official/requirements_updater/requirements.in
- # tensorboard
--h5py==3.13.0 \
-- --hash=sha256:10894c55d46df502d82a7a4ed38f9c3fdbcb93efb42e25d275193e093071fade \
-- --hash=sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3 \
-- --hash=sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec \
-- --hash=sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508 \
-- --hash=sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4 \
-- --hash=sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca \
-- --hash=sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4 \
-- --hash=sha256:4f97ecde7ac6513b21cd95efdfc38dc6d19f96f6ca6f2a30550e94e551458e0a \
-- --hash=sha256:5540daee2b236d9569c950b417f13fd112d51d78b4c43012de05774908dff3f5 \
-- --hash=sha256:560e71220dc92dfa254b10a4dcb12d56b574d2d87e095db20466b32a93fec3f9 \
-- --hash=sha256:56dd172d862e850823c4af02dc4ddbc308f042b85472ffdaca67f1598dff4a57 \
-- --hash=sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a \
-- --hash=sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a \
-- --hash=sha256:82690e89c72b85addf4fc4d5058fb1e387b6c14eb063b0b879bf3f42c3b93c35 \
-- --hash=sha256:851ae3a8563d87a5a0dc49c2e2529c75b8842582ccaefbf84297d2cfceeacd61 \
-- --hash=sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8 \
-- --hash=sha256:9c82ece71ed1c2b807b6628e3933bc6eae57ea21dac207dca3470e3ceaaf437c \
-- --hash=sha256:be949b46b7388074c5acae017fbbe3e5ba303fd9daaa52157fdfef30bbdacadd \
-- --hash=sha256:c10f061764d8dce0a9592ce08bfd5f243a00703325c388f1086037e5d619c5f1 \
-- --hash=sha256:d2cf6a231a07c14acd504a945a6e9ec115e0007f675bde5e0de30a4dc8d86a31 \
-- --hash=sha256:d571644958c5e19a61c793d8d23cd02479572da828e333498c9acc463f4a3997 \
-- --hash=sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d \
-- --hash=sha256:e520ec76de00943dd017c8ea3f354fa1d2f542eac994811943a8faedf2a7d5cb \
-- --hash=sha256:e79d8368cd9295045956bfb436656bea3f915beaa11d342e9f79f129f5178763 \
-- --hash=sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868 \
-- --hash=sha256:fb267ce4b83f9c42560e9ff4d30f60f7ae492eacf9c7ede849edf8c1b860e16b
-- # via
-- # -r ci/official/requirements_updater/requirements.in
-- # keras
-+h5py>=3.12.0
- idna==3.7 \
- --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
- --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
-@@ -587,24 +558,7 @@ protobuf==4.25.3 \
- --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \
- --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2
- # via tensorboard
--psutil==5.9.8 \
-- --hash=sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d \
-- --hash=sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73 \
-- --hash=sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8 \
-- --hash=sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2 \
-- --hash=sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e \
-- --hash=sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36 \
-- --hash=sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7 \
-- --hash=sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c \
-- --hash=sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee \
-- --hash=sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421 \
-- --hash=sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf \
-- --hash=sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81 \
-- --hash=sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0 \
-- --hash=sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631 \
-- --hash=sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 \
-- --hash=sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8
-- # via portpicker
-+psutil>=7.0.0
- pyelftools==0.31 \
- --hash=sha256:c774416b10310156879443b81187d182d8d9ee499660380e645918b50bc88f99 \
- --hash=sha256:f52de7b3c7e8c64c8abc04a79a1cf37ac5fb0b8a49809827130b858944840607
-diff --git a/requirements_lock_3_9.txt b/requirements_lock_3_9.txt
-index a3d77545aed..2d9911ac3c4 100644
---- a/requirements_lock_3_9.txt
-+++ b/requirements_lock_3_9.txt
-@@ -185,36 +185,7 @@ grpcio==1.64.1 \
- # via
- # -r ci/official/requirements_updater/requirements.in
- # tensorboard
--h5py==3.13.0 \
-- --hash=sha256:10894c55d46df502d82a7a4ed38f9c3fdbcb93efb42e25d275193e093071fade \
-- --hash=sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3 \
-- --hash=sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec \
-- --hash=sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508 \
-- --hash=sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4 \
-- --hash=sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca \
-- --hash=sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4 \
-- --hash=sha256:4f97ecde7ac6513b21cd95efdfc38dc6d19f96f6ca6f2a30550e94e551458e0a \
-- --hash=sha256:5540daee2b236d9569c950b417f13fd112d51d78b4c43012de05774908dff3f5 \
-- --hash=sha256:560e71220dc92dfa254b10a4dcb12d56b574d2d87e095db20466b32a93fec3f9 \
-- --hash=sha256:56dd172d862e850823c4af02dc4ddbc308f042b85472ffdaca67f1598dff4a57 \
-- --hash=sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a \
-- --hash=sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a \
-- --hash=sha256:82690e89c72b85addf4fc4d5058fb1e387b6c14eb063b0b879bf3f42c3b93c35 \
-- --hash=sha256:851ae3a8563d87a5a0dc49c2e2529c75b8842582ccaefbf84297d2cfceeacd61 \
-- --hash=sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8 \
-- --hash=sha256:9c82ece71ed1c2b807b6628e3933bc6eae57ea21dac207dca3470e3ceaaf437c \
-- --hash=sha256:be949b46b7388074c5acae017fbbe3e5ba303fd9daaa52157fdfef30bbdacadd \
-- --hash=sha256:c10f061764d8dce0a9592ce08bfd5f243a00703325c388f1086037e5d619c5f1 \
-- --hash=sha256:d2cf6a231a07c14acd504a945a6e9ec115e0007f675bde5e0de30a4dc8d86a31 \
-- --hash=sha256:d571644958c5e19a61c793d8d23cd02479572da828e333498c9acc463f4a3997 \
-- --hash=sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d \
-- --hash=sha256:e520ec76de00943dd017c8ea3f354fa1d2f542eac994811943a8faedf2a7d5cb \
-- --hash=sha256:e79d8368cd9295045956bfb436656bea3f915beaa11d342e9f79f129f5178763 \
-- --hash=sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868 \
-- --hash=sha256:fb267ce4b83f9c42560e9ff4d30f60f7ae492eacf9c7ede849edf8c1b860e16b
-- # via
-- # -r ci/official/requirements_updater/requirements.in
-- # keras
-+h5py>=3.12.0
- idna==3.7 \
- --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
- --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
-@@ -583,23 +554,7 @@ protobuf==4.25.3 \
- --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \
- --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2
- # via tensorboard
--psutil==5.9.8 \
-- --hash=sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d \
-- --hash=sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73 \
-- --hash=sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8 \
-- --hash=sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2 \
-- --hash=sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e \
-- --hash=sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36 \
-- --hash=sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7 \
-- --hash=sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c \
-- --hash=sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee \
-- --hash=sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421 \
-- --hash=sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf \
-- --hash=sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81 \
-- --hash=sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0 \
-- --hash=sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631 \
-- --hash=sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 \
-- --hash=sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8
-+psutil>=7.0.0
- # via portpicker
- pyelftools==0.31 \
- --hash=sha256:c774416b10310156879443b81187d182d8d9ee499660380e645918b50bc88f99 \
diff --git a/recipe/patches/0043-cross-arch-config.patch b/recipe/patches/0042-cross-arch-config.patch
similarity index 94%
rename from recipe/patches/0043-cross-arch-config.patch
rename to recipe/patches/0042-cross-arch-config.patch
index 6baccecb5..3f3df7530 100644
--- a/recipe/patches/0043-cross-arch-config.patch
+++ b/recipe/patches/0042-cross-arch-config.patch
@@ -1,7 +1,7 @@
-From 2a4e3c49ce87c62dae261011b8d2b297f300695d Mon Sep 17 00:00:00 2001
+From 977dfe9a0ff84b6d42307a5784ced2aa70bc93b6 Mon Sep 17 00:00:00 2001
From: dslarm
Date: Tue, 14 Oct 2025 15:02:09 +0000
-Subject: [PATCH 43/44] cross arch config
+Subject: [PATCH 42/44] cross arch config
---
third_party/llvm/dirty.patch | 11 +++++++++++
diff --git a/recipe/patches/0043-Fix-shared-memory-alignment-in-concat-split-GPU-kern.patch b/recipe/patches/0043-Fix-shared-memory-alignment-in-concat-split-GPU-kern.patch
new file mode 100644
index 000000000..0d9e962bd
--- /dev/null
+++ b/recipe/patches/0043-Fix-shared-memory-alignment-in-concat-split-GPU-kern.patch
@@ -0,0 +1,44 @@
+From 0b532f8a4329b983a39604d64d511ac4cf33fb72 Mon Sep 17 00:00:00 2001
+From: stevemcgregory
+Date: Sat, 16 Aug 2025 09:16:35 -0500
+Subject: [PATCH 43/44] Fix shared memory alignment in concat/split GPU kernels
+
+Align shared memory buffer to 16 bytes (or max of T and IntType) to
+avoid misaligned access issues on newer GPUs.
+---
+ tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc | 5 ++++-
+ tensorflow/core/kernels/split_lib_gpu.cu.cc | 5 ++++-
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc b/tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc
+index 031464dfdd9..a6cece16d20 100644
+--- a/tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc
++++ b/tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc
+@@ -70,7 +70,10 @@ __global__ void concat_variable_kernel(
+ IntType num_inputs = input_ptr_data.size;
+
+ // verbose declaration needed due to template
+- GPU_DYNAMIC_SHARED_MEM_DECL(sizeof(T), unsigned char, smem);
++ constexpr size_t kAlignTI =
++ (alignof(T) > alignof(IntType)) ? alignof(T) : alignof(IntType);
++ constexpr size_t kAlign = (kAlignTI < 16) ? 16 : kAlignTI;
++ GPU_DYNAMIC_SHARED_MEM_DECL(kAlign, unsigned char, smem);
+ IntType* smem_col_scan = reinterpret_cast(smem);
+
+ if (useSmem) {
+diff --git a/tensorflow/core/kernels/split_lib_gpu.cu.cc b/tensorflow/core/kernels/split_lib_gpu.cu.cc
+index 90b28292ac0..b55845bb4e9 100644
+--- a/tensorflow/core/kernels/split_lib_gpu.cu.cc
++++ b/tensorflow/core/kernels/split_lib_gpu.cu.cc
+@@ -120,7 +120,10 @@ __global__ void split_v_kernel(const T* __restrict__ input_ptr,
+ int num_outputs = output_ptr_data.size;
+
+ // verbose declaration needed due to template
+- GPU_DYNAMIC_SHARED_MEM_DECL(sizeof(T), unsigned char, smem);
++ constexpr size_t kAlignTI =
++ (alignof(T) > alignof(IntType)) ? alignof(T) : alignof(IntType);
++ constexpr size_t kAlign = (kAlignTI < 16) ? 16 : kAlignTI;
++ GPU_DYNAMIC_SHARED_MEM_DECL(kAlign, unsigned char, smem);
+ IntType* smem_col_scan = reinterpret_cast(smem);
+
+ if (useSmem) {
diff --git a/recipe/patches/0044-Support-for-TFv2.20-to-compile-with-CUDA-v12.9.1.patch b/recipe/patches/0044-Support-for-TFv2.20-to-compile-with-CUDA-v12.9.1.patch
index 0590b21b8..e39bdd129 100644
--- a/recipe/patches/0044-Support-for-TFv2.20-to-compile-with-CUDA-v12.9.1.patch
+++ b/recipe/patches/0044-Support-for-TFv2.20-to-compile-with-CUDA-v12.9.1.patch
@@ -1,74 +1,44 @@
-From 360ce4cf9f33f0567dd5e169e87950d0bafc5126 Mon Sep 17 00:00:00 2001
+From 6f35d3d6c40cbf09dd848d37b9911e0d8725aa35 Mon Sep 17 00:00:00 2001
From: aravindhbalaji1985
Date: Mon, 25 Aug 2025 15:15:14 -0700
Subject: [PATCH 44/44] Support for TFv2.20 to compile with CUDA v12.9.1
---
- tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc | 2 +-
- .../core/kernels/dynamic_partition_op_gpu.cu.cc | 6 +++++-
- tensorflow/core/kernels/split_lib_gpu.cu.cc | 2 +-
- tensorflow/core/kernels/where_op_gpu.cu.h | 11 +++++++++++
- 4 files changed, 18 insertions(+), 3 deletions(-)
+ tensorflow/core/kernels/dynamic_partition_op_gpu.cu.cc | 4 ++++
+ tensorflow/core/kernels/where_op_gpu.cu.h | 10 ++++++++++
+ 2 files changed, 14 insertions(+)
-diff --git a/tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc b/tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc
-index 031464dfdd9..b4fe8ae6977 100644
---- a/tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc
-+++ b/tensorflow/core/kernels/concat_lib_gpu_impl.cu.cc
-@@ -70,7 +70,7 @@ __global__ void concat_variable_kernel(
- IntType num_inputs = input_ptr_data.size;
-
- // verbose declaration needed due to template
-- GPU_DYNAMIC_SHARED_MEM_DECL(sizeof(T), unsigned char, smem);
-+ GPU_DYNAMIC_SHARED_MEM_DECL(8, unsigned char, smem);
- IntType* smem_col_scan = reinterpret_cast(smem);
-
- if (useSmem) {
diff --git a/tensorflow/core/kernels/dynamic_partition_op_gpu.cu.cc b/tensorflow/core/kernels/dynamic_partition_op_gpu.cu.cc
-index ae3fe6d140f..737e22e5b9f 100644
+index ae3fe6d140f..cb603ba7c6c 100644
--- a/tensorflow/core/kernels/dynamic_partition_op_gpu.cu.cc
+++ b/tensorflow/core/kernels/dynamic_partition_op_gpu.cu.cc
@@ -410,7 +410,11 @@ class DynamicPartitionOpGPU : public AsyncOpKernel {
num_partitions_);
#if GOOGLE_CUDA
-- cub::ConstantInputIterator values_in(1);
-+ #if THRUST_VERSION >= 200802
-+ thrust::constant_iterator values_in(1);
-+ #else
-+ cub::ConstantInputIterator values_in(1);
-+ #endif
++#if THRUST_VERSION >= 200802
++ thrust::constant_iterator values_in(1);
++#else
+ cub::ConstantInputIterator values_in(1);
++#endif
#elif TENSORFLOW_USE_ROCM
using ConstantInputIterator =
::rocprim::constant_iterator;
-diff --git a/tensorflow/core/kernels/split_lib_gpu.cu.cc b/tensorflow/core/kernels/split_lib_gpu.cu.cc
-index 90b28292ac0..e395d4f12f5 100644
---- a/tensorflow/core/kernels/split_lib_gpu.cu.cc
-+++ b/tensorflow/core/kernels/split_lib_gpu.cu.cc
-@@ -120,7 +120,7 @@ __global__ void split_v_kernel(const T* __restrict__ input_ptr,
- int num_outputs = output_ptr_data.size;
-
- // verbose declaration needed due to template
-- GPU_DYNAMIC_SHARED_MEM_DECL(sizeof(T), unsigned char, smem);
-+ GPU_DYNAMIC_SHARED_MEM_DECL(2, unsigned char, smem);
- IntType* smem_col_scan = reinterpret_cast(smem);
-
- if (useSmem) {
diff --git a/tensorflow/core/kernels/where_op_gpu.cu.h b/tensorflow/core/kernels/where_op_gpu.cu.h
-index 5eb03ec60ad..3de25b7a82c 100644
+index 5eb03ec60ad..949e183b466 100644
--- a/tensorflow/core/kernels/where_op_gpu.cu.h
+++ b/tensorflow/core/kernels/where_op_gpu.cu.h
-@@ -233,6 +233,17 @@ class WhereOutputIterator {
+@@ -233,6 +233,16 @@ class WhereOutputIterator {
return *(ptr_ + (valid ? (NDIM * n) : 0));
}
-+
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE reference operator*() const {
+ // Dereference the current pointer
+ return *ptr_;
+ }
+
-+
-+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE self_type operator+(std::ptrdiff_t n) const {
++ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE self_type
++ operator+(std::ptrdiff_t n) const {
+ return self_type(ptr_ + NDIM * n, max_row_);
+ }
+