forked from BVLC/caffe
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
50 lines (34 loc) · 1.3 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# A makefile to build the docker images for caffe.
# Two caffe images will be built:
# caffe:cpu --> A CPU-only build of caffe.
# caffe:gpu --> A GPU-enabled build using the latest CUDA and CUDNN versions.
DOCKER ?= docker
all: docker_files standalone
.PHONY: standalone devel
standalone: cpu_standalone gpu_standalone
cpu_standalone: standalone/cpu/Dockerfile
$(DOCKER) build -t caffe:cpu standalone/cpu
gpu_standalone: standalone/gpu/Dockerfile
$(DOCKER) build -t caffe:gpu standalone/gpu
docker_files: standalone_files
standalone_files: standalone/cpu/Dockerfile standalone/gpu/Dockerfile
FROM_GPU = "nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04"
FROM_CPU = "ubuntu:14.04"
GPU_CMAKE_ARGS = -DUSE_CUDNN=1
CPU_CMAKE_ARGS = -DCPU_ONLY=1
# A make macro to select the CPU or GPU base image.
define from_image
$(if $(strip $(findstring gpu,$@)),$(FROM_GPU),$(FROM_CPU))
endef
# A make macro to select the CPU or GPU build args.
define build_args
$(if $(strip $(findstring gpu,$@)),$(GPU_CMAKE_ARGS),$(CPU_CMAKE_ARGS))
endef
# A make macro to construct the CPU or GPU Dockerfile from the template
define create_docker_file
@echo creating $@
@echo "FROM "$(from_image) > $@
@cat $^ | sed 's/$${CMAKE_ARGS}/$(build_args)/' >> $@
endef
standalone/%/Dockerfile: templates/Dockerfile.template
$(create_docker_file)