This is an automated email from the ASF dual-hosted git repository. apeforest pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git
The following commit(s) were added to refs/heads/master by this push: new 0f29cca Fix OS X staticbuild, update docs and add tests (#17602) 0f29cca is described below commit 0f29ccaf5c34a01bffe5ad3036d4cf8bb00c551e Author: Leonard Lausen <lau...@amazon.com> AuthorDate: Sun Feb 16 18:26:02 2020 +0000 Fix OS X staticbuild, update docs and add tests (#17602) * Fix OS X staticbuild and add tests * Update OS X build from source documentation --- .github/workflows/os_x_staticbuild.yml | 18 ++ cmake/Modules/FindAccelerate.cmake | 1 + config/{config.cmake => darwin.cmake} | 43 ++-- .../distribution/darwin_cpu.cmake | 34 ++-- config/{config.cmake => linux.cmake} | 8 +- config/{config.cmake => linux_gpu.cmake} | 4 +- .../static_site/src/pages/get_started/osx_setup.md | 222 ++++++++++----------- .../src/pages/get_started/ubuntu_setup.md | 20 +- tools/dependencies/libtiff.sh | 2 +- tools/staticbuild/build_lib_cmake.sh | 10 +- 10 files changed, 183 insertions(+), 179 deletions(-) diff --git a/.github/workflows/os_x_staticbuild.yml b/.github/workflows/os_x_staticbuild.yml new file mode 100644 index 0000000..eabe88f --- /dev/null +++ b/.github/workflows/os_x_staticbuild.yml @@ -0,0 +1,18 @@ +name: continuous build + +on: [push, pull_request] + +jobs: + macosx-x86_64: + runs-on: macos-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Install Dependencies + run: | + brew install nasm automake ninja libtool + - name: Build project + run: | + git --version + clang --version + CMAKE_STATICBUILD=1 ./tools/staticbuild/build.sh cpu diff --git a/cmake/Modules/FindAccelerate.cmake b/cmake/Modules/FindAccelerate.cmake index 8bdc665..e9bafb0 100644 --- a/cmake/Modules/FindAccelerate.cmake +++ b/cmake/Modules/FindAccelerate.cmake @@ -24,6 +24,7 @@ file(TO_CMAKE_PATH "$ENV{Accelerate_HOME}" Accelerate_HOME) set(Accelerate_INCLUDE_SEARCH_PATHS + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/Current /System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Versions/Current ${Accelerate_HOME} ) diff --git a/config/config.cmake b/config/darwin.cmake similarity index 94% copy from config/config.cmake copy to config/darwin.cmake index 101e43f..11c9aa4 100644 --- a/config/config.cmake +++ b/config/darwin.cmake @@ -22,7 +22,7 @@ # Assume you are on the root directory of mxnet. First copy this file so that # any local changes will be ignored by git # -# $ cp config/config.cmake config.cmake +# $ cp config/darwin.cmake config.cmake # # Next modify the according entries, and then compile by # @@ -36,30 +36,14 @@ #------------------------------------------------------------------------------- #--------------------------------------------- -# GPU support -#--------------------------------------------- -set(USE_CUDA ON CACHE BOOL "Build with CUDA support") -set(USE_CUDNN ON CACHE BOOL "Build with cudnn support, if found") - -# Target NVIDIA GPU achitecture. -# Valid options are "Auto" for autodetection, "All" for all available -# architectures or a list of architectures by compute capability number, such as -# "7.0" or "7.0;7.5" as well as name, such as "Volta" or "Volta;Turing". -# The value specified here is passed to cmake's CUDA_SELECT_NVCC_ARCH_FLAGS to -# obtain the compilation flags for nvcc. -# -# When compiling on a machine without GPU, autodetection will fail and you -# should instead specify the target architecture manually to avoid excessive -# compilation times. -set(MXNET_CUDA_ARCH "Auto" CACHE STRING "Target NVIDIA GPU achitecture") - -#--------------------------------------------- # Common libraries #--------------------------------------------- +set(BLAS "apple" CACHE STRING "BLAS Vendor") + set(USE_OPENCV ON CACHE BOOL "Build with OpenCV support") set(OPENCV_ROOT "" CACHE BOOL "OpenCV install path. Supports autodetection.") -set(USE_OPENMP ON CACHE BOOL "Build with Openmp support") +set(USE_OPENMP OFF CACHE BOOL "Build with Openmp support") set(USE_MKL_IF_AVAILABLE ON CACHE BOOL "Use Intel MKL if found") set(USE_MKLDNN ON CACHE BOOL "Build with MKL-DNN support") @@ -110,6 +94,25 @@ set(USE_JEMALLOC OFF CACHE BOOL "Build with Jemalloc support") SET(EXTRA_OPERATORS "" CACHE PATH "EXTRA OPERATORS PATH") +#--------------------------------------------- +# GPU support +#--------------------------------------------- +set(USE_CUDA OFF CACHE BOOL "Build with CUDA support") +set(USE_CUDNN OFF CACHE BOOL "Build with cudnn support, if found") + +# Target NVIDIA GPU achitecture. +# Valid options are "Auto" for autodetection, "All" for all available +# architectures or a list of architectures by compute capability number, such as +# "7.0" or "7.0;7.5" as well as name, such as "Volta" or "Volta;Turing". +# The value specified here is passed to cmake's CUDA_SELECT_NVCC_ARCH_FLAGS to +# obtain the compilation flags for nvcc. +# +# When compiling on a machine without GPU, autodetection will fail and you +# should instead specify the target architecture manually to avoid excessive +# compilation times. +set(MXNET_CUDA_ARCH "Auto" CACHE STRING "Target NVIDIA GPU achitecture") + + #---------------------------- # other features #---------------------------- diff --git a/tools/dependencies/libtiff.sh b/config/distribution/darwin_cpu.cmake old mode 100755 new mode 100644 similarity index 50% copy from tools/dependencies/libtiff.sh copy to config/distribution/darwin_cpu.cmake index f57099b..792c19c --- a/tools/dependencies/libtiff.sh +++ b/config/distribution/darwin_cpu.cmake @@ -1,5 +1,3 @@ -#!/usr/bin/env bash - # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -17,20 +15,18 @@ # specific language governing permissions and limitations # under the License. -# This script builds the static library of libtiff that can be used as dependency of mxnet/opencv. -set -ex -TIFF_VERSION="4.0.10" -if [[ ! -f $DEPS_PATH/lib/libtiff.a ]]; then - # download and build libtiff - >&2 echo "Building libtiff..." - download \ - https://download.osgeo.org/libtiff/tiff-${TIFF_VERSION}.zip \ - ${DEPS_PATH}/libtiff.zip - unzip -q $DEPS_PATH/libtiff.zip -d $DEPS_PATH - pushd . - cd $DEPS_PATH/tiff-$TIFF_VERSION - ./configure --quiet --disable-shared --disable-jpeg --disable-zlib --disable-jbig --disable-lzma --prefix=$DEPS_PATH - $MAKE - $MAKE install - popd -fi +set(CMAKE_BUILD_TYPE "Distribution" CACHE STRING "Build type") +set(CFLAGS "-mno-avx" CACHE STRING "CFLAGS") +set(CXXFLAGS "-mno-avx" CACHE STRING "CXXFLAGS") + +set(BLAS "apple" CACHE STRING "BLAS Vendor") + +set(USE_CUDA OFF CACHE BOOL "Build with CUDA support") +set(USE_OPENCV ON CACHE BOOL "Build with OpenCV support") +set(USE_OPENMP OFF CACHE BOOL "Build with Openmp support") +set(USE_MKL_IF_AVAILABLE OFF CACHE BOOL "Use Intel MKL if found") +set(USE_MKLDNN ON CACHE BOOL "Build with MKL-DNN support") +set(USE_LAPACK ON CACHE BOOL "Build with lapack support") +set(USE_TVM_OP OFF CACHE BOOL "Enable use of TVM operator build system.") +set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support") +set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support") diff --git a/config/config.cmake b/config/linux.cmake similarity index 96% copy from config/config.cmake copy to config/linux.cmake index 101e43f..7e658ac 100644 --- a/config/config.cmake +++ b/config/linux.cmake @@ -22,7 +22,7 @@ # Assume you are on the root directory of mxnet. First copy this file so that # any local changes will be ignored by git # -# $ cp config/config.cmake config.cmake +# $ cp config/linux.cmake config.cmake # # Next modify the according entries, and then compile by # @@ -38,8 +38,8 @@ #--------------------------------------------- # GPU support #--------------------------------------------- -set(USE_CUDA ON CACHE BOOL "Build with CUDA support") -set(USE_CUDNN ON CACHE BOOL "Build with cudnn support, if found") +set(USE_CUDA OFF CACHE BOOL "Build with CUDA support") +set(USE_CUDNN OFF CACHE BOOL "Build with cudnn support, if found") # Target NVIDIA GPU achitecture. # Valid options are "Auto" for autodetection, "All" for all available @@ -56,6 +56,8 @@ set(MXNET_CUDA_ARCH "Auto" CACHE STRING "Target NVIDIA GPU achitecture") #--------------------------------------------- # Common libraries #--------------------------------------------- +set(BLAS "open" CACHE STRING "BLAS Vendor") + set(USE_OPENCV ON CACHE BOOL "Build with OpenCV support") set(OPENCV_ROOT "" CACHE BOOL "OpenCV install path. Supports autodetection.") diff --git a/config/config.cmake b/config/linux_gpu.cmake similarity index 98% rename from config/config.cmake rename to config/linux_gpu.cmake index 101e43f..77f788c 100644 --- a/config/config.cmake +++ b/config/linux_gpu.cmake @@ -22,7 +22,7 @@ # Assume you are on the root directory of mxnet. First copy this file so that # any local changes will be ignored by git # -# $ cp config/config.cmake config.cmake +# $ cp config/linux_gpu.cmake config.cmake # # Next modify the according entries, and then compile by # @@ -56,6 +56,8 @@ set(MXNET_CUDA_ARCH "Auto" CACHE STRING "Target NVIDIA GPU achitecture") #--------------------------------------------- # Common libraries #--------------------------------------------- +set(BLAS "open" CACHE STRING "BLAS Vendor") + set(USE_OPENCV ON CACHE BOOL "Build with OpenCV support") set(OPENCV_ROOT "" CACHE BOOL "OpenCV install path. Supports autodetection.") diff --git a/docs/static_site/src/pages/get_started/osx_setup.md b/docs/static_site/src/pages/get_started/osx_setup.md index 3ba3030..86f7bf0 100644 --- a/docs/static_site/src/pages/get_started/osx_setup.md +++ b/docs/static_site/src/pages/get_started/osx_setup.md @@ -24,176 +24,151 @@ permalink: /get_started/osx_setup # Installing MXNet from source on OS X (Mac) -**NOTE:** For pre-built MXNet with Python, please refer to the [new install guide]({{'/get_started'|relative_url}}). +The following installation instructions are for building MXNet from source. For +instructions to build MXNet from source on other platforms, see the general +[Build From Source guide](build_from_source). -Installing MXNet is a two-step process: +Instead of building from source, you can install a binary version of MXNet. For +that, please follow the information at [Get Started](get_started). -1. Build the shared library from the MXNet C++ source code. -2. Install the supported language-specific packages for MXNet. +Building MXNet from source is a two-step process: -**Note:** To change the compilation options for your build, edit the ```make/config.mk``` file and submit a build request with the ```make``` command. +1. Build the shared library from the MXNet C++ source code. +2. (optional) Install the supported language-specific packages for MXNet. -## Prepare Environment for GPU Installation +If you plan to build with GPU, you need to set up the environment for CUDA and +cuDNN. Please follow the [NVIDIA CUDA Installation Guide for Mac OS +X](https://docs.nvidia.com/cuda/cuda-installation-guide-mac-os-x/index.html) and +[cuDNN Installation +Guide](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-mac). +Note that CUDA stopped supporting macOS in 2019 and future versions of CUDA may +not support macOS. -This section is optional. Skip to next section if you don't plan to use GPUs. If you plan to build with GPU, you need to set up the environment for CUDA and cuDNN. +## Contents -First, download and install [CUDA 8 toolkit](https://developer.nvidia.com/cuda-toolkit). +* [Build the MXNet shared library from source](#build-mxnet-from-source) +* [Install Language Packages](#installing-language-packages-for-mxnet) + * [R](#install-the-mxnet-package-for-r) + * [Julia](#install-the-mxnet-package-for-julia) + * [Scala](#install-the-mxnet-package-for-scala) + * [Java](#install-the-mxnet-package-for-java) + * [Perl](#install-the-mxnet-package-for-perl) + * [Contributions](#contributions) + * [Next Steps](#next-steps) -Once you have the CUDA Toolkit installed you will need to set up the required environment variables by adding the following to your ~/.bash_profile file: +<hr> -```bash - export CUDA_HOME=/usr/local/cuda - export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$DYLD_LIBRARY_PATH" - export PATH="$CUDA_HOME/bin:$PATH" -``` -Reload ~/.bash_profile file and install dependencies: -```bash - . ~/.bash_profile - brew install coreutils - brew tap caskroom/cask -``` +## Build the MXNet shared library from source -Then download [cuDNN 5](https://developer.nvidia.com/cudnn). +On OS X, you need the following dependencies: -Unzip the file and change to the cudnn root directory. Move the header files and libraries to your local CUDA Toolkit folder: +**Step 1:** Install prerequisite packages. ```bash - $ sudo mv include/cudnn.h /Developer/NVIDIA/CUDA-8.0/include/ - $ sudo mv lib/libcudnn* /Developer/NVIDIA/CUDA-8.0/lib - $ sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn* /usr/local/cuda/lib/ -``` +# Install OS X Developer Tools +xcode-select --install + +# Install Homebrew +/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" -Now we can start to build MXNet. +# Install dependencies +brew install cmake ninja ccache opencv +``` -## Build the Shared Library +`opencv` is an optional dependency. You can delete it from above `brew install` +line and build MXNet without OpenCV support by setting `USE_OPENCV` to `OFF` in +the configuration file described below. -### Install MXNet dependencies -Install the dependencies, required for MXNet, with the following commands: -- [Homebrew](http://brew.sh/) -- OpenBLAS and homebrew/core (for linear algebraic operations) -- OpenCV (for computer vision operations) -```bash - # Paste this command in Mac terminal to install Homebrew - /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +**Step 2:** Download MXNet sources and configure - # Insert the Homebrew directory at the top of your PATH environment variable - export PATH=/usr/local/bin:/usr/local/sbin:$PATH -``` +Clone the repository: ```bash - brew update - brew install pkg-config - brew install graphviz - brew install openblas - brew tap homebrew/core - brew install opencv - - # If building with MKLDNN - brew install llvm - - # Get pip - easy_install pip - # For visualization of network graphs - pip install graphviz==0.8.4 - # Jupyter notebook - pip install jupyter +git clone --recursive https://github.com/apache/incubator-mxnet.git mxnet +cd mxnet +cp config/darwin.cmake config.cmake ``` -### Build MXNet Shared Library +Please edit the config.cmake file based on your needs. The file contains a +series of `set(name value CACHE TYPE "Description")` entries. For example, to +build without Cuda, change `set(USE_CUDA ON CACHE TYPE "Build with CUDA +support")` to `set(USE_CUDA OFF CACHE TYPE "Build with CUDA support")`. + +For a GPU-enabled build make sure you have installed the [CUDA dependencies +first](#cuda-dependencies)). When building a GPU-enabled build on a machine +without GPU, MXNet build can't autodetect your GPU architecture and will target +all available GPU architectures. Please set the `MXNET_CUDA_ARCH` variable in +`config.cmake` to your desired cuda architecture to speed up the build. -After you have installed the dependencies, pull the MXNet source code from Git and build MXNet to produce an MXNet library called ```libmxnet.so```. You can clone the repository as described in the following code block, or you may try the [download links](download) for your desired MXNet version. +To (optionally) build with MKL math library, please install MKL first based on +the guide in [Math Library Selection](build_from_source#math-library-selection). -The file called ```osx.mk``` has the configuration required for building MXNet on OS X. First copy ```make/osx.mk``` into ```config.mk```, which is used by the ```make``` command: +**Step 3:** Build MXNet core shared library. ```bash - git clone --recursive https://github.com/apache/incubator-mxnet ~/mxnet - cd ~/mxnet - cp make/osx.mk ./config.mk - echo "USE_BLAS = openblas" >> ./config.mk - echo "ADD_CFLAGS += -I/usr/local/opt/openblas/include" >> ./config.mk - echo "ADD_LDFLAGS += -L/usr/local/opt/openblas/lib" >> ./config.mk - echo "ADD_LDFLAGS += -L/usr/local/lib/graphviz/" >> ./config.mk - make -j$(sysctl -n hw.ncpu) +rm -rf build +mkdir -p build && cd build +cmake -GNinja -C ../config.cmake .. +cmake --build . --parallel 8 ``` -To build with MKLDNN +You can increase the `--parallel 8` argument to match the number of processor +cores of your computer. -```bash -echo "CC=$(brew --prefix llvm)/bin/clang" >> ./config.mk -echo "CXX=$(brew --prefix llvm)/bin/clang++" >> ./config.mk -echo "USE_OPENCV=1" >> ./config.mk -echo "USE_OPENMP=1" >> ./config.mk -echo "USE_MKLDNN=1" >> ./config.mk -echo "USE_BLAS=apple" >> ./config.mk -LIBRARY_PATH=$(brew --prefix llvm)/lib/ make -j $(sysctl -n hw.ncpu) -``` +After a successful build, you will find the `libmxnet.dylib` in the `build` +folder in your MXNet project root. `libmxnet.dylib` is required to install +language bindings described in the next section. -If building with ```GPU``` support, add the following configuration to config.mk and build: -```bash - echo "USE_CUDA = 1" >> ./config.mk - echo "USE_CUDA_PATH = /usr/local/cuda" >> ./config.mk - echo "USE_CUDNN = 1" >> ./config.mk - make -j$(sysctl -n hw.ncpu) -``` -**Note:** To change build parameters, edit ```config.mk```. +<hr> - +## Installing Language Packages for MXNet -We have installed MXNet core library. Next, we will install MXNet interface package for the programming language of your choice: +After you have installed the MXNet core library. You may install MXNet interface +packages for the programming language of your choice: - [Python](#install-mxnet-for-python) -- [R](#install-the-mxnet-package-for-r) +- [C++](#install-the-mxnet-package-for-c++) +- [Clojure](#install-the-mxnet-package-for-clojure) - [Julia](#install-the-mxnet-package-for-julia) -- [Scala](#install-the-mxnet-package-for-scala) - [Perl](#install-the-mxnet-package-for-perl) +- [R](#install-the-mxnet-package-for-r) +- [Scala](#install-the-mxnet-package-for-scala) +- [Java](#install-the-mxnet-package-for-java) -## Install MXNet for Python -To install the MXNet Python binding navigate to the root of the MXNet folder then run the following: - -```bash -$ cd python -$ pip install -e . -``` +<hr> -Note that the `-e` flag is optional. It is equivalent to `--editable` and means that if you edit the source files, these changes will be reflected in the package installed. -## Install the MXNet Package for R -You have 2 options: -1. Building MXNet with the Prebuilt Binary Package -2. Building MXNet from Source Code +### Install MXNet for Python -### Building MXNet with the Prebuilt Binary Package -Install OpenCV and OpenBLAS. +To install the MXNet Python binding navigate to the root of the MXNet folder then run the following: ```bash -brew install opencv -brew install openblas@0.3.1 +cd python +pip install --user -e . ``` -Add a soft link to the OpenBLAS installation. This example links the 0.3.1 version: +Note that the `-e` flag is optional. It is equivalent to `--editable` and means +that if you edit the source files, these changes will be reflected in the +package installed. -```bash -ln -sf /usr/local/opt/openblas/lib/libopenblasp-r0.3.* /usr/local/opt/openblas/lib/libopenblasp-r0.3.1.dylib -``` -Note: packages for 3.6.x are not yet available. +### Install the MXNet Package for C++ -Install 3.5.x of R from [CRAN](https://cran.r-project.org/bin/macosx/). The latest is [v3.5.3](https://cran.r-project.org/bin/macosx/R-3.5.3.pkg). +Refer to the [C++ Package setup guide](c_plus_plus). +<hr> -For OS X (Mac) users, MXNet provides a prebuilt binary package for CPUs. The prebuilt package is updated weekly. You can install the package directly in the R console using the following commands: -```r - cran <- getOption("repos") - cran["dmlc"] <- "https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/R/CRAN/" - options(repos = cran) - install.packages("mxnet") -``` +### Install the MXNet Package for Clojure + +Refer to the [Clojure setup guide](https://github.com/apache/incubator-mxnet/tree/master/contrib/clojure-package). +<hr> -### Building MXNet from Source Code -Run the following commands to install the MXNet dependencies and build the MXNet R package. +### Install the MXNet Package for R +Run the following commands to install the MXNet dependencies and build the MXNet +R package. ```r Rscript -e "install.packages('devtools', repo = 'https://cran.rstudio.com')" @@ -227,7 +202,7 @@ You might want to add this command to your ```~/.bashrc``` file. If you do, you For more details about installing and using MXNet with Julia, see the [MXNet Julia documentation]({{'/api/julia'|relative_url}}). -## Install the MXNet Package for Scala +### Install the MXNet Package for Scala To use the MXNet-Scala package, you can acquire the Maven package as a dependency. @@ -235,7 +210,7 @@ Further information is in the [MXNet-Scala Setup Instructions](scala_setup). If you use IntelliJ or a similar IDE, you may want to follow the [MXNet-Scala on IntelliJ tutorial]({{'/api/scala/docs/tutorials/mxnet_scala_on_intellij'|relative_url}}) instead. -## Install the MXNet Package for Perl +### Install the MXNet Package for Perl Before you build MXNet for Perl from source code, you must complete [building the shared library](#build-the-shared-library). After you build the shared library, run the following command from the MXNet source root directory to build the MXNet Perl package: @@ -269,6 +244,11 @@ After you build the shared library, run the following command from the MXNet sou make install ``` +## Contributions + +You are more than welcome to contribute easy installation scripts for other operating systems and programming languages. +See the [community contributions page]({{'/community/contribute'|relative_url}}) for further information. + ## Next Steps * [Tutorials]({{'/api'|relative_url}}) diff --git a/docs/static_site/src/pages/get_started/ubuntu_setup.md b/docs/static_site/src/pages/get_started/ubuntu_setup.md index dca6d3b..2b5c17e 100644 --- a/docs/static_site/src/pages/get_started/ubuntu_setup.md +++ b/docs/static_site/src/pages/get_started/ubuntu_setup.md @@ -90,8 +90,8 @@ Further information is provided in the source guide's [Math Library Selection](build_from_source#math-library-selection) section. `libopencv-dev` is an optional dependency. You can delete it from above `apt-get -install` line and build MXNet without OpenCV support by passing -`-DUSE_OPENCV=OFF` to the `cmake` command below. +install` line and build MXNet without OpenCV support by setting `USE_OPENCV` to +`OFF` in the configuration file described below. Note: CMake 3.13 or higher is required. If you are running an older version of CMake, you will see an error message like `CMake 3.13 or higher is required. You @@ -109,13 +109,12 @@ Clone the repository: ```bash git clone --recursive https://github.com/apache/incubator-mxnet.git mxnet cd mxnet -cp config/config.cmake config.cmake +cp config/linux.cmake config.cmake # or config/linux_gpu.cmake for build with CUDA ``` Please edit the config.cmake file based on your needs. The file contains a -series of `set(name value CACHE TYPE "Description")` entries. For example, to -build without Cuda, change `set(USE_CUDA ON CACHE TYPE "Build with CUDA -support")` to `set(USE_CUDA OFF CACHE TYPE "Build with CUDA support")`. +series of `set(name value CACHE TYPE "Description")` entries. You can change the +values of the respective `value`. For a GPU-enabled build make sure you have installed the [CUDA dependencies first](#cuda-dependencies)). When building a GPU-enabled build on a machine @@ -147,8 +146,8 @@ bindings described in the next section. ## Installing Language Packages for MXNet -After you have installed the MXNet core library. You may install MXNet interface packages for the programming language -of your choice: +After you have installed the MXNet core library. You may install MXNet interface +packages for the programming language of your choice: - [Python](#install-mxnet-for-python) - [C++](#install-the-mxnet-package-for-c++) - [Clojure](#install-the-mxnet-package-for-clojure) @@ -169,8 +168,9 @@ cd python pip install --user -e . ``` -Note that the `-e` flag is optional. It is equivalent to `--editable` and means that if you edit the source files, these -changes will be reflected in the package installed. +Note that the `-e` flag is optional. It is equivalent to `--editable` and means +that if you edit the source files, these changes will be reflected in the +package installed. #### Optional Python Packages diff --git a/tools/dependencies/libtiff.sh b/tools/dependencies/libtiff.sh index f57099b..968ffe4 100755 --- a/tools/dependencies/libtiff.sh +++ b/tools/dependencies/libtiff.sh @@ -19,7 +19,7 @@ # This script builds the static library of libtiff that can be used as dependency of mxnet/opencv. set -ex -TIFF_VERSION="4.0.10" +TIFF_VERSION="4.0.9" if [[ ! -f $DEPS_PATH/lib/libtiff.a ]]; then # download and build libtiff >&2 echo "Building libtiff..." diff --git a/tools/staticbuild/build_lib_cmake.sh b/tools/staticbuild/build_lib_cmake.sh index 78718ea..6a4bbec 100755 --- a/tools/staticbuild/build_lib_cmake.sh +++ b/tools/staticbuild/build_lib_cmake.sh @@ -35,9 +35,9 @@ ninja cd - # Move to lib -rm -rf lib; mkdir lib; cp -L build/libmxnet.so lib/libmxnet.so - +rm -rf lib; mkdir lib; if [[ $PLATFORM == 'linux' ]]; then + cp -L build/libmxnet.so lib/libmxnet.so cp -L staticdeps/lib/libopenblas.so lib/libopenblas.so.0 if [[ -f /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.so ]]; then cp -L /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.so lib/libgfortran.so.3 @@ -47,6 +47,8 @@ if [[ $PLATFORM == 'linux' ]]; then cp -L /usr/lib/x86_64-linux-gnu/libgfortran.so.4 lib/libgfortran.so.4 fi cp -L /usr/lib/x86_64-linux-gnu/libquadmath.so.0 lib/libquadmath.so.0 +elif [[ $PLATFORM == 'darwin' ]]; then + cp -L build/libmxnet.dylib lib/libmxnet.dylib fi # Print the linked objects on libmxnet.so @@ -55,8 +57,8 @@ if [[ ! -z $(command -v readelf) ]]; then readelf -d lib/libmxnet.so strip --strip-unneeded lib/libmxnet.so elif [[ ! -z $(command -v otool) ]]; then - otool -L lib/libmxnet.so - strip -u -r -x lib/libmxnet.so + otool -L lib/libmxnet.dylib + strip -u -r -x lib/libmxnet.dylib else >&2 echo "Not available" fi