Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions docker/cuda/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
FROM nvidia/cuda:10.1-devel-ubuntu18.04 AS khiva-cuda-builder-base
RUN apt-get update && apt-get install -y --no-install-recommends \
software-properties-common \
build-essential \
cmake \
git \
libboost-all-dev \
libfftw3-dev \
libfreeimage-dev \
liblapack-dev \
liblapacke-dev \
libopenblas-dev \
openjdk-8-jdk \
python3-pip && \
pip3 install setuptools && \
pip3 install conan --upgrade && \
conan profile new --detect default && \
conan profile update settings.compiler.libcxx=libstdc++11 default && \
rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*

# AF_DISABLE_GRAPHICS - Environment variable to disable graphics at
# runtime due to lack of graphics support by docker - visit
# http://arrayfire.org/docs/configuring_environment.htm#af_disable_graphics
# for more information
# For build instructions: https://github.com/arrayfire/arrayfire/wiki/Build-Instructions-for-Linux
ENV CXX g++-7
ENV CC gcc-7
WORKDIR /root

COPY *.patch ./
FROM khiva-cuda-builder-base AS arrayfire-cuda-builder
ENV AF_DISABLE_GRAPHICS=1
RUN git clone -b v3.6.2 --depth 1 --recurse-submodules -j 8 https://github.com/arrayfire/arrayfire.git && \
cd arrayfire && \
mkdir build && cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/arrayfire \
-DCMAKE_BUILD_TYPE=Release \
-DAF_BUILD_CPU=ON \
-DAF_BUILD_CUDA=ON \
-DAF_BUILD_OPENCL=OFF \
-DCUDA_cublas_device_LIBRARY=/usr/local/cuda/lib64 \
-DAF_BUILD_UNIFIED=ON \
-DAF_WITH_GRAPHICS=OFF \
-DAF_WITH_NONFREE=OFF \
-DAF_BUILD_EXAMPLES=OFF \
-DBUILD_TESTING=OFF \
-DAF_BUILD_DOCS=OFF \
-DAF_WITH_LOGGING=OFF \
-DAF_WITH_STATIC_FREEIMAGE=OFF && \
cmake --build . --target install -- -j8

FROM khiva-cuda-builder-base AS khiva-cuda-builder
ARG KHIVA_BRANCH=v0.5.0
COPY --from=arrayfire-cuda-builder /opt/arrayfire /opt/arrayfire
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
RUN echo /opt/arrayfire/lib > /etc/ld.so.conf.d/arrayfire.conf && \
ldconfig && \
git clone -b ${KHIVA_BRANCH} --depth 1 --recurse-submodules -j 8 https://github.com/shapelets/khiva.git && \
cd khiva && \
mkdir build && \
cd build && \
conan install .. --build missing && \
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/khiva \
-DKHIVA_BUILD_TESTS=ON \
-DKHIVA_BUILD_BENCHMARKS=ON \
-DKHIVA_BUILD_EXAMPLES=OFF \
-DKHIVA_BUILD_DOCUMENTATION=OFF \
-DKHIVA_USE_CONAN=ON \
-DKHIVA_BUILD_C_BINDINGS=ON \
-DKHIVA_BUILD_JNI_BINDINGS=ON && \
cmake --build . --target install -- -j8

FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS arrayfire-cuda
COPY --from=arrayfire-cuda-builder /opt/arrayfire /opt/arrayfire
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libopenblas-base \
libfftw3-3 \
liblapacke && \
echo /opt/arrayfire/lib > /etc/ld.so.conf.d/arrayfire.conf && \
ldconfig && \
rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*

FROM arrayfire-cuda AS khiva-cuda
ENV LD_LIBRARY_PATH="/opt/khiva/lib:${LD_LIBRARY_PATH}"
COPY --from=khiva-cuda-builder /opt/khiva /opt/khiva
RUN echo /opt/khiva/lib > /etc/ld.so.conf.d/khiva.conf && \
ldconfig
12 changes: 12 additions & 0 deletions docker/cuda/docker-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! /usr/bin/env bash
docker build --target khiva-cuda-builder-base -t $PUSH_REGISTRY/shapelets/khiva-cuda-builder-base:0.5.0 .
docker build --target arrayfire-cuda-builder -t $PUSH_REGISTRY/shapelets/arrayfire-cuda-builder:3.6.2 .
docker build --target khiva-cuda-builder --build-arg KHIVA_BRANCH=v0.5.0 -t $PUSH_REGISTRY/shapelets/khiva-cuda-builder:0.5.0 .
docker run --gpus all --workdir /root/khiva/build $PUSH_REGISTRY/shapelets/khiva-cuda-builder:0.5.0 ctest --output-on-failure -j8
docker build --target arrayfire-cuda -t $PUSH_REGISTRY/shapelets/arrayfire-cuda:3.6.2 .
docker build --target khiva-cuda -t $PUSH_REGISTRY/shapelets/khiva-cuda:0.5.0 .
docker push $PUSH_REGISTRY/shapelets/khiva-cuda-builder-base:0.5.0
docker push $PUSH_REGISTRY/shapelets/arrayfire-cuda-builder:3.6.2
docker push $PUSH_REGISTRY/shapelets/khiva-cuda-builder:0.5.0
docker push $PUSH_REGISTRY/shapelets/arrayfire-cuda:3.6.2
docker push $PUSH_REGISTRY/shapelets/khiva-cuda:0.5.0
90 changes: 90 additions & 0 deletions docker/opencl/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
FROM intelopencl/intel-opencl:ubuntu-18.04-ppa AS khiva-opencl-builder-base
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
libboost-math-dev \
libfftw3-dev \
libfreeimage-dev \
liblapack-dev \
liblapacke-dev \
libopenblas-dev \
openjdk-8-jdk \
ocl-icd-opencl-dev \
python3-pip \
software-properties-common && \
pip3 install setuptools && \
pip3 install conan --upgrade && \
conan profile new --detect default && \
conan profile update settings.compiler.libcxx=libstdc++11 default && \
rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*

ENV CXX g++-7
ENV CC gcc-7
WORKDIR /root
COPY *.patch ./

# AF_DISABLE_GRAPHICS - Environment variable to disable graphics at
# runtime due to lack of graphics support by docker - visit
# http://arrayfire.org/docs/configuring_environment.htm#af_disable_graphics
# for more information
# For build instructions: https://github.com/arrayfire/arrayfire/wiki/Build-Instructions-for-Linux
FROM khiva-opencl-builder-base AS arrayfire-opencl-builder
ENV AF_DISABLE_GRAPHICS=1
RUN git clone -b v3.6.2 --depth 1 --recurse-submodules -j 8 https://github.com/arrayfire/arrayfire.git && \
cd arrayfire && \
mkdir build && cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/arrayfire \
-DCMAKE_BUILD_TYPE=Release \
-DAF_BUILD_CPU=ON \
-DAF_BUILD_CUDA=OFF \
-DAF_BUILD_OPENCL=ON \
-DAF_BUILD_UNIFIED=ON \
-DAF_WITH_GRAPHICS=OFF \
-DAF_WITH_NONFREE=OFF \
-DAF_BUILD_EXAMPLES=OFF \
-DBUILD_TESTING=OFF \
-DAF_BUILD_DOCS=OFF \
-DAF_WITH_LOGGING=OFF \
-DAF_WITH_STATIC_FREEIMAGE=OFF && \
cmake --build . --target install -- -j8

FROM khiva-opencl-builder-base AS khiva-builder
ARG KHIVA_BRANCH=v0.5.0
WORKDIR /root
COPY --from=arrayfire-opencl-builder /opt/arrayfire /opt/arrayfire
RUN echo /opt/arrayfire/lib > /etc/ld.so.conf.d/arrayfire.conf && \
ldconfig && \
git clone -b ${KHIVA_BRANCH} --depth 1 --recurse-submodules -j 8 https://github.com/shapelets/khiva.git && \
cd khiva && \
mkdir build && \
cd build && \
conan install .. --build missing && \
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/khiva \
-DKHIVA_BUILD_TESTS=ON \
-DKHIVA_BUILD_BENCHMARKS=ON \
-DKHIVA_BUILD_EXAMPLES=OFF \
-DKHIVA_BUILD_DOCUMENTATION=OFF \
-DKHIVA_USE_CONAN=ON \
-DKHIVA_BUILD_C_BINDINGS=ON \
-DKHIVA_BUILD_JNI_BINDINGS=ON && \
cmake --build . --target install -- -j8

FROM intelopencl/intel-opencl:ubuntu-18.04-ppa AS arrayfire-intel-opencl
COPY --from=arrayfire-opencl-builder /opt/arrayfire /opt/arrayfire
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libopenblas-base \
libfftw3-3 \
liblapacke && \
echo /opt/arrayfire/lib > /etc/ld.so.conf.d/arrayfire.conf && \
ldconfig && \
rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*

FROM arrayfire-intel-opencl as khiva-intel-opencl
ENV LD_LIBRARY_PATH="/opt/khiva/lib:${LD_LIBRARY_PATH}"
COPY --from=khiva-builder /opt/khiva /opt/khiva
RUN echo /opt/khiva/lib > /etc/ld.so.conf.d/khiva.conf && \
ldconfig
11 changes: 11 additions & 0 deletions docker/opencl/docker-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#! /usr/bin/env bash
docker build --target khiva-opencl-builder-base -t $PUSH_REGISTRY/shapelets/khiva-opencl-builder-base:0.5.0 .
docker build --target arrayfire-opencl-builder -t $PUSH_REGISTRY/shapelets/arrayfire-opencl-builder:3.6.2 .
docker build --target khiva-builder --build-arg KHIVA_BRANCH=v0.5.0 -t $PUSH_REGISTRY/shapelets/khiva-builder:0.5.0 .
docker build --target arrayfire-intel-opencl -t $PUSH_REGISTRY/shapelets/arrayfire-intel-opencl:3.6.2 .
docker build --target khiva-intel-opencl -t $PUSH_REGISTRY/shapelets/khiva:0.5.0-opencl .
docker push $PUSH_REGISTRY/shapelets/khiva-opencl-builder-base:0.5.0
docker push $PUSH_REGISTRY/shapelets/arrayfire-opencl-builder:3.6.2
docker push $PUSH_REGISTRY/shapelets/khiva-builder:0.5.0
docker push $PUSH_REGISTRY/shapelets/arrayfire-intel-opencl:3.6.2
docker push $PUSH_REGISTRY/shapelets/khiva:0.5.0-opencl