From f67c062316aa6e1d67558a36c71cd6be06b685fa Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Date: Wed, 30 Sep 2020 17:54:13 -0400
Subject: [PATCH] Initial version of dockerfiles and CI for amdgpu and nvidia.

---
 .gitlab-ci.yml    | 59 +++++++++++++++++++++++++++++++++++++++++++++++
 amdgpu/Dockerfile | 23 ++++++++++++++++++
 nvidia/Dockerfile | 21 +++++++++++++++++
 3 files changed, 103 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 amdgpu/Dockerfile
 create mode 100644 nvidia/Dockerfile

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..06e104b
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,59 @@
+rev-git:
+extends: .build-docker
+only:
+  variables: [ $CI_COMMIT_REF_NAME == "develop" ]
+variables:
+  REV: "git"
+
+rev-latest:
+extends: .build-docker
+only:
+  variables: [ $CI_COMMIT_REF_NAME == "master" ]
+variables:
+  REV: "latest"
+
+rev-branch:
+extends: .build-docker
+only:
+  variables: [ $CI_COMMIT_REF_NAME =~ /[0-9]*.*/ ]
+variables:
+  REV: "${CI_COMMIT_REF_NAME}"
+
+.build-docker:
+image: docker:stable
+
+services:
+    - docker:stable-dind
+
+variables:
+    REPOSITORY: "aparapi/aparapi"
+    VERSION: "2.0.0"
+
+before_script:
+    - docker login -u "${DOCKER_USER}" -p "${DOCKER_TOKEN}"
+
+stages:
+    - opencl
+
+.opencl_template: &opencl_definition
+    stage: opencl
+    script:
+      - docker pull "${REPOSITORY}-nvidia:${REV}" || true
+      - docker build --network=host --pull -t "${REPOSITORY}-nvidia:${REV}"
+                     --cache-from "${REPOSITORY}-nvidia:${REV}"
+                     --build-arg "aparapi-ver=${VERSION}"
+                     "nvidia/"
+      - docker pull "${REPOSITORY}-amdgpu:${REV}" || true
+      - docker build --network=host --pull -t "${REPOSITORY}-amdgpu:${REV}"
+                     --cache-from "${REPOSITORY}-amdgpu:${REV}"
+                     --build-arg "aparapi-ver=${VERSION}"
+                     "amdgpu/"
+      - docker push "${REPOSITORY}-nvidia"
+      - docker push "${REPOSITORY}-amdgpu"
+    only
+      -master
+      -develop
+      -tags
+
+opencl:
+    <<: *opencl_definition
diff --git a/amdgpu/Dockerfile b/amdgpu/Dockerfile
new file mode 100644
index 0000000..42f55da
--- /dev/null
+++ b/amdgpu/Dockerfile
@@ -0,0 +1,23 @@
+ARG aparapi-ver
+
+FROM maven:3.6.3-openjdk-14
+
+LABEL maintainer "Jeffrey Phillips Freeman <the@jeffreyfreeman.me>"
+
+ENV AMDGPUDRIVERFILE="amdgpu-pro-17.40-492261.tar.xz"
+ENV AMDGPUDIRNAME="amdgpu-pro-17.40-492261"
+
+WORKDIR /tmp
+RUN dpkg --add-architecture i386 && \
+    apt-get update && apt-get -y dist-upgrade  && \
+    apt-get -y --no-install-recommends install ca-certificates curl xz-utils
+
+# only used to speedup build
+#COPY $AMDGPUDRIVERFILE /tmp/    
+RUN curl -O https://download.b2go.cloud/AMD-GPU-PRO/$AMDGPUDRIVERFILE && \
+    tar -xvf $AMDGPUDRIVERFILE && rm $AMDGPUDRIVERFILE && \
+    ./$AMDGPUDIRNAME/amdgpu-pro-install -y --compute && \
+    rm -rf $AMDGPUDIRNAME && \
+    apt-get -y remove ca-certificates curl xz-utils && \
+    apt-get -y autoremove && apt-get clean autoclean && \
+    rm -rf /var/lib/{apt,dpkg,cache,log}
diff --git a/nvidia/Dockerfile b/nvidia/Dockerfile
new file mode 100644
index 0000000..24af500
--- /dev/null
+++ b/nvidia/Dockerfile
@@ -0,0 +1,21 @@
+ARG aparapi-ver
+
+FROM maven:3.6.3-openjdk-14
+
+LABEL maintainer "Jeffrey Phillips Freeman <the@jeffreyfreeman.me>"
+
+RUN apt-get update && \
+        apt-get install -y --no-install-recommends \
+            ocl-icd-libopencl1 \
+            ocl-icd-opencl-dev \
+            clinfo && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN mkdir -p /etc/OpenCL/vendors && \
+    echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
+
+RUN mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get -DrepoUrl="https://repo1.maven.org/maven2/" -Dartifact=com.aparapi:aparapi:${aparapi-ver}
+
+# nvidia-container-runtime
+ENV NVIDIA_VISIBLE_DEVICES all
+ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
-- 
GitLab