You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by wa...@apache.org on 2016/08/17 18:02:46 UTC
[25/51] [abbrv] incubator-singa git commit: Merge commits from
wenfeng for the installation page.
Merge commits from wenfeng for the installation page.
Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/2c049d68
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/2c049d68
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/2c049d68
Branch: refs/heads/master
Commit: 2c049d683f1bd4f590e87d9dd2f3fe0d2a1fb591
Parents: 30731ee 410f238
Author: Wei Wang <wa...@comp.nus.edu.sg>
Authored: Mon Aug 15 19:37:46 2016 +0800
Committer: Wei Wang <wa...@comp.nus.edu.sg>
Committed: Mon Aug 15 19:37:46 2016 +0800
----------------------------------------------------------------------
doc/docs/installation.md | 297 +++++++++++++++++++++++++++++---------
src/python/setup.py.in | 5 +-
src/python/singa/__init__.py | 240 ------------------------------
src/python/singa/command.py | 240 ++++++++++++++++++++++++++++++
4 files changed, 468 insertions(+), 314 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/2c049d68/doc/docs/installation.md
----------------------------------------------------------------------
diff --cc doc/docs/installation.md
index 4cf4ea7,6bfdee3..5d3c8a2
--- a/doc/docs/installation.md
+++ b/doc/docs/installation.md
@@@ -1,71 -1,138 +1,226 @@@
--# Building SINGA from source
--
--## Dependencies
--
--### Required
- * Google Protobuf (>=2.5)
-* Google Protobuf (>=2.5,<3)
--* BLAS (tested with OpenBLAS >=0.2.10)
--* CUDA (tested with 6.5, 7.0 and 7.5)
--* CUDNN (v4 and v5)
--* cmake (>=2.6)
--
--Users must install the above mandatory libraries.
--Currently CUDA and CUDNN are also mandatory, but it would become optional later.
--
--### Optional
--* Glog
--* OpenCV (tested with 2.4.8)
--* LMDB (tested with 0.9)
--
--
--## Instructions
--
--Please clone the newest code from [Github](https://github.com/apache/incubator-singa) and execute the following commands,
--
--
-- $ git clone https://github.com/apache/incubator-singa.git
-- $ cd incubator-singa/
-- # switch to dev branch
-- $ git checkout dev
--
--
--If you use CUDA, then [CNMeM](https://github.com/NVIDIA/cnmem) is necessary,
--which could be downloaded as
--
-- $ git submodule init
-- $ git submodule update
-
--
- ### Linux & MacOS
--
- GCC (>=4.8.1) is required to compile SINGA on Linux.
- You can use gcc compiler to do the installation on MacOS following the
- steps in Linux installation.
- In addition, you can also install singa via clang compiler following the
- commands in this section.
-### Linux OS
--
-GCC (>=4.8.1) is required to compile SINGA on Linux OS.
--In SINGA_ROOT, execute the following commands for compiling SINGA,
--
-- $ mkdir build && cd build
- # generate Makefile for compilation
-- $ cmake ..
- # compile SINGA
-- $ make
--
- Note that if you are using CUDNN and it is not installed under system default
- folder, you need to let cmake know the paths to CUDNN,
-Note that if you are using CUDNN, you need to let cmake know the paths to CUDNN,
--
-- $ export CMAKE_INCLUDE_PATH=<path to cudnn>/include:$CMAKE_INCLUDE_PATH
-- $ export CMAKE_LIBRARY_PATH=<path to cudnn>/lib64:$CMAKE_LIBRARY_PATH
--
- You can use `ccmake ..` to configure the compilation options including using
- LMDB, GLOG, etc. In addition, you can set the proper search paths for the
- dependent libraries.
-You can use `cmake ..` to configure the compilation options including using
-LMDB, GLOG, etc.
--
--After compiling SINGA, you can run the unit tests by
--
-- $ ./bin/test_singa
--
--You can see all the testing cases with testing results. If SINGA passes all
--tests, then you have successfully installed SINGA. Please proceed to try the examples!
-
-
-### MacOS
--
-Currently only Linux OS is officially support.
--
--### Windows
-
-Currently only Linux OS is officially support.
-
-
-# Install SINGA Python Module
-
-SINGA provide a python binding for python programers. Users can either install from source or
-from pre-built wheel file.
-
-## Install from source
-
-### Required
-* python(==2.7)
-* pip(>=1.5)
-* SWIG(>=3.0)
-* numpy(>=1.11.0)
-* Google protobuf(>=2.5,<3)
-
-
-### Configuration
-To build SINGA python package, users should turn on python building switch in cmake config file: "CMakeList.txt"
-
- OPTION(USE_PYTHON "Generate py wrappers" ON)
-
-### Instructions
-Follow the instructions in the above sections to build SINGA from source,
-
-After that, execute the following commands:
-
- # under the build directory
- $ cd python
- $ sudo pip install .
-
-Then singa package should be installed in the corresponding python library.
-
-## Pip Install from wheel
-
-Install pip if it is not already installed:
-
- $ sudo apt-get install python-pip python-dev
-
-Then, select the correct binary to install:
-
- # Ubuntu/Linux 64-bit, CPU only, Python 2.7, Protobuf 2.5
- $ export SINGA_WHEEL_URL=http://comp.nus.edu.sg/~dbsystem/singa/assets/file/pb2.5/singa-1.0.0-cp27-none-linux_x86_64.whl
-
- # Ubuntu/Linux 64-bit, CPU only, Python 2.7, Protobuf 2.6
- $ export SINGA_WHEEL_URL=http://comp.nus.edu.sg/~dbsystem/singa/assets/file/pb2.6/singa-1.0.0-cp27-none-linux_x86_64.whl
-
- # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7, Protobuf 2.5, CUDA toolkit 7.5 and CuDNN v5
- $ export SINGA_WHEEL_URL=http://comp.nus.edu.sg/~dbsystem/singa/assets/file/pb2.5-cuda7.5-cudnn5/singa-1.0.0-cp27-none-linux_x86_64.whl
-
- # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7, Protobuf 2.6, CUDA toolkit 7.5 and CuDNN v5
- $ export SINGA_WHEEL_URL=http://comp.nus.edu.sg/~dbsystem/singa/assets/file/pb2.6-cuda7.5-cudnn5/singa-1.0.0-cp27-none-linux_x86_64.whl
-
-Install SINGA:
-
- $ sudo pip install --upgrade $SINGA_WHEEL_URL
-
-### build wheel file from source
-
-Users can build wheel file from source. After build SINGA, execute the following commands:
-
- # under the build directory
- $ cd python
- $ python setup.py bdist_wheel
-
-Then users may get built wheel file under "dist" directory
++# Installation
++
++## Dependencies
++
++### Required
++* google protobuf (>=2.5,<3)
++* blas (tested with openblas >=0.2.10)
++* cmake (>=2.6)
++
++
++### Optional
++* glog
++* opencv (tested with 2.4.8)
++* lmdb (tested with 0.9)
++* cuda (tested with 6.5, 7.0 and 7.5)
++* cudnn (v4 and v5)
++
++PySINGA has additional dependencies
++
++* python(==2.7)
++* pip(>=1.5)
++* swig(>=3.0)
++* numpy(>=1.11.0)
++* openblas (>=0.2.10)
++
++Users are encouraged to install the cuda and [cudnn](https://developer.nvidia.com/cudnn) for running SINGA on GPUs to
++get better performance.
++Most of the dependent libraries could be installed via package mangers like
++apt-get or homebrew.
++
++ # for ubuntu users, tested on 14.04
++ sudo apt-get install libprotobuf-dev libopencv-dev protobuf-compiler libgoogle-glog-dev liblmdb-dev, python2.7-dev, python-pip, python-numpy
++
++ # for Mac OS users
++ brew install -vd glog lmdb
++ brew tap homebrew/science
++ brew install opencv
++ brew install openblas
++ brew tap homebrew/python
++ brew install python
++ brew install numpy --with-openblas
++
++
++## Install PySINGA
++
++### From wheel
++
++After installing the dependencies for SINGA and PySINGA, please download the correct binary:
++
++ # Ubuntu/Linux 64-bit, CPU only, Python 2.7, Protobuf 2.5
++ $ export SINGA_WHEEL_URL=http://comp.nus.edu.sg/~dbsystem/singa/assets/file/pb2.5/singa-1.0.0-cp27-none-linux_x86_64.whl
++
++ # Ubuntu/Linux 64-bit, CPU only, Python 2.7, Protobuf 2.6
++ $ export SINGA_WHEEL_URL=http://comp.nus.edu.sg/~dbsystem/singa/assets/file/pb2.6/singa-1.0.0-cp27-none-linux_x86_64.whl
++
++ # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7, Protobuf 2.5, CUDA toolkit 7.5 and CuDNN v5
++ $ export SINGA_WHEEL_URL=http://comp.nus.edu.sg/~dbsystem/singa/assets/file/pb2.5-cuda7.5-cudnn5/singa-1.0.0-cp27-none-linux_x86_64.whl
++
++ # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7, Protobuf 2.6, CUDA toolkit 7.5 and CuDNN v5
++ $ export SINGA_WHEEL_URL=http://comp.nus.edu.sg/~dbsystem/singa/assets/file/pb2.6-cuda7.5-cudnn5/singa-1.0.0-cp27-none-linux_x86_64.whl
++
++Then, run the following command
++
++ $ sudo pip install --upgrade $SINGA_WHEEL_URL
++
++If you do not have sudo right, you can run `pip install` in a python virtual environment.
++
++
++### From source
++
++Please compile SINGA from source (see the next section) with the 'USE_PYTHON' option on,
++and then run the following commands,
++
++ # under the build directory
++ $ cd python
++ $ sudo pip install .
++
++If you are using a virtual environment, you can ignore the `sudo` keyword.
++
++Developers can build the wheel file via
++
++ # under the build directory
++ $ cd python
++ $ python setup.py bdist_wheel
++
++
++The generated wheel file is under "dist" directory
++
++
++## Build SINGA from source
++
++Please clone the newest code from [Github](https://github.com/apache/incubator-singa) and execute the following commands,
++
++ $ git clone https://github.com/apache/incubator-singa.git
++ $ cd incubator-singa/
++
++If you use CUDA, then [CNMeM](https://github.com/NVIDIA/cnmem) is necessary,
++which could be downloaded as
++
++ $ git submodule init
++ $ git submodule update
++
++
++### Linux & MacOS
++
++GCC (>=4.8.1) is required to compile SINGA on Linux.
++For Mac OS users, you can use either GCC or Clang.
++
++In SINGA_ROOT, execute the following commands for compiling SINGA,
++
++ $ mkdir build && cd build
++ $ cmake ..
++ $ make
++ $ make install
++
++Note that if you are using CUDNN and it is not installed under system default
++folder, you need to let cmake know the paths to CUDNN,
++
++ $ export CMAKE_INCLUDE_PATH=<path to cudnn>/include:$CMAKE_INCLUDE_PATH
++ $ export CMAKE_LIBRARY_PATH=<path to cudnn>/lib64:$CMAKE_LIBRARY_PATH
++
++You can use `ccmake ..` to configure the compilation options including using
++generating python binding and changing the installation folder.
++If the dependent libraries are not in the system default paths, you need to export
++the following environment variables
++
++ export CMAKE_INCLUDE_PATH=<path to your header file folder>
++ export CMAKE_LIBRARY_PATH=<path to your lib file folder>
++
++After compiling SINGA, you can run the unit tests by
++
++ $ ./bin/test_singa
++
++You can see all the testing cases with testing results. If SINGA passes all
++tests, then you have successfully installed SINGA. Please proceed to try the examples!
++
++
++### Windows
++To be added.
++
++
++## FAQ
++
++* Q: Error from running `cmake ..`, which cannot find the dependent libraries.
++
++ A: If you haven't installed the libraries, please install them. If you installed
++ the libraries in a folder that is outside of the system folder, e.g. /usr/local,
++ please export the following variables
++
++ export CMAKE_INCLUDE_PATH=<path to your header file folder>
++ export CMAKE_LIBRARY_PATH=<path to your lib file folder>
++
++
++* Q: Error from `make`, e.g. the linking phase
++
++ A: If your libraries are in other folders than system default paths, you need
++ to export the following varaibles
++
++ $ export LIBRARY_PATH=<path to your lib file folder>
++ $ export LD_LIBRARY_PATH=<path to your lib file folder>
++
++
++* Q: Error from header files, e.g. 'cblas.h no such file or directory exists'
++
++ A: You need to include the folder of the cblas.h into CPLUS_INCLUDE_PATH,
++ e.g.,
++
++ $ export CPLUS_INCLUDE_PATH=/opt/OpenBLAS/include:$CPLUS_INCLUDE_PATH
++
++* Q:While compiling SINGA, I get error `SSE2 instruction set not enabled`
++
++ A:You can try following command:
++
++ $ make CFLAGS='-msse2' CXXFLAGS='-msse2'
++
++* Q:I get `ImportError: cannot import name enum_type_wrapper` from google.protobuf.internal when I try to import .py files.
++
++ A: You need to install the python binding of protobuf, which could be installed via
++
++ $ sudo apt-get install protobuf
++
++ or from source
++
++ $ cd /PROTOBUF/SOURCE/FOLDER
++ $ cd python
++ $ python setup.py build
++ $ python setup.py install
++
++* Q: When I build OpenBLAS from source, I am told that I need a Fortran compiler.
++
++ A: You can compile OpenBLAS by
++
++ $ make ONLY_CBLAS=1
++
++ or install it using
++
++ $ sudo apt-get install libopenblas-dev
++
++* Q: When I build protocol buffer, it reports that GLIBC++_3.4.20 not found in /usr/lib64/libstdc++.so.6.
++
++ A9: This means the linker found libstdc++.so.6 but that library
++ belongs to an older version of GCC than was used to compile and link the
++ program. The program depends on code defined in
++ the newer libstdc++ that belongs to the newer version of GCC, so the linker
++ must be told how to find the newer libstdc++ shared library.
++ The simplest way to fix this is to find the correct libstdc++ and export it to
++ LD_LIBRARY_PATH. For example, if GLIBC++_3.4.20 is listed in the output of the
++ following command,
++
++ $ strings /usr/local/lib64/libstdc++.so.6|grep GLIBC++
++
++ then you just set your environment variable as
++
++ $ export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
++
++* Q: When I build glog, it reports that "src/logging_unittest.cc:83:20: error: \u2018gflags\u2019 is not a namespace-name"
++
++ A: It maybe that you have installed gflags with a different namespace such as "google". so glog can't find 'gflags' namespace.
++ Because it is not necessary to have gflags to build glog. So you can change the configure.ac file to ignore gflags.
++
++ 1. cd to glog src directory
++ 2. change line 125 of configure.ac to "AC_CHECK_LIB(gflags, main, ac_cv_have_libgflags=0, ac_cv_have_libgflags=0)"
++ 3. autoreconf
++
++ After this, you can build glog again.
++