Spaces:
Running
Running
# Copyright (c) Meta Platforms, Inc. and affiliates. | |
# All rights reserved. | |
# | |
# This source code is licensed under the BSD-style license found in the | |
# LICENSE file in the root directory of this source tree. | |
set -ex | |
conda init bash | |
# shellcheck source=/dev/null | |
source ~/.bashrc | |
cd /inside | |
VERSION=$(python -c "exec(open('pytorch3d/__init__.py').read()); print(__version__)") | |
export BUILD_VERSION=$VERSION | |
export FORCE_CUDA=1 | |
export MAX_JOBS=8 | |
export CONDA_PKGS_DIRS=/conda_cache | |
if false | |
then | |
# We used to have to do this for old versions of CUDA | |
wget --no-verbose https://github.com/NVIDIA/cub/archive/1.10.0.tar.gz | |
tar xzf 1.10.0.tar.gz | |
CUB_HOME=$(realpath ./cub-1.10.0) | |
export CUB_HOME | |
echo "CUB_HOME is now $CUB_HOME" | |
fi | |
# 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.8 3.9 3.10" | |
# the keys are pytorch versions | |
declare -A CONDA_CUDA_VERSIONS=( | |
# ["1.11.0"]="cu113" | |
# ["1.12.0"]="cu113" | |
# ["1.12.1"]="cu113" | |
# ["1.13.0"]="cu116" | |
# ["1.13.1"]="cu116 cu117" | |
# ["2.0.0"]="cu117 cu118" | |
["2.0.1"]="cu117 cu118" | |
) | |
for python_version in $PYTHON_VERSIONS | |
do | |
for pytorch_version in "${!CONDA_CUDA_VERSIONS[@]}" | |
do | |
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 nvidia" | |
cudatools="pytorch-cuda" | |
if [[ "1.11.0" == "$pytorch_version" ]] | |
then | |
extra_channel="" | |
cudatools="cudatoolkit" | |
fi | |
if [[ "1.12.0" == "$pytorch_version" ]] || [[ "1.12.1" == "$pytorch_version" ]] | |
then | |
extra_channel="-c conda-forge" | |
cudatools="cudatoolkit" | |
fi | |
for cu_version in ${CONDA_CUDA_VERSIONS[$pytorch_version]} | |
do | |
if [[ $SELECTED_CUDA != "$cu_version" ]] | |
then | |
continue | |
fi | |
case "$cu_version" in | |
cu118) | |
export CUDA_HOME=/usr/local/cuda-11.8/ | |
export CUDA_TAG=11.8 | |
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" | |
;; | |
cu117) | |
export CUDA_HOME=/usr/local/cuda-11.7/ | |
export CUDA_TAG=11.7 | |
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" | |
;; | |
cu116) | |
export CUDA_HOME=/usr/local/cuda-11.6/ | |
export CUDA_TAG=11.6 | |
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" | |
;; | |
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 | |
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" | |
;; | |
cu112) | |
export CUDA_HOME=/usr/local/cuda-11.2/ | |
export CUDA_TAG=11.2 | |
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" | |
;; | |
cu111) | |
export CUDA_HOME=/usr/local/cuda-11.1/ | |
export CUDA_TAG=11.1 | |
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" | |
;; | |
cu110) | |
export CUDA_HOME=/usr/local/cuda-11.0/ | |
export CUDA_TAG=11.0 | |
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_50,code=compute_50" | |
;; | |
cu102) | |
export CUDA_HOME=/usr/local/cuda-10.2/ | |
export CUDA_TAG=10.2 | |
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_50,code=compute_50" | |
;; | |
cu101) | |
export CUDA_HOME=/usr/local/cuda-10.1/ | |
export CUDA_TAG=10.1 | |
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_50,code=compute_50" | |
;; | |
*) | |
echo "Unrecognized cu_version=$cu_version" | |
exit 1 | |
;; | |
esac | |
tag=py"${python_version//./}"_"${cu_version}"_pyt"${pytorch_version//./}" | |
outdir="/inside/packaging/linux_wheels/output/$tag" | |
if [[ -d "$outdir" ]] | |
then | |
continue | |
fi | |
conda create -y -n "$tag" "python=$python_version" | |
conda activate "$tag" | |
# shellcheck disable=SC2086 | |
conda install -y -c pytorch $extra_channel "pytorch=$pytorch_version" "$cudatools=$CUDA_TAG" | |
pip install fvcore iopath | |
echo "python version" "$python_version" "pytorch version" "$pytorch_version" "cuda version" "$cu_version" "tag" "$tag" | |
rm -rf dist | |
python setup.py clean | |
python setup.py bdist_wheel | |
rm -rf "$outdir" | |
mkdir -p "$outdir" | |
cp dist/*whl "$outdir" | |
conda deactivate | |
done | |
done | |
done | |
echo "DONE" | |