From e46614f5b9bcd2cda87349e684849862af2c65fb Mon Sep 17 00:00:00 2001
From: Moritz Maxeiner <mm@ucw.sh>
Date: Thu, 5 Mar 2020 00:12:02 +0100
Subject: [PATCH] centos-7,windows-1809: Update MXNet to 1.6.0

---
 centos-7/Dockerfile                               | 14 ++++++++------
 .../mxnet-1.6.0-manual-cuda-arch-flags.patch      | 15 +++++++++++++++
 windows-1809/base/Dockerfile                      |  2 +-
 3 files changed, 24 insertions(+), 7 deletions(-)
 create mode 100644 centos-7/patches/mxnet-1.6.0-manual-cuda-arch-flags.patch

diff --git a/centos-7/Dockerfile b/centos-7/Dockerfile
index 7cd2a12..a5cb12a 100644
--- a/centos-7/Dockerfile
+++ b/centos-7/Dockerfile
@@ -10,6 +10,7 @@ RUN yum install -y centos-release-scl && \
     yum install -y epel-release && \
     yum install -y devtoolset-8 && \
     yum install -y rh-git218-git && \
+    yum install -y patch && \
     yum clean all
 ADD bash/toolchain.sh /etc/profile.d/toolchain.sh
 ADD bash/ld-library-path.sh /etc/profile.d/ld-library-path.sh
@@ -207,8 +208,9 @@ RUN version=4.2.0 && \
     rm -rf opencv-${version}* opencv_contrib-${version}*
 
 # MXNet
-ENV MXNet_DIR /opt/mxnet-1.5.1
-RUN version=1.5.1 && \
+ENV MXNet_DIR /opt/mxnet-1.6.0
+ADD patches/mxnet-1.6.0-manual-cuda-arch-flags.patch /opt/mxnet-1.6.0-manual-cuda-arch-flags.patch
+RUN version=1.6.0 && \
     source /etc/profile && \
     cd /opt && \
     curl -sSLO https://github.com/apache/incubator-mxnet/releases/download/${version}/apache-mxnet-src-${version}-incubating.tar.gz && \
@@ -216,16 +218,15 @@ RUN version=1.5.1 && \
     rm -f apache-mxnet-src-${version}-incubating.tar.gz && \
     mv apache-mxnet-src-${version}-incubating mxnet-${version} && \
     cd mxnet-${version} && \
+    patch -p1 -i /opt/mxnet-1.6.0-manual-cuda-arch-flags.patch && \
     cmake  -S. -B build -G Ninja \
         -D CMAKE_CXX_STANDARD=14 -D USE_CXX14_IF_AVAILABLE=ON \
         -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local \
+        -D CMAKE_CUDA_COMPILER=/usr/local/cuda-10.1/bin/nvcc \
         -D USE_CUDA=ON -D USE_CUDNN=ON -D USE_NCCL=OFF \
-        -D CUDA_ARCH_NAME=Manual \
-        -D CUDA_ARCH_BIN="61" \
-        -D CUDA_ARCH_PTX="30 52 75" \
+        -D CUDA_ARCH_FLAGS="-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_30,code=compute_30;-gencode;arch=compute_52,code=compute_52;-gencode;arch=compute_75,code=compute_75" \
         -D USE_OPENCV=ON -D USE_OPENMP=ON \
         -D USE_LAPACK=ON -D USE_MKL_IF_AVAILABLE=OFF \
-        -D USE_PROFILER=ON \
         -D USE_DIST_KVSTORE=OFF \
         -D USE_CPP_PACKAGE=ON \
         -D USE_SIGNAL_HANDLER=ON \
@@ -234,6 +235,7 @@ RUN version=1.5.1 && \
         -D USE_GPERFTOOLS=OFF \
         -D USE_JEMALLOC=OFF \
         && \
+    rm /opt/mxnet-1.6.0-manual-cuda-arch-flags.patch && \
     ninja -C build
 
 # pybind11
diff --git a/centos-7/patches/mxnet-1.6.0-manual-cuda-arch-flags.patch b/centos-7/patches/mxnet-1.6.0-manual-cuda-arch-flags.patch
new file mode 100644
index 0000000..3ffb46e
--- /dev/null
+++ b/centos-7/patches/mxnet-1.6.0-manual-cuda-arch-flags.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 12bc195d5..e297262b7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -593,7 +593,9 @@ if(USE_CUDA)
+   # CUDA_SELECT_NVCC_ARCH_FLAGS is not deprecated, though part of deprecated
+   # FindCUDA https://gitlab.kitware.com/cmake/cmake/issues/19199
+   include(${CMAKE_ROOT}/Modules/FindCUDA/select_compute_arch.cmake)
+-  CUDA_SELECT_NVCC_ARCH_FLAGS(CUDA_ARCH_FLAGS ${MXNET_CUDA_ARCH})
++  if(NOT CUDA_ARCH_FLAGS)
++    CUDA_SELECT_NVCC_ARCH_FLAGS(CUDA_ARCH_FLAGS ${MXNET_CUDA_ARCH})
++  endif()
+   message("-- CUDA: Using the following NVCC architecture flags ${CUDA_ARCH_FLAGS}")
+   set(arch_code_list)
+   foreach(arch_str ${CUDA_ARCH_FLAGS})
diff --git a/windows-1809/base/Dockerfile b/windows-1809/base/Dockerfile
index 6bdbc3e..ebccaf6 100644
--- a/windows-1809/base/Dockerfile
+++ b/windows-1809/base/Dockerfile
@@ -47,6 +47,6 @@ RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tl
 RUN $vcpkg_dir = 'C:/vcpkg'; \
     git clone https://git.imp.fu-berlin.de/bioroboticslab/robofish/vcpkg.git $vcpkg_dir; \
     cd $vcpkg_dir; \
-    git checkout 7d322e995f49d3989fa982268c2d4586c4f8d1f1; \
+    git checkout cf0d3656f27287943a5c65f1158314845ae96ad4; \
     ./scripts/bootstrap.ps1; \
     [Environment]::SetEnvironmentVariable('VCPKG_DIR', "\"$vcpkg_dir\"", [EnvironmentVariableTarget]::Machine);
-- 
GitLab