From c85673c626038a7ab5d6c17f47a31b2c76409dd8 Mon Sep 17 00:00:00 2001 From: Jeremy Reizenstein Date: Wed, 16 Mar 2022 05:44:40 -0700 Subject: [PATCH] PyTorch 1.11.0 Summary: Add builds for PyTorch 1.11.0. Reviewed By: nikhilaravi Differential Revision: D34861021 fbshipit-source-id: 1a1c46fac48719bc66c81872e65531a48ff538ed --- .circleci/config.yml | 161 +++++++++++++++++++++++++++++++ .circleci/regenerate.py | 23 ++++- packaging/linux_wheels/go.sh | 1 + packaging/linux_wheels/inside.sh | 42 +++++--- packaging/pkg_helpers.bash | 14 +++ 5 files changed, 222 insertions(+), 19 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7674ac27..eda1bcaa 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -314,6 +314,51 @@ workflows: name: linux_conda_py37_cu113_pyt1101 python_version: '3.7' pytorch_version: 1.10.1 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu102 + name: linux_conda_py37_cu102_pyt1102 + python_version: '3.7' + pytorch_version: 1.10.2 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu111 + name: linux_conda_py37_cu111_pyt1102 + python_version: '3.7' + pytorch_version: 1.10.2 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda113 + context: DOCKERHUB_TOKEN + cu_version: cu113 + name: linux_conda_py37_cu113_pyt1102 + python_version: '3.7' + pytorch_version: 1.10.2 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu102 + name: linux_conda_py37_cu102_pyt1110 + python_version: '3.7' + pytorch_version: 1.11.0 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu111 + name: linux_conda_py37_cu111_pyt1110 + python_version: '3.7' + pytorch_version: 1.11.0 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda113 + context: DOCKERHUB_TOKEN + cu_version: cu113 + name: linux_conda_py37_cu113_pyt1110 + python_version: '3.7' + pytorch_version: 1.11.0 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda115 + context: DOCKERHUB_TOKEN + cu_version: cu115 + name: linux_conda_py37_cu115_pyt1110 + python_version: '3.7' + pytorch_version: 1.11.0 - binary_linux_conda: context: DOCKERHUB_TOKEN cu_version: cu101 @@ -448,6 +493,51 @@ workflows: name: linux_conda_py38_cu113_pyt1101 python_version: '3.8' pytorch_version: 1.10.1 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu102 + name: linux_conda_py38_cu102_pyt1102 + python_version: '3.8' + pytorch_version: 1.10.2 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu111 + name: linux_conda_py38_cu111_pyt1102 + python_version: '3.8' + pytorch_version: 1.10.2 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda113 + context: DOCKERHUB_TOKEN + cu_version: cu113 + name: linux_conda_py38_cu113_pyt1102 + python_version: '3.8' + pytorch_version: 1.10.2 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu102 + name: linux_conda_py38_cu102_pyt1110 + python_version: '3.8' + pytorch_version: 1.11.0 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu111 + name: linux_conda_py38_cu111_pyt1110 + python_version: '3.8' + pytorch_version: 1.11.0 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda113 + context: DOCKERHUB_TOKEN + cu_version: cu113 + name: linux_conda_py38_cu113_pyt1110 + python_version: '3.8' + pytorch_version: 1.11.0 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda115 + context: DOCKERHUB_TOKEN + cu_version: cu115 + name: linux_conda_py38_cu115_pyt1110 + python_version: '3.8' + pytorch_version: 1.11.0 - binary_linux_conda: context: DOCKERHUB_TOKEN cu_version: cu101 @@ -564,6 +654,77 @@ workflows: name: linux_conda_py39_cu113_pyt1101 python_version: '3.9' pytorch_version: 1.10.1 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu102 + name: linux_conda_py39_cu102_pyt1102 + python_version: '3.9' + pytorch_version: 1.10.2 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu111 + name: linux_conda_py39_cu111_pyt1102 + python_version: '3.9' + pytorch_version: 1.10.2 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda113 + context: DOCKERHUB_TOKEN + cu_version: cu113 + name: linux_conda_py39_cu113_pyt1102 + python_version: '3.9' + pytorch_version: 1.10.2 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu102 + name: linux_conda_py39_cu102_pyt1110 + python_version: '3.9' + pytorch_version: 1.11.0 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu111 + name: linux_conda_py39_cu111_pyt1110 + python_version: '3.9' + pytorch_version: 1.11.0 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda113 + context: DOCKERHUB_TOKEN + cu_version: cu113 + name: linux_conda_py39_cu113_pyt1110 + python_version: '3.9' + pytorch_version: 1.11.0 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda115 + context: DOCKERHUB_TOKEN + cu_version: cu115 + name: linux_conda_py39_cu115_pyt1110 + python_version: '3.9' + pytorch_version: 1.11.0 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu102 + name: linux_conda_py310_cu102_pyt1110 + python_version: '3.10' + pytorch_version: 1.11.0 + - binary_linux_conda: + context: DOCKERHUB_TOKEN + cu_version: cu111 + name: linux_conda_py310_cu111_pyt1110 + python_version: '3.10' + pytorch_version: 1.11.0 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda113 + context: DOCKERHUB_TOKEN + cu_version: cu113 + name: linux_conda_py310_cu113_pyt1110 + python_version: '3.10' + pytorch_version: 1.11.0 + - binary_linux_conda: + conda_docker_image: pytorch/conda-builder:cuda115 + context: DOCKERHUB_TOKEN + cu_version: cu115 + name: linux_conda_py310_cu115_pyt1110 + python_version: '3.10' + pytorch_version: 1.11.0 - binary_linux_conda_cuda: name: testrun_conda_cuda_py37_cu102_pyt170 context: DOCKERHUB_TOKEN diff --git a/.circleci/regenerate.py b/.circleci/regenerate.py index a3d5918c..9542a87f 100755 --- a/.circleci/regenerate.py +++ b/.circleci/regenerate.py @@ -13,6 +13,7 @@ import os.path import jinja2 import yaml +from packaging import version # The CUDA versions which have pytorch conda packages available for linux for each @@ -27,26 +28,40 @@ CONDA_CUDA_VERSIONS = { "1.9.1": ["cu102", "cu111"], "1.10.0": ["cu102", "cu111", "cu113"], "1.10.1": ["cu102", "cu111", "cu113"], + "1.10.2": ["cu102", "cu111", "cu113"], + "1.11.0": ["cu102", "cu111", "cu113", "cu115"], } def conda_docker_image_for_cuda(cuda_version): if cuda_version == "cu113": return "pytorch/conda-builder:cuda113" + if cuda_version == "cu115": + return "pytorch/conda-builder:cuda115" return None def pytorch_versions_for_python(python_version): - if python_version in ["3.6", "3.7", "3.8"]: + if python_version in ["3.7", "3.8"]: return list(CONDA_CUDA_VERSIONS) - pytorch_without_py39 = ["1.4", "1.5.0", "1.5.1", "1.6.0", "1.7.0"] - return [i for i in CONDA_CUDA_VERSIONS if i not in pytorch_without_py39] + if python_version == "3.9": + return [ + i + for i in CONDA_CUDA_VERSIONS + if version.Version(i) > version.Version("1.7.0") + ] + if python_version == "3.10": + return [ + i + for i in CONDA_CUDA_VERSIONS + if version.Version(i) >= version.Version("1.11.0") + ] def workflows(prefix="", filter_branch=None, upload=False, indentation=6): w = [] for btype in ["conda"]: - for python_version in ["3.7", "3.8", "3.9"]: + for python_version in ["3.7", "3.8", "3.9", "3.10"]: for pytorch_version in pytorch_versions_for_python(python_version): for cu_version in CONDA_CUDA_VERSIONS[pytorch_version]: w += workflow_pair( diff --git a/packaging/linux_wheels/go.sh b/packaging/linux_wheels/go.sh index 7408bde4..359764c0 100644 --- a/packaging/linux_wheels/go.sh +++ b/packaging/linux_wheels/go.sh @@ -7,3 +7,4 @@ sudo docker run --rm -v "$PWD/../../:/inside" pytorch/conda-cuda bash inside/packaging/linux_wheels/inside.sh sudo docker run --rm -v "$PWD/../../:/inside" -e SELECTED_CUDA=cu113 pytorch/conda-builder:cuda113 bash inside/packaging/linux_wheels/inside.sh +sudo docker run --rm -v "$PWD/../../:/inside" -e SELECTED_CUDA=cu115 pytorch/conda-builder:cuda115 bash inside/packaging/linux_wheels/inside.sh diff --git a/packaging/linux_wheels/inside.sh b/packaging/linux_wheels/inside.sh index 5f4f6be7..d9811c72 100644 --- a/packaging/linux_wheels/inside.sh +++ b/packaging/linux_wheels/inside.sh @@ -26,21 +26,13 @@ echo "CUB_HOME is now $CUB_HOME" # As a rule, we want to build for any combination of dependencies which is supported by # PyTorch3D and not older than the current Google Colab set up. -PYTHON_VERSIONS="3.7 3.8 3.9" +PYTHON_VERSIONS="3.7 3.8 3.9 3.10" # the keys are pytorch versions declare -A CONDA_CUDA_VERSIONS=( -# ["1.4.0"]="cu101" -# ["1.5.0"]="cu101 cu102" -# ["1.5.1"]="cu101 cu102" -# ["1.6.0"]="cu101 cu102" -# ["1.7.0"]="cu101 cu102 cu110" -# ["1.7.1"]="cu101 cu102 cu110" -# ["1.8.0"]="cu101 cu102 cu111" -# ["1.8.1"]="cu101 cu102 cu111" -# ["1.9.0"]="cu102 cu111" -# ["1.9.1"]="cu102 cu111" - ["1.10.0"]="cu102 cu111 cu113" - ["1.10.1"]="cu102 cu111 cu113" + ["1.10.1"]="cu111 cu113" + ["1.10.2"]="cu111 cu113" + ["1.10.0"]="cu111 cu113" + ["1.11.0"]="cu111 cu113 cu115" ) @@ -49,24 +41,44 @@ for python_version in $PYTHON_VERSIONS do for pytorch_version in "${!CONDA_CUDA_VERSIONS[@]}" do - if [[ "3.6 3.7 3.8" != *$python_version* ]] && [[ "1.4.0 1.5.0 1.5.1 1.6.0 1.7.0" == *$pytorch_version* ]] + if [[ "3.7 3.8" != *$python_version* ]] && [[ "1.7.0" == *$pytorch_version* ]] then #python 3.9 and later not supported by pytorch 1.7.0 and before continue fi + if [[ "3.7 3.8 3.9" != *$python_version* ]] && [[ "1.7.0 1.7.1 1.8.0 1.8.1 1.9.0 1.9.1 1.10.0 1.10.1 1.10.2" == *$pytorch_version* ]] + then + #python 3.10 and later not supported by pytorch 1.10.2 and before + continue + fi extra_channel="-c conda-forge" + if [[ "1.11.0" == "$pytorch_version" ]] + then + extra_channel="" + fi for cu_version in ${CONDA_CUDA_VERSIONS[$pytorch_version]} do - if [[ "cu113" == *$cu_version* ]] && [[ $SELECTED_CUDA != "$cu_version" ]] + if [[ "cu113 cu115" == *$cu_version* ]] # ^^^ CUDA versions listed here have to be built # in their own containers. + then + if [[ $SELECTED_CUDA != "$cu_version" ]] + then + continue + fi + elif [[ $SELECTED_CUDA != "" ]] then continue fi case "$cu_version" in + cu115) + export CUDA_HOME=/usr/local/cuda-11.5/ + export CUDA_TAG=11.5 + export NVCC_FLAGS="-gencode=arch=compute_35,code=sm_35 -gencode=arch=compute_50,code=sm_50 -gencode=arch=compute_60,code=sm_60 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_80,code=sm_80 -gencode=arch=compute_86,code=sm_86 -gencode=arch=compute_50,code=compute_50" + ;; cu113) export CUDA_HOME=/usr/local/cuda-11.3/ export CUDA_TAG=11.3 diff --git a/packaging/pkg_helpers.bash b/packaging/pkg_helpers.bash index ea0ba9cf..cfb747ef 100644 --- a/packaging/pkg_helpers.bash +++ b/packaging/pkg_helpers.bash @@ -55,6 +55,17 @@ setup_cuda() { # Now work out the CUDA settings case "$CU_VERSION" in + cu115) + if [[ "$OSTYPE" == "msys" ]]; then + export CUDA_HOME="C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.5" + else + export CUDA_HOME=/usr/local/cuda-11.5/ + fi + export FORCE_CUDA=1 + # Hard-coding gencode flags is temporary situation until + # https://github.com/pytorch/pytorch/pull/23408 lands + export NVCC_FLAGS="-gencode=arch=compute_35,code=sm_35 -gencode=arch=compute_50,code=sm_50 -gencode=arch=compute_60,code=sm_60 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_80,code=sm_80 -gencode=arch=compute_86,code=sm_86 -gencode=arch=compute_50,code=compute_50" + ;; cu113) if [[ "$OSTYPE" == "msys" ]]; then export CUDA_HOME="C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3" @@ -293,6 +304,9 @@ setup_conda_cudatoolkit_constraint() { export CONDA_CUDATOOLKIT_CONSTRAINT="" else case "$CU_VERSION" in + cu115) + export CONDA_CUDATOOLKIT_CONSTRAINT="- cudatoolkit >=11.5,<11.6 # [not osx]" + ;; cu113) export CONDA_CUDATOOLKIT_CONSTRAINT="- cudatoolkit >=11.3,<11.4 # [not osx]" ;;