| DOCKER_REGISTRY           = docker.io | 
 | DOCKER_ORG                = $(shell docker info 2>/dev/null | sed '/Username:/!d;s/.* //') | 
 | DOCKER_IMAGE              = pytorch | 
 | DOCKER_FULL_NAME          = $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(DOCKER_IMAGE) | 
 |  | 
 | ifeq ("$(DOCKER_ORG)","") | 
 | $(warning WARNING: No docker user found using results from whoami) | 
 | DOCKER_ORG                = $(shell whoami) | 
 | endif | 
 |  | 
 | CUDA_VERSION              = 11.1 | 
 | CUDNN_VERSION             = 8 | 
 | BASE_RUNTIME              = ubuntu:18.04 | 
 | BASE_DEVEL                = nvidia/cuda:$(CUDA_VERSION)-cudnn$(CUDNN_VERSION)-devel-ubuntu18.04 | 
 |  | 
 | # The conda channel to use to install cudatoolkit | 
 | CUDA_CHANNEL              = defaults | 
 | # The conda channel to use to install pytorch / torchvision | 
 | INSTALL_CHANNEL           = pytorch | 
 |  | 
 | PYTHON_VERSION            = 3.7 | 
 | PYTORCH_VERSION           = $(shell git describe --tags --always) | 
 | # Can be either official / dev | 
 | BUILD_TYPE                = dev | 
 | BUILD_PROGRESS            = auto | 
 | BUILD_ARGS                = --build-arg BASE_IMAGE=$(BASE_IMAGE) \ | 
 | 							--build-arg PYTHON_VERSION=$(PYTHON_VERSION) \ | 
 | 							--build-arg CUDA_VERSION=$(CUDA_VERSION) \ | 
 | 							--build-arg CUDA_CHANNEL=$(CUDA_CHANNEL) \ | 
 | 							--build-arg PYTORCH_VERSION=$(PYTORCH_VERSION) \ | 
 | 							--build-arg INSTALL_CHANNEL=$(INSTALL_CHANNEL) | 
 | EXTRA_DOCKER_BUILD_FLAGS ?= | 
 | DOCKER_BUILD              = DOCKER_BUILDKIT=1 \ | 
 | 							docker build \ | 
 | 								--progress=$(BUILD_PROGRESS) \ | 
 | 								$(EXTRA_DOCKER_BUILD_FLAGS) \ | 
 | 								--target $(BUILD_TYPE) \ | 
 | 								-t $(DOCKER_FULL_NAME):$(DOCKER_TAG) \ | 
 | 								$(BUILD_ARGS) . | 
 | DOCKER_PUSH               = docker push $(DOCKER_FULL_NAME):$(DOCKER_TAG) | 
 |  | 
 | .PHONY: all | 
 | all: devel-image | 
 |  | 
 | .PHONY: devel-image | 
 | devel-image: BASE_IMAGE := $(BASE_DEVEL) | 
 | devel-image: DOCKER_TAG := $(PYTORCH_VERSION)-devel | 
 | devel-image: | 
 | 	$(DOCKER_BUILD) | 
 |  | 
 | .PHONY: devel-image | 
 | devel-push: BASE_IMAGE := $(BASE_DEVEL) | 
 | devel-push: DOCKER_TAG := $(PYTORCH_VERSION)-devel | 
 | devel-push: | 
 | 	$(DOCKER_PUSH) | 
 |  | 
 | .PHONY: runtime-image | 
 | runtime-image: BASE_IMAGE := $(BASE_RUNTIME) | 
 | runtime-image: DOCKER_TAG := $(PYTORCH_VERSION)-runtime | 
 | runtime-image: | 
 | 	$(DOCKER_BUILD) | 
 | 	docker tag $(DOCKER_FULL_NAME):$(DOCKER_TAG) $(DOCKER_FULL_NAME):latest | 
 |  | 
 | .PHONY: runtime-image | 
 | runtime-push: BASE_IMAGE := $(BASE_RUNTIME) | 
 | runtime-push: DOCKER_TAG := $(PYTORCH_VERSION)-runtime | 
 | runtime-push: | 
 | 	$(DOCKER_PUSH) | 
 |  | 
 | .PHONY: clean | 
 | clean: | 
 | 	-docker rmi -f $(shell docker images -q $(DOCKER_FULL_NAME)) |