lebeg closed pull request #10530: Jetson build with cmake and CUDA
URL: https://github.com/apache/incubator-mxnet/pull/10530
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ffa4d6549d6..70c636b5012 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,6 +44,7 @@ if(USE_CUDA AND NOT USE_OLDCMAKECUDA)
         (${CMAKE_GENERATOR} MATCHES "Visual Studio.*")
         OR (${CMAKE_GENERATOR} MATCHES "Xcode.*")
         OR (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
+        OR (${CMAKE_GENERATOR} MATCHES "Ninja")
       ) AND (
         (${CMAKE_VERSION} VERSION_GREATER "3.9.0") OR (${CMAKE_VERSION} 
VERSION_EQUAL "3.9.0")
       )
@@ -102,7 +103,7 @@ else(MSVC)
   else()
     set(SUPPORT_MSSE2 FALSE)
   endif()
-  set(CMAKE_C_FLAGS "-Wall -Wno-unknown-pragmas -fPIC -Wno-sign-compare")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unknown-pragmas -fPIC 
-Wno-sign-compare")
   if ("${CMAKE_CXX_COMPILER_ID}" MATCHES ".*Clang$")
     set(CMAKE_C_FLAGS "-Wno-braced-scalar-init")
   endif()
@@ -198,7 +199,9 @@ if(USE_CUDA)
     if(CUDA_TOOLSET STREQUAL "")
       set(CUDA_TOOLSET "${CUDA_VERSION_STRING}")
     endif()
+  if(NOT CMAKE_GENERATOR_TOOLSET AND CUDA_TOOLSET)
     set(CMAKE_GENERATOR_TOOLSET "cuda=${CUDA_TOOLSET},host=x64")
+  endif()
   else()
     set(FIRST_CUDA FALSE)
   endif()
@@ -325,7 +328,10 @@ if(USE_OPENMP)
   find_package(OpenMP REQUIRED)
   # This should build on Windows, but there's some problem and I don't have a 
Windows box, so
   # could a Windows user please fix?
-  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/openmp/CMakeLists.txt AND 
SYSTEM_ARCHITECTURE STREQUAL "x86_64" AND NOT MSVC)
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/openmp/CMakeLists.txt
+      AND SYSTEM_ARCHITECTURE STREQUAL "x86_64"
+      AND NOT MSVC
+      AND NOT CMAKE_CROSSCOMPILING)
     # Intel/llvm OpenMP: https://github.com/llvm-mirror/openmp
     set(OPENMP_STANDALONE_BUILD TRUE)
     set(LIBOMP_ENABLE_SHARED TRUE)
diff --git a/ci/docker/Dockerfile.build.jetson 
b/ci/docker/Dockerfile.build.jetson
index 9fa50f4097a..fdf32186217 100755
--- a/ci/docker/Dockerfile.build.jetson
+++ b/ci/docker/Dockerfile.build.jetson
@@ -32,14 +32,16 @@ ENV TARGET ARMV8
 WORKDIR /work
 
 # Build OpenBLAS
-ADD https://api.github.com/repos/xianyi/OpenBLAS/git/refs/tags/v0.2.20 
openblas_version.json
 RUN git clone --recursive -b v0.2.20 https://github.com/xianyi/OpenBLAS.git && 
\
     cd OpenBLAS && \
     make -j$(nproc) && \
     PREFIX=${CROSS_ROOT} make install
 
-# Setup CUDA build env (including configuring and copying nvcc)
-COPY --from=cudabuilder /usr/local/cuda /usr/local/cuda
+ENV OpenBLAS_HOME=${CROSS_ROOT}
+ENV OpenBLAS_DIR=${CROSS_ROOT}
+
+COPY --from=cudabuilder /usr/local/cuda-9.0 /usr/local/cuda-9.0
+
 ENV TARGET_ARCH aarch64
 ENV TARGET_OS linux
 
@@ -55,12 +57,21 @@ RUN 
JETPACK_DOWNLOAD_PREFIX=http://developer.download.nvidia.com/devzone/devcent
     apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub && \
     dpkg -i $ARM_CUDNN_INSTALLER_PACKAGE && \
     dpkg -i $ARM_CUDNN_DEV_INSTALLER_PACKAGE && \
-    apt update -y && apt install -y unzip cuda-libraries-dev-9-0 libcudnn7-dev
+    apt update -y
+
+RUN apt install -yf unzip cuda-libraries-dev-9-0 libcudnn7-dev
+
+RUN ln -s cuda-9.0 /usr/local/cuda
+
+ENV CUDA_PATH=/usr/local/cuda
+ENV CUDA_BIN_PATH=${CUDA_PATH}/bin
+ENV CUDA_LIB_PATH=${CUDA_PATH}/lib64
+
+ENV PATH ${PATH}:${CUDA_BIN_PATH}
+
+RUN ln -s ${CUDA_LIB_PATH}/stubs/libcuda.so ${CUDA_LIB_PATH}/libcuda.so
 
-ENV PATH $PATH:/usr/local/cuda/bin
 ENV NVCCFLAGS "-m64"
-ENV CUDA_ARCH "-gencode arch=compute_53,code=sm_53 -gencode 
arch=compute_62,code=sm_62"
-ENV NVCC /usr/local/cuda/bin/nvcc
 
 COPY runtime_functions.sh /work/
 WORKDIR /work/mxnet
diff --git a/ci/docker/runtime_functions.sh b/ci/docker/runtime_functions.sh
index 44de137b6a8..65367c13184 100755
--- a/ci/docker/runtime_functions.sh
+++ b/ci/docker/runtime_functions.sh
@@ -38,9 +38,30 @@ clean_repo() {
 build_jetson() {
     set -ex
     pushd .
-    mv make/crosscompile.jetson.mk make/config.mk
-    make -j$(nproc)
 
+    # Needed for FindCUDA.cmake module
+    export CUDA_TOOLKIT_ROOT=${CUDA_PATH}
+
+    cd /work/build
+    cmake \
+       -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \
+        -DCMAKE_CROSSCOMPILING=ON \
+        -DUSE_CUDA=ON \
+        -DUSE_CUDNN=ON \
+        -DUSE_OPENCV=OFF \
+        -DUSE_OPENMP=ON \
+        -DUSE_SSE=OFF \
+        -DCMAKE_C_FLAGS=-DMSHADOW_USE_SSE=0 \
+        -DUSE_MKL_IF_AVAILABLE=OFF \
+        -DUSE_LAPACK=OFF \
+        -DCMAKE_BUILD_TYPE=Release \
+        -DCUDA_TOOLKIT_ROOT_DIR=${CUDA_PATH} \
+        -DCUDA_TOOLKIT_TARGET_DIR=${CUDA_PATH}/targets/${CROSS_TRIPLE} \
+        -DCUDA_ARCH_LIST="5.3 6.2" \
+        -DCUDA_NVCC_FLAGS="${NVCCFLAGS}" \
+        -DCMAKE_CUDA_HOST_COMPILER=${CXX} \
+        -G Ninja /work/mxnet
+    ninja
     export MXNET_LIBRARY_PATH=`pwd`/libmxnet.so
     cd /work/mxnet/python
     python setup.py bdist_wheel --universal


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to