From fda8d70715c76a723814c1bbdbc57a1eeeec8d38 Mon Sep 17 00:00:00 2001 From: Ryan Julian Date: Mon, 27 May 2019 18:07:59 -0700 Subject: [PATCH] Add Intel-optimized pip package and Dockerfile (#692) Closes #221 --- Makefile | 24 +++++++++++++++++ docker/Dockerfile.intel | 8 ++++++ docker/Dockerfile.nvidia | 2 +- docker/docker-compose-intel.yml | 27 +++++++++++++++++++ ...ypoint-nvidia.sh => entrypoint-runtime.sh} | 0 setup.py | 3 +++ 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile.intel create mode 100644 docker/docker-compose-intel.yml rename docker/{entrypoint-nvidia.sh => entrypoint-runtime.sh} (100%) diff --git a/Makefile b/Makefile index 66b971f473..1b95fa4c68 100644 --- a/Makefile +++ b/Makefile @@ -67,6 +67,14 @@ build-nvidia: docker/docker-compose-nvidia.yml build \ ${ADD_ARGS} +build-intel: TAG ?= rlworkgroup/garage-intel:latest +build-intel: docker/docker-compose-intel.yml + TAG=${TAG} \ + docker-compose \ + -f docker/docker-compose-intel.yml \ + build \ + ${ADD_ARGS} + run-ci: ## Run the CI Docker container (only used in TravisCI) run-ci: TAG ?= rlworkgroup/garage-ci run-ci: @@ -108,6 +116,22 @@ run-nvidia: build-nvidia ${ADD_ARGS} \ rlworkgroup/garage-nvidia $(RUN_CMD) +run-intel: ## Run the Docker container for machines with Intel CPUs +run-intel: CONTAINER_NAME ?= garage-intel +run-intel: build-intel + xhost +local:docker + docker run \ + -it \ + --rm \ + -v /tmp/.X11-unix:/tmp/.X11-unix \ + -v $(DATA_PATH)/$(CONTAINER_NAME):/root/code/garage/data \ + -e DISPLAY=$(DISPLAY) \ + -e QT_X11_NO_MITSHM=1 \ + -e MJKEY="$$(cat $(MJKEY_PATH))" \ + --name $(CONTAINER_NAME) \ + ${ADD_ARGS} \ + rlworkgroup/garage-intel $(RUN_CMD) + # Help target # See https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html diff --git a/docker/Dockerfile.intel b/docker/Dockerfile.intel new file mode 100644 index 0000000000..5324012451 --- /dev/null +++ b/docker/Dockerfile.intel @@ -0,0 +1,8 @@ +ARG PARENT_IMAGE=rlworkgroup/garage-base +FROM $PARENT_IMAGE + +WORKDIR /root/code/garage +RUN ["/bin/bash", "-c", "source activate garage && pip install -e .[intel]"] + +# Ready, set, go. +ENTRYPOINT ["docker/entrypoint-runtime.sh"] diff --git a/docker/Dockerfile.nvidia b/docker/Dockerfile.nvidia index a90cceb127..582c1aab2f 100644 --- a/docker/Dockerfile.nvidia +++ b/docker/Dockerfile.nvidia @@ -2,4 +2,4 @@ ARG PARENT_IMAGE=rlworkgroup/garage-base FROM $PARENT_IMAGE # Ready, set, go. -ENTRYPOINT ["docker/entrypoint-nvidia.sh"] +ENTRYPOINT ["docker/entrypoint-runtime.sh"] diff --git a/docker/docker-compose-intel.yml b/docker/docker-compose-intel.yml new file mode 100644 index 0000000000..82908cc542 --- /dev/null +++ b/docker/docker-compose-intel.yml @@ -0,0 +1,27 @@ +version: '2.2' +services: + garage-base: + build: + cache_from: + - rlworkgroup/garage-intel:latest + context: ../ + dockerfile: docker/Dockerfile.base + image: rlworkgroup/garage-base + garage-intel-no-files: + build: + cache_from: + - rlworkgroup/garage-intel:latest + context: ../ + dockerfile: docker/Dockerfile.intel + args: + - PARENT_IMAGE=rlworkgroup/garage-base + image: rlworkgroup/garage-intel-no-files + garage-intel: + build: + cache_from: + - rlworkgroup/garage-intel:latest + context: ../ + dockerfile: docker/Dockerfile.runtime + args: + - PARENT_IMAGE=rlworkgroup/garage-intel-no-files + image: ${TAG} diff --git a/docker/entrypoint-nvidia.sh b/docker/entrypoint-runtime.sh similarity index 100% rename from docker/entrypoint-nvidia.sh rename to docker/entrypoint-runtime.sh diff --git a/setup.py b/setup.py index 9c526a0ad1..89b99caee9 100644 --- a/setup.py +++ b/setup.py @@ -34,6 +34,9 @@ extras = {} extras['all'] = list(set(sum(extras.values(), []))) +# Intel dependencies not included in all +extras['intel'] = ['intel-tensorflow<1.13,>=1.12.0'] + # Development dependencies (*not* included in "all") extras['dev'] = [ # Please keep alphabetized