| #!/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 |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| ###################################################################### |
| # This script installs MXNet for Python in a virtualenv on OSX and ubuntu |
| ###################################################################### |
| set -e |
| #set -x |
| |
| BUILDIR=build |
| VENV=mxnet_py3 |
| |
| setup_virtualenv() { |
| if [ ! -d $VENV ];then |
| virtualenv -p `which python3` $VENV |
| fi |
| source $VENV/bin/activate |
| } |
| |
| gpu_count() { |
| nvidia-smi -L | wc -l |
| } |
| |
| detect_platform() { |
| unameOut="$(uname -s)" |
| case "${unameOut}" in |
| Linux*) |
| distro=$(awk -F= '/^NAME/{gsub(/"/, "", $2); print $2}' /etc/os-release) |
| machine="Linux/$distro" |
| ;; |
| Darwin*) machine=Mac;; |
| CYGWIN*) machine=Cygwin;; |
| MINGW*) machine=MinGw;; |
| *) machine="UNKNOWN:${unameOut}" |
| esac |
| echo ${machine} |
| } |
| |
| |
| if [ $(gpu_count) -ge 1 ];then |
| USE_CUDA=ON |
| else |
| USE_CUDA=OFF |
| fi |
| |
| PLATFORM=$(detect_platform) |
| echo "Detected platform '$PLATFORM'" |
| |
| if [ $PLATFORM = "Mac" ];then |
| USE_OPENMP=OFF |
| else |
| USE_OPENMP=ON |
| fi |
| |
| if [ $PLATFORM = "Linux/Ubuntu" ];then |
| install_dependencies_ubuntu() { |
| sudo apt-get update |
| sudo apt-get install -y build-essential libatlas-base-dev libopencv-dev graphviz virtualenv cmake\ |
| ninja-build libopenblas-dev liblapack-dev python3 python3-dev |
| } |
| echo "Installing build dependencies in Ubuntu!" |
| install_dependencies_ubuntu |
| fi |
| |
| echo "Preparing a Python virtualenv in ${VENV}" |
| setup_virtualenv |
| |
| echo "Building MXNet core. This can take a few minutes..." |
| build_mxnet() { |
| pushd . |
| set -x |
| mkdir -p $BUILDIR && cd $BUILDIR |
| cmake -DUSE_CUDA=$USE_CUDA -DUSE_OPENCV=ON -DUSE_OPENMP=$USE_OPENMP -DUSE_SIGNAL_HANDLER=ON -DCMAKE_BUILD_TYPE=Release -GNinja .. |
| ninja |
| set +x |
| popd |
| } |
| |
| |
| build_mxnet |
| |
| echo "Installing mxnet under virtualenv ${VENV}" |
| install_mxnet() { |
| pushd . |
| cd python |
| pip3 install -e . |
| pip3 install opencv-python matplotlib graphviz jupyter ipython |
| popd |
| } |
| |
| install_mxnet |
| |
| echo " |
| |
| ======================================================================================== |
| Done! MXNet for Python installation is complete. Go ahead and explore MXNet with Python. |
| ======================================================================================== |
| |
| Use the following command to enter the virtualenv: |
| $ source ${VENV}/bin/activate |
| $ iptyhon |
| |
| You can then start using mxnet |
| |
| import mxnet as mx |
| x = mx.nd.ones((5,5)) |
| " |