version: 2.1 # How to test the Linux jobs: # - Install CircleCI local CLI: https://circleci.com/docs/2.0/local-cli/ # - circleci config process .circleci/config.yml > gen.yml && circleci local execute -c gen.yml --job binary_linux_wheel_py3.7 # - Replace binary_linux_wheel_py3.7 with the name of the job you want to test. # Job names are 'name:' key. orbs: win: circleci/windows@2.0.0 executors: windows-gpu-prototype: machine: resource_class: windows.gpu.small.prototype image: windows-server-2019-nvidia:201908-28 shell: bash.exe commands: checkout_merge: description: "checkout merge branch" steps: - checkout # - run: # name: Checkout merge branch # command: | # set -ex # BRANCH=$(git rev-parse --abbrev-ref HEAD) # if [[ "$BRANCH" != "master" ]]; then # git fetch --force origin ${CIRCLE_BRANCH}/merge:merged/${CIRCLE_BRANCH} # git checkout "merged/$CIRCLE_BRANCH" # fi binary_common: &binary_common parameters: # Edit these defaults to do a release` build_version: description: "version number of release binary; by default, build a nightly" type: string default: "" pytorch_version: description: "PyTorch version to build against; by default, use a nightly" type: string default: "" # Don't edit these python_version: description: "Python version to build against (e.g., 3.7)" type: string cu_version: description: "CUDA version to build against, in CU format (e.g., cpu or cu100)" type: string unicode_abi: description: "Python 2.7 wheel only: whether or not we are cp27mu (default: no)" type: string default: "" wheel_docker_image: description: "Wheel only: what docker image to use" type: string default: "soumith/manylinux-cuda101" environment: PYTHON_VERSION: << parameters.python_version >> BUILD_VERSION: << parameters.build_version >> PYTORCH_VERSION: << parameters.pytorch_version >> UNICODE_ABI: << parameters.unicode_abi >> CU_VERSION: << parameters.cu_version >> jobs: circleci_consistency: docker: - image: circleci/python:3.7 steps: - checkout - run: command: | pip install --user --progress-bar off jinja2 pyyaml python .circleci/regenerate.py git diff --exit-code || (echo ".circleci/config.yml not in sync with config.yml.in! Run .circleci/regenerate.py to update config"; exit 1) binary_linux_wheel: <<: *binary_common docker: - image: << parameters.wheel_docker_image >> resource_class: 2xlarge+ steps: - checkout_merge - run: packaging/build_wheel.sh - store_artifacts: path: dist - persist_to_workspace: root: dist paths: - "*" binary_linux_conda: <<: *binary_common docker: - image: "soumith/conda-cuda" resource_class: 2xlarge+ steps: - checkout_merge - run: packaging/build_conda.sh - store_artifacts: path: /opt/conda/conda-bld/linux-64 - persist_to_workspace: root: /opt/conda/conda-bld/linux-64 paths: - "*" binary_linux_conda_cuda: <<: *binary_common machine: image: ubuntu-1604:201903-01 resource_class: gpu.medium steps: - checkout_merge - run: name: Setup environment command: | set -e curl -L https://packagecloud.io/circleci/trusty/gpgkey | sudo apt-key add - curl -L https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update export DOCKER_VERSION="5:19.03.2~3-0~ubuntu-xenial" sudo apt-get install docker-ce=${DOCKER_VERSION} docker-ce-cli=${DOCKER_VERSION} containerd.io=1.2.6-3 # Add the package repositories distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list export NVIDIA_CONTAINER_VERSION="1.0.3-1" sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit=${NVIDIA_CONTAINER_VERSION} sudo systemctl restart docker DRIVER_FN="NVIDIA-Linux-x86_64-410.104.run" wget "https://s3.amazonaws.com/ossci-linux/nvidia_driver/$DRIVER_FN" sudo /bin/bash "$DRIVER_FN" -s --no-drm || (sudo cat /var/log/nvidia-installer.log && false) nvidia-smi - run: name: Pull docker image command: | set -e export DOCKER_IMAGE=soumith/conda-cuda echo Pulling docker image $DOCKER_IMAGE docker pull $DOCKER_IMAGE >/dev/null - run: name: Build and run tests command: | set -e cd ${HOME}/project/ export DOCKER_IMAGE=soumith/conda-cuda export VARS_TO_PASS="-e PYTHON_VERSION -e BUILD_VERSION -e PYTORCH_VERSION -e UNICODE_ABI -e CU_VERSION" docker run --gpus all --ipc=host -v $(pwd):/remote -w /remote ${VARS_TO_PASS} ${DOCKER_IMAGE} ./packaging/build_conda.sh binary_win_conda: <<: *binary_common executor: name: win/default shell: bash.exe steps: - checkout_merge - run: command: | choco install miniconda3 (& "C:\tools\miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression conda activate base conda install -yq conda-build "conda-package-handling!=1.5.0" bash packaging/build_conda.sh shell: powershell.exe binary_win_conda_cuda: <<: *binary_common executor: windows-gpu-prototype steps: - checkout_merge - run: command: | choco install miniconda3 (& "C:\tools\miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression conda activate base conda install -yq conda-build "conda-package-handling!=1.5.0" bash packaging/build_conda.sh shell: powershell.exe binary_macos_wheel: <<: *binary_common macos: xcode: "9.0" steps: - checkout_merge - run: # Cannot easily deduplicate this as source'ing activate # will set environment variables which we need to propagate # to build_wheel.sh command: | curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh sh conda.sh -b source $HOME/miniconda3/bin/activate packaging/build_wheel.sh - store_artifacts: path: dist - persist_to_workspace: root: dist paths: - "*" binary_macos_conda: <<: *binary_common macos: xcode: "9.0" steps: - checkout_merge - run: command: | curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh sh conda.sh -b source $HOME/miniconda3/bin/activate conda install -yq conda-build packaging/build_conda.sh - store_artifacts: path: /Users/distiller/miniconda3/conda-bld/osx-64 - persist_to_workspace: root: /Users/distiller/miniconda3/conda-bld/osx-64 paths: - "*" # Requires org-member context binary_conda_upload: docker: - image: continuumio/miniconda steps: - attach_workspace: at: ~/workspace - run: command: | # Prevent credential from leaking conda install -yq anaconda-client set +x anaconda login \ --username "$PYTORCH_BINARY_PJH5_CONDA_USERNAME" \ --password "$PYTORCH_BINARY_PJH5_CONDA_PASSWORD" set -x anaconda upload ~/workspace/*.tar.bz2 -u pytorch-nightly --label main --no-progress --force # Requires org-member context binary_wheel_upload: parameters: subfolder: description: "What whl subfolder to upload to, e.g., blank or cu100/ (trailing slash is important)" type: string docker: - image: circleci/python:3.7 steps: - attach_workspace: at: ~/workspace - checkout - run: command: | pip install --user awscli export PATH="$HOME/.local/bin:$PATH" # Prevent credential from leaking set +x export AWS_ACCESS_KEY_ID="${PYTORCH_BINARY_AWS_ACCESS_KEY_ID}" export AWS_SECRET_ACCESS_KEY="${PYTORCH_BINARY_AWS_SECRET_ACCESS_KEY}" set -x for pkg in ~/workspace/*.whl; do aws s3 cp "$pkg" "s3://pytorch/whl/nightly/<< parameters.subfolder >>" --acl public-read done workflows: build: {%- if True %} jobs: - circleci_consistency {{ workflows() }} - binary_linux_conda_cuda: name: torchvision_linux_py3.7_cu100 python_version: "3.7" cu_version: "cu100" - binary_win_conda: name: torchvision_win_py3.6_cpu python_version: "3.6" cu_version: "cpu" - binary_win_conda_cuda: name: torchvision_win_py3.6_cu101 python_version: "3.6" cu_version: "cu101" nightly: {%- endif %} jobs: - circleci_consistency {{ workflows(prefix="nightly_", filter_branch="nightly", upload=True) }}