1*da0073e9SAndroid Build Coastguard WorkerDOCKER_REGISTRY ?= docker.io 2*da0073e9SAndroid Build Coastguard WorkerDOCKER_ORG ?= $(shell docker info 2>/dev/null | sed '/Username:/!d;s/.* //') 3*da0073e9SAndroid Build Coastguard WorkerDOCKER_IMAGE ?= pytorch 4*da0073e9SAndroid Build Coastguard WorkerDOCKER_FULL_NAME = $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(DOCKER_IMAGE) 5*da0073e9SAndroid Build Coastguard Worker 6*da0073e9SAndroid Build Coastguard Workerifeq ("$(DOCKER_ORG)","") 7*da0073e9SAndroid Build Coastguard Worker$(warning WARNING: No docker user found using results from whoami) 8*da0073e9SAndroid Build Coastguard WorkerDOCKER_ORG = $(shell whoami) 9*da0073e9SAndroid Build Coastguard Workerendif 10*da0073e9SAndroid Build Coastguard Worker 11*da0073e9SAndroid Build Coastguard WorkerCUDA_VERSION_SHORT ?= 12.1 12*da0073e9SAndroid Build Coastguard WorkerCUDA_VERSION ?= 12.1.1 13*da0073e9SAndroid Build Coastguard WorkerCUDNN_VERSION ?= 9 14*da0073e9SAndroid Build Coastguard WorkerBASE_RUNTIME = ubuntu:22.04 15*da0073e9SAndroid Build Coastguard WorkerBASE_DEVEL = nvidia/cuda:$(CUDA_VERSION)-devel-ubuntu22.04 16*da0073e9SAndroid Build Coastguard WorkerCMAKE_VARS ?= 17*da0073e9SAndroid Build Coastguard Worker 18*da0073e9SAndroid Build Coastguard Worker# The conda channel to use to install cudatoolkit 19*da0073e9SAndroid Build Coastguard WorkerCUDA_CHANNEL = nvidia 20*da0073e9SAndroid Build Coastguard Worker# The conda channel to use to install pytorch / torchvision 21*da0073e9SAndroid Build Coastguard WorkerINSTALL_CHANNEL ?= whl 22*da0073e9SAndroid Build Coastguard Worker 23*da0073e9SAndroid Build Coastguard WorkerCUDA_PATH ?= cpu 24*da0073e9SAndroid Build Coastguard Workerifneq ("$(CUDA_VERSION_SHORT)","cpu") 25*da0073e9SAndroid Build Coastguard WorkerCUDA_PATH = cu$(subst .,,$(CUDA_VERSION_SHORT)) 26*da0073e9SAndroid Build Coastguard Workerendif 27*da0073e9SAndroid Build Coastguard Worker 28*da0073e9SAndroid Build Coastguard WorkerPYTHON_VERSION ?= 3.11 29*da0073e9SAndroid Build Coastguard Worker# Match versions that start with v followed by a number, to avoid matching with tags like ciflow 30*da0073e9SAndroid Build Coastguard WorkerPYTORCH_VERSION ?= $(shell git describe --tags --always --match "v[1-9]*.*") 31*da0073e9SAndroid Build Coastguard Worker# Can be either official / dev 32*da0073e9SAndroid Build Coastguard WorkerBUILD_TYPE ?= dev 33*da0073e9SAndroid Build Coastguard WorkerBUILD_PROGRESS ?= auto 34*da0073e9SAndroid Build Coastguard Worker# Intentionally left blank 35*da0073e9SAndroid Build Coastguard WorkerTRITON_VERSION ?= 36*da0073e9SAndroid Build Coastguard WorkerBUILD_ARGS = --build-arg BASE_IMAGE=$(BASE_IMAGE) \ 37*da0073e9SAndroid Build Coastguard Worker --build-arg PYTHON_VERSION=$(PYTHON_VERSION) \ 38*da0073e9SAndroid Build Coastguard Worker --build-arg CUDA_VERSION=$(CUDA_VERSION) \ 39*da0073e9SAndroid Build Coastguard Worker --build-arg CUDA_PATH=$(CUDA_PATH) \ 40*da0073e9SAndroid Build Coastguard Worker --build-arg PYTORCH_VERSION=$(PYTORCH_VERSION) \ 41*da0073e9SAndroid Build Coastguard Worker --build-arg INSTALL_CHANNEL=$(INSTALL_CHANNEL) \ 42*da0073e9SAndroid Build Coastguard Worker --build-arg TRITON_VERSION=$(TRITON_VERSION) \ 43*da0073e9SAndroid Build Coastguard Worker --build-arg CMAKE_VARS="$(CMAKE_VARS)" 44*da0073e9SAndroid Build Coastguard WorkerEXTRA_DOCKER_BUILD_FLAGS ?= 45*da0073e9SAndroid Build Coastguard Worker 46*da0073e9SAndroid Build Coastguard WorkerBUILD ?= build 47*da0073e9SAndroid Build Coastguard Worker# Intentionally left blank 48*da0073e9SAndroid Build Coastguard WorkerPLATFORMS_FLAG ?= 49*da0073e9SAndroid Build Coastguard WorkerPUSH_FLAG ?= 50*da0073e9SAndroid Build Coastguard WorkerUSE_BUILDX ?= 51*da0073e9SAndroid Build Coastguard WorkerBUILD_PLATFORMS ?= 52*da0073e9SAndroid Build Coastguard WorkerWITH_PUSH ?= false 53*da0073e9SAndroid Build Coastguard Worker# Setup buildx flags 54*da0073e9SAndroid Build Coastguard Workerifneq ("$(USE_BUILDX)","") 55*da0073e9SAndroid Build Coastguard WorkerBUILD = buildx build 56*da0073e9SAndroid Build Coastguard Workerifneq ("$(BUILD_PLATFORMS)","") 57*da0073e9SAndroid Build Coastguard WorkerPLATFORMS_FLAG = --platform="$(BUILD_PLATFORMS)" 58*da0073e9SAndroid Build Coastguard Workerendif 59*da0073e9SAndroid Build Coastguard Worker# Only set platforms flags if using buildx 60*da0073e9SAndroid Build Coastguard Workerifeq ("$(WITH_PUSH)","true") 61*da0073e9SAndroid Build Coastguard WorkerPUSH_FLAG = --push 62*da0073e9SAndroid Build Coastguard Workerendif 63*da0073e9SAndroid Build Coastguard Workerendif 64*da0073e9SAndroid Build Coastguard Worker 65*da0073e9SAndroid Build Coastguard WorkerDOCKER_BUILD = docker $(BUILD) \ 66*da0073e9SAndroid Build Coastguard Worker --progress=$(BUILD_PROGRESS) \ 67*da0073e9SAndroid Build Coastguard Worker $(EXTRA_DOCKER_BUILD_FLAGS) \ 68*da0073e9SAndroid Build Coastguard Worker $(PLATFORMS_FLAG) \ 69*da0073e9SAndroid Build Coastguard Worker $(PUSH_FLAG) \ 70*da0073e9SAndroid Build Coastguard Worker --target $(BUILD_TYPE) \ 71*da0073e9SAndroid Build Coastguard Worker -t $(DOCKER_FULL_NAME):$(DOCKER_TAG) \ 72*da0073e9SAndroid Build Coastguard Worker $(BUILD_ARGS) . 73*da0073e9SAndroid Build Coastguard WorkerDOCKER_PUSH = docker push $(DOCKER_FULL_NAME):$(DOCKER_TAG) 74*da0073e9SAndroid Build Coastguard Worker 75*da0073e9SAndroid Build Coastguard Worker.PHONY: all 76*da0073e9SAndroid Build Coastguard Workerall: devel-image 77*da0073e9SAndroid Build Coastguard Worker 78*da0073e9SAndroid Build Coastguard Worker.PHONY: devel-image 79*da0073e9SAndroid Build Coastguard Workerdevel-image: BASE_IMAGE := $(BASE_DEVEL) 80*da0073e9SAndroid Build Coastguard Workerdevel-image: DOCKER_TAG := $(PYTORCH_VERSION)-cuda$(CUDA_VERSION_SHORT)-cudnn$(CUDNN_VERSION)-devel 81*da0073e9SAndroid Build Coastguard Workerdevel-image: 82*da0073e9SAndroid Build Coastguard Worker $(DOCKER_BUILD) 83*da0073e9SAndroid Build Coastguard Worker 84*da0073e9SAndroid Build Coastguard Worker.PHONY: devel-push 85*da0073e9SAndroid Build Coastguard Workerdevel-push: BASE_IMAGE := $(BASE_DEVEL) 86*da0073e9SAndroid Build Coastguard Workerdevel-push: DOCKER_TAG := $(PYTORCH_VERSION)-cuda$(CUDA_VERSION_SHORT)-cudnn$(CUDNN_VERSION)-devel 87*da0073e9SAndroid Build Coastguard Workerdevel-push: 88*da0073e9SAndroid Build Coastguard Worker $(DOCKER_PUSH) 89*da0073e9SAndroid Build Coastguard Worker 90*da0073e9SAndroid Build Coastguard Workerifeq ("$(CUDA_VERSION_SHORT)","cpu") 91*da0073e9SAndroid Build Coastguard Worker 92*da0073e9SAndroid Build Coastguard Worker.PHONY: runtime-image 93*da0073e9SAndroid Build Coastguard Workerruntime-image: BASE_IMAGE := $(BASE_RUNTIME) 94*da0073e9SAndroid Build Coastguard Workerruntime-image: DOCKER_TAG := $(PYTORCH_VERSION)-runtime 95*da0073e9SAndroid Build Coastguard Workerruntime-image: 96*da0073e9SAndroid Build Coastguard Worker $(DOCKER_BUILD) 97*da0073e9SAndroid Build Coastguard Worker 98*da0073e9SAndroid Build Coastguard Worker.PHONY: runtime-push 99*da0073e9SAndroid Build Coastguard Workerruntime-push: BASE_IMAGE := $(BASE_RUNTIME) 100*da0073e9SAndroid Build Coastguard Workerruntime-push: DOCKER_TAG := $(PYTORCH_VERSION)-runtime 101*da0073e9SAndroid Build Coastguard Workerruntime-push: 102*da0073e9SAndroid Build Coastguard Worker $(DOCKER_PUSH) 103*da0073e9SAndroid Build Coastguard Worker 104*da0073e9SAndroid Build Coastguard Workerelse 105*da0073e9SAndroid Build Coastguard Worker 106*da0073e9SAndroid Build Coastguard Worker.PHONY: runtime-image 107*da0073e9SAndroid Build Coastguard Workerruntime-image: BASE_IMAGE := $(BASE_RUNTIME) 108*da0073e9SAndroid Build Coastguard Workerruntime-image: DOCKER_TAG := $(PYTORCH_VERSION)-cuda$(CUDA_VERSION_SHORT)-cudnn$(CUDNN_VERSION)-runtime 109*da0073e9SAndroid Build Coastguard Workerruntime-image: 110*da0073e9SAndroid Build Coastguard Worker $(DOCKER_BUILD) 111*da0073e9SAndroid Build Coastguard Worker 112*da0073e9SAndroid Build Coastguard Worker.PHONY: runtime-push 113*da0073e9SAndroid Build Coastguard Workerruntime-push: BASE_IMAGE := $(BASE_RUNTIME) 114*da0073e9SAndroid Build Coastguard Workerruntime-push: DOCKER_TAG := $(PYTORCH_VERSION)-cuda$(CUDA_VERSION_SHORT)-cudnn$(CUDNN_VERSION)-runtime 115*da0073e9SAndroid Build Coastguard Workerruntime-push: 116*da0073e9SAndroid Build Coastguard Worker $(DOCKER_PUSH) 117*da0073e9SAndroid Build Coastguard Worker 118*da0073e9SAndroid Build Coastguard Workerendif 119*da0073e9SAndroid Build Coastguard Worker 120*da0073e9SAndroid Build Coastguard Worker.PHONY: clean 121*da0073e9SAndroid Build Coastguard Workerclean: 122*da0073e9SAndroid Build Coastguard Worker -docker rmi -f $(shell docker images -q $(DOCKER_FULL_NAME)) 123