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/10/25 08:43:37 UTC

[1/6] incubator-singa git commit: SINGA-255 Compile mandatory depedent libaries together with SINGA code

Repository: incubator-singa
Updated Branches:
  refs/heads/master fac3af949 -> 1117a16eb


SINGA-255 Compile mandatory depedent libaries together with SINGA code

Add protobuf.
Add OpenBLAS.

delete submodules

SINGA-255 Compile mandatory depedent libaries together with SINGA code

Add externalproject for singa.

SINGA-255 Compile mandatory depedent libaries together with SINGA code

Add USE_SHARED_LIBS option and some cmake codes.


Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/932a0cd4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/932a0cd4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/932a0cd4

Branch: refs/heads/master
Commit: 932a0cd4959d7b897003d360cdbb3240ca83aeab
Parents: 61faa84
Author: xiezl <xi...@comp.nus.edu.sg>
Authored: Thu Oct 20 22:06:05 2016 +0800
Committer: xiezl <xi...@comp.nus.edu.sg>
Committed: Mon Oct 24 14:01:21 2016 +0800

----------------------------------------------------------------------
 .gitmodules                     |  6 +++
 CMakeLists.txt                  | 73 +++++++++++++++++++++++++-------
 cmake/Dependencies.cmake        | 80 +++++++++++++++++++++++++-----------
 examples/cifar10/CMakeLists.txt | 12 +++---
 src/CMakeLists.txt              |  1 +
 test/CMakeLists.txt             |  2 +-
 6 files changed, 127 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/932a0cd4/.gitmodules
----------------------------------------------------------------------
diff --git a/.gitmodules b/.gitmodules
index cd0a9d2..fc8ce49 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,9 @@
 [submodule "lib/cnmem"]
 	path = lib/cnmem
 	url = https://github.com/NVIDIA/cnmem.git
+[submodule "lib/protobuf"]
+	path = lib/protobuf
+	url = https://github.com/google/protobuf.git
+[submodule "lib/OpenBLAS"]
+	path = lib/OpenBLAS
+	url = https://github.com/xianyi/OpenBLAS.git

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/932a0cd4/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e9f27a..464f8d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,7 @@
 # limitations under the License.
 # 
 
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 
 PROJECT(singa)
 SET(PACKAGE_VERSION "1.0.0")
@@ -27,17 +27,18 @@ LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Thirdparty)
 
 # Flags
 IF(UNIX OR APPLE)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g -O2 -fPIC -Wall")
+    SET(CMAKE_CXX_FLAGS 
+        "${CMAKE_CXX_FLAGS} -std=c++11 -g -O2 -fPIC -Wall -pthread")
 ENDIF()
 IF(WIN32) 
-  IF (MSVC)
-	MESSAGE(STATUS "Using msvc compiler")
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SCL_SECURE_NO_WARNINGS")
-	MESSAGE(STATUS "Using msvc compiler ${CMAKE_CXX_FLAGS}")
-  ENDIF()
+    IF (MSVC)
+        MESSAGE(STATUS "Using msvc compiler")
+        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SCL_SECURE_NO_WARNINGS")
+        MESSAGE(STATUS "Using msvc compiler ${CMAKE_CXX_FLAGS}")
+    ENDIF()
 ENDIF()
 IF(CMAKE_BUILD_TYPE=Debug)
-  SET(NVCC_FLAG "${NVCC_FLAG} -g -G ")
+    SET(NVCC_FLAG "${NVCC_FLAG} -g -G ")
 ENDIF()
 #message(STATUS "${CMAKE_CXX_FLAGS}")
 SET(SINGA_INCLUDE_DIR
@@ -54,6 +55,8 @@ OPTION(USE_JAVA "Generate java wrappers" OFF)
 OPTION(USE_OPENCL "Use OpenCL" OFF)
 OPTION(ENABLE_DIST "enable distributed training" OFF)
 OPTION(DISABLE_WARNINGS "disable warnings under windows" ON)
+OPTION(USE_MODULES "Use submodules to compile" ON)
+OPTION(USE_SHARED_LIBS "Use shared library" OFF)
 
 INCLUDE("cmake/Dependencies.cmake")
 #INCLUDE("cmake/Utils.cmake")
@@ -78,7 +81,47 @@ ENDIF()
 
 # TODO(wangwei) detect the ev lib
 IF (ENABLE_DIST)
-  LIST(APPEND SINGA_LINKER_LIBS ev)
+    LIST(APPEND SINGA_LINKER_LIBS ev)
+ENDIF()
+
+IF (USE_MODULES)
+    include(ExternalProject)
+    #ADD_SUBDIRECTORY(lib/protobuf/cmake)
+    #ADD_SUBDIRECTORY(lib/OpenBLAS)
+    IF(USE_SHARED_LIBS)
+        ExternalProject_Add(protobuf
+            GIT_REPOSITORY "https://github.com/google/protobuf.git"
+            GIT_TAG "2.7.0"
+            SOURCE_DIR "protobuf/" 
+            CONFIGURE_COMMAND "${CMAKE_COMMAND}"
+            "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B."
+            "-Dprotobuf_BUILD_TESTS=OFF" "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
+            "-Dprotobuf_BUILD_SHARED_LIBS=ON" "-DCMAKE_C_FLAGS=-fPIC"
+            "-DCMAKE_CXX_FLAGS=-fPIC"
+            BUILD_COMMAND "${CMAKE_COMMAND}" --build "." 
+            )
+    ELSE()
+        ExternalProject_Add(protobuf
+            GIT_REPOSITORY "https://github.com/google/protobuf.git"
+            GIT_TAG "2.7.0"
+            SOURCE_DIR "protobuf/" 
+            CONFIGURE_COMMAND "${CMAKE_COMMAND}"
+            "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B."
+            "-Dprotobuf_BUILD_TESTS=OFF" "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
+            "-Dprotobuf_BUILD_SHARED_LIBS=OFF" "-DCMAKE_C_FLAGS=-fPIC"
+            "-DCMAKE_CXX_FLAGS=-fPIC"
+            BUILD_COMMAND "${CMAKE_COMMAND}" --build "." 
+            )
+    ENDIF()
+    ExternalProject_Add(openblas
+        GIT_REPOSITORY "https://github.com/xianyi/OpenBLAS.git"
+        GIT_TAG "develop"
+        SOURCE_DIR "openblas/" 
+        BUILD_IN_SOURCE 1
+        CONFIGURE_COMMAND ""
+        BUILD_COMMAND "make" "ONLY_CBLAS=1" 
+        INSTALL_COMMAND "make" "PREFIX=${CMAKE_BINARY_DIR}/" "install"
+        )
 ENDIF()
 
 INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include")
@@ -87,17 +130,17 @@ ADD_SUBDIRECTORY(test)
 ADD_SUBDIRECTORY(examples)
 
 IF (USE_PYTHON)
-  ADD_SUBDIRECTORY(python)
+    ADD_SUBDIRECTORY(python)
 ENDIF()
 
 IF (USE_JAVA)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing ")
-  ADD_SUBDIRECTORY(java)
+    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing ")
+    ADD_SUBDIRECTORY(java)
 ENDIF()
 
 INSTALL(DIRECTORY include/singa DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
 INSTALL(FILES ${CMAKE_BINARY_DIR}/include/singa/singa_config.h DESTINATION
-  ${CMAKE_INSTALL_PREFIX}/include/singa)
+    ${CMAKE_INSTALL_PREFIX}/include/singa)
 INSTALL (DIRECTORY ${CMAKE_BINARY_DIR}/lib DESTINATION
-  ${CMAKE_INSTALL_PREFIX}
-  PATTERN "*libgtest.a" EXCLUDE )
+    ${CMAKE_INSTALL_PREFIX}
+    PATTERN "*libgtest.a" EXCLUDE )

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/932a0cd4/cmake/Dependencies.cmake
----------------------------------------------------------------------
diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
index 6ad15c0..572a43b 100644
--- a/cmake/Dependencies.cmake
+++ b/cmake/Dependencies.cmake
@@ -18,12 +18,49 @@
 
 SET(SINGA_LINKER_LIBS "")
 
-#INCLUDE("cmake/ProtoBuf.cmake")
+IF(USE_MODULES)
+    IF(USE_SHARED_LIBS)
+        include(FindProtobuf)
+        SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+        SET(PROTOBUF_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libprotobuf.so")
+        SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.so")
+        SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
+        INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
+        LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES})
+        IF(USE_CBLAS)
+            SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+            SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.so")
+            INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
+            LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
+        ENDIF()
+    ELSE()
+        include(FindProtobuf)
+        SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+        SET(PROTOBUF_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libprotobuf.a")
+        SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.a")
+        SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
+        INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
+        LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES})
+        IF(USE_CBLAS)
+            SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+            SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.a")
+            INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
+            LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
+        ENDIF()
+    ENDIF()
+ELSE()
+    FIND_PACKAGE( Protobuf REQUIRED )
+    MESSAGE(STATUS "proto libs " ${PROTOBUF_LIBRARIES})
+    LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES})
+    IF(USE_CBLAS)
+        FIND_PACKAGE(CBLAS REQUIRED)
+        INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
+        LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
+        MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}")
+    ENDIF()
+ENDIF()
 
-FIND_PACKAGE( Protobuf REQUIRED )
-INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
-MESSAGE(STATUS "proto libs " ${PROTOBUF_LIBRARIES})
-LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES})
+#INCLUDE("cmake/ProtoBuf.cmake")
 #INCLUDE("cmake/Protobuf.cmake")
 
 FIND_PACKAGE(Glog)
@@ -31,7 +68,7 @@ IF(GLOG_FOUND)
     MESSAGE(STATUS "GLOG FOUND at ${GLOG_INCLUDE_DIR}")
     ADD_DEFINITIONS("-DUSE_GLOG")
     LIST(APPEND SINGA_LINKER_LIBS ${GLOG_LIBRARIES})
-	INCLUDE_DIRECTORIES(${GLOG_INCLUDE_DIR})
+    INCLUDE_DIRECTORIES(${GLOG_INCLUDE_DIR})
 ENDIF()
 
 IF(USE_LMDB)
@@ -47,30 +84,23 @@ ELSE()
     SET(USE_CUDNN FALSE)
 ENDIF()
 
-IF(USE_CBLAS)
-    FIND_PACKAGE(CBLAS REQUIRED)
-    INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
-    LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
-    MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}")
-ENDIF()
-
 IF(USE_OPENCL)
     FIND_PACKAGE(OpenCL REQUIRED)
     IF(NOT OpenCL_FOUND)
         MESSAGE(SEND_ERROR "OpenCL was requested, but not found.")
     ELSE()
-    	MESSAGE(STATUS "Found OpenCL headers at ${OpenCL_INCLUDE_DIRS}")
-    	INCLUDE_DIRECTORIES(SYSTEM ${OpenCL_INCLUDE_DIR})
-    	LIST(APPEND SINGA_LINKER_LIBS ${OpenCL_LIBRARIES})
-	    FIND_PACKAGE(ViennaCL REQUIRED)
-		IF(NOT ViennaCL_FOUND)
-			MESSAGE(SEND_ERROR "ViennaCL is required if OpenCL is enabled.")
-		ELSE()
-			MESSAGE(STATUS "Found ViennaCL headers at ${ViennaCL_INCLUDE_DIR}")
-			INCLUDE_DIRECTORIES(SYSTEM ${ViennaCL_INCLUDE_DIR})
-			LIST(APPEND SINGA_LINKER_LIBS ${ViennaCL_LIBRARIES})
-		ENDIF()
-	ENDIF()
+        MESSAGE(STATUS "Found OpenCL headers at ${OpenCL_INCLUDE_DIRS}")
+        INCLUDE_DIRECTORIES(SYSTEM ${OpenCL_INCLUDE_DIR})
+        LIST(APPEND SINGA_LINKER_LIBS ${OpenCL_LIBRARIES})
+        FIND_PACKAGE(ViennaCL REQUIRED)
+        IF(NOT ViennaCL_FOUND)
+            MESSAGE(SEND_ERROR "ViennaCL is required if OpenCL is enabled.")
+        ELSE()
+            MESSAGE(STATUS "Found ViennaCL headers at ${ViennaCL_INCLUDE_DIR}")
+            INCLUDE_DIRECTORIES(SYSTEM ${ViennaCL_INCLUDE_DIR})
+            LIST(APPEND SINGA_LINKER_LIBS ${ViennaCL_LIBRARIES})
+        ENDIF()
+    ENDIF()
 ENDIF()
 
 #FIND_PACKAGE(Glog REQUIRED)

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/932a0cd4/examples/cifar10/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/cifar10/CMakeLists.txt b/examples/cifar10/CMakeLists.txt
index 5708c29..8026467 100644
--- a/examples/cifar10/CMakeLists.txt
+++ b/examples/cifar10/CMakeLists.txt
@@ -22,18 +22,18 @@ INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/include)
 
 ADD_EXECUTABLE(alexnet alexnet.cc)
 ADD_DEPENDENCIES(alexnet singa)
-TARGET_LINK_LIBRARIES(alexnet singa ${SINGA_LIBKER_LIBS})
+TARGET_LINK_LIBRARIES(alexnet singa) 
 
 IF(USE_CUDNN)
 
 ADD_EXECUTABLE(alexnet-parallel alexnet-parallel.cc)
 ADD_DEPENDENCIES(alexnet-parallel singa)
-TARGET_LINK_LIBRARIES(alexnet-parallel singa protobuf ${SINGA_LIBKER_LIBS})
-SET_TARGET_PROPERTIES(alexnet-parallel PROPERTIES LINK_FLAGS "${LINK_FLAGS} -pthread")
+TARGET_LINK_LIBRARIES(alexnet-parallel singa)
+#SET_TARGET_PROPERTIES(alexnet-parallel PROPERTIES LINK_FLAGS "${LINK_FLAGS} -pthread")
 
 ADD_EXECUTABLE(vgg-parallel vgg-parallel.cc)
 ADD_DEPENDENCIES(vgg-parallel singa)
-TARGET_LINK_LIBRARIES(vgg-parallel singa protobuf ${SINGA_LIBKER_LIBS})
-SET_TARGET_PROPERTIES(vgg-parallel PROPERTIES LINK_FLAGS "${LINK_FLAGS} -pthread")
+TARGET_LINK_LIBRARIES(vgg-parallel singa)
+#SET_TARGET_PROPERTIES(vgg-parallel PROPERTIES LINK_FLAGS "${LINK_FLAGS} -pthread")
 
-ENDIF(USE_CUDNN)
\ No newline at end of file
+ENDIF(USE_CUDNN)

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/932a0cd4/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8ef4732..709894b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -95,6 +95,7 @@ ADD_DEPENDENCIES(singa_objects copy_protobuf)
 IF(UNIX OR APPLE)
   ADD_LIBRARY(singa SHARED $<TARGET_OBJECTS:singa_objects> ${cuda_objs})
   TARGET_LINK_LIBRARIES(singa ${SINGA_LINKER_LIBS})
+  SET_TARGET_PROPERTIES(singa PROPERTIES LINK_FLAGS "")
 ENDIF()
 
 #pass configure infor to swig

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/932a0cd4/test/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index e1487d2..79e481c 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -33,7 +33,7 @@ LIST(REMOVE_ITEM singa_test_source "singa/test_ep.cc")
 ADD_EXECUTABLE(test_singa "gtest/gtest_main.cc" ${singa_test_source})
 ADD_DEPENDENCIES(test_singa singa)
 #MESSAGE(STATUS "link libs" ${singa_linker_libs})
-TARGET_LINK_LIBRARIES(test_singa gtest singa ${SINGA_LINKER_LIBS})
+TARGET_LINK_LIBRARIES(test_singa gtest singa )
 IF(UNIX AND (NOT APPLE))
     LIST(APPEND LINK_FLAGS "-pthread")
 ENDIF()


[2/6] incubator-singa git commit: SINGA-255 Compile mandatory depedent libaries together with SINGA code

Posted by wa...@apache.org.
SINGA-255 Compile mandatory depedent libaries together with SINGA code

Change .gitmodules and default options.

SINGA-255 Compile mandatory depedent libaries together with SINGA code

Move cnmem to exportproject instead of git submodules.


Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/a98446f3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/a98446f3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/a98446f3

Branch: refs/heads/master
Commit: a98446f30467069648e1e52b4633e99677a85246
Parents: 932a0cd
Author: xiezl <xi...@comp.nus.edu.sg>
Authored: Sun Oct 23 01:36:55 2016 +0800
Committer: xiezl <xi...@comp.nus.edu.sg>
Committed: Tue Oct 25 14:52:22 2016 +0800

----------------------------------------------------------------------
 .gitmodules    |  9 ---------
 CMakeLists.txt | 33 ++++++++++++++++++++++++++-------
 lib/cnmem      |  1 -
 3 files changed, 26 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/a98446f3/.gitmodules
----------------------------------------------------------------------
diff --git a/.gitmodules b/.gitmodules
index fc8ce49..e69de29 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +0,0 @@
-[submodule "lib/cnmem"]
-	path = lib/cnmem
-	url = https://github.com/NVIDIA/cnmem.git
-[submodule "lib/protobuf"]
-	path = lib/protobuf
-	url = https://github.com/google/protobuf.git
-[submodule "lib/OpenBLAS"]
-	path = lib/OpenBLAS
-	url = https://github.com/xianyi/OpenBLAS.git

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/a98446f3/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 464f8d5..f67c7af 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,13 +50,13 @@ OPTION(USE_CUDA "Use Cuda libs" OFF)
 OPTION(USE_CUDNN "Use Cudnn libs" ON)
 OPTION(USE_OPENCV "Use opencv" OFF)
 OPTION(USE_LMDB "Use LMDB libs" OFF)
-OPTION(USE_PYTHON "Generate py wrappers" ON)
+OPTION(USE_PYTHON "Generate py wrappers" OFF)
 OPTION(USE_JAVA "Generate java wrappers" OFF)
 OPTION(USE_OPENCL "Use OpenCL" OFF)
 OPTION(ENABLE_DIST "enable distributed training" OFF)
 OPTION(DISABLE_WARNINGS "disable warnings under windows" ON)
-OPTION(USE_MODULES "Use submodules to compile" ON)
-OPTION(USE_SHARED_LIBS "Use shared library" OFF)
+OPTION(USE_MODULES "Use submodules to compile" OFF)
+OPTION(BUILD_SHARED_LIBS "Use shared library" OFF)
 
 INCLUDE("cmake/Dependencies.cmake")
 #INCLUDE("cmake/Utils.cmake")
@@ -74,9 +74,18 @@ SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
 
 IF (USE_CUDA)
-    ADD_SUBDIRECTORY(lib/cnmem)
-    LIST(APPEND SINGA_LINKER_LIBS cnmem)
-    SET(global_cuda_objs "")
+    include(ExternalProject)
+    ExternalProject_Add(cnmem
+        GIT_REPOSITORY "https://github.com/NVIDIA/cnmem.git"
+        GIT_TAG "master"
+        SOURCE_DIR "cnmem/"
+        CONFIGURE_COMMAND "${CMAKE_COMMAND}"
+        "-H${CMAKE_BINARY_DIR}/cnmem" "-B."
+        "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
+        )
+    #ADD_SUBDIRECTORY(lib/cnmem)
+    #LIST(APPEND SINGA_LINKER_LIBS cnmem)
+    #SET(global_cuda_objs "")
 ENDIF()
 
 # TODO(wangwei) detect the ev lib
@@ -88,7 +97,7 @@ IF (USE_MODULES)
     include(ExternalProject)
     #ADD_SUBDIRECTORY(lib/protobuf/cmake)
     #ADD_SUBDIRECTORY(lib/OpenBLAS)
-    IF(USE_SHARED_LIBS)
+    IF(BUILD_SHARED_LIBS)
         ExternalProject_Add(protobuf
             GIT_REPOSITORY "https://github.com/google/protobuf.git"
             GIT_TAG "2.7.0"
@@ -122,6 +131,16 @@ IF (USE_MODULES)
         BUILD_COMMAND "make" "ONLY_CBLAS=1" 
         INSTALL_COMMAND "make" "PREFIX=${CMAKE_BINARY_DIR}/" "install"
         )
+    IF(USE_CUDA)
+    ExternalProject_Add(cnmem
+        GIT_REPOSITORY "https://github.com/NVIDIA/cnmem.git"
+        GIT_TAG "master"
+        SOURCE_DIR "cnmem/"
+        CONFIGURE_COMMAND "${CMAKE_COMMAND}"
+        "-H${CMAKE_BINARY_DIR}/cnmem" "-B."
+        "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
+        )
+    ENDIF()
 ENDIF()
 
 INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include")

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/a98446f3/lib/cnmem
----------------------------------------------------------------------
diff --git a/lib/cnmem b/lib/cnmem
deleted file mode 160000
index 28a182d..0000000
--- a/lib/cnmem
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 28a182d49529da49f4ac4e3941cec3edf16b3540


[5/6] incubator-singa git commit: SINGA-255 Compile mandatory depedent libaries together with SINGA code

Posted by wa...@apache.org.
SINGA-255 Compile mandatory depedent libaries together with SINGA code

Add To-do to pass the test.

SINGA-255 Compile mandatory depedent libaries together with SINGA code

Fix comments and change cnmem repo address.

SINGA-255 Compile mandatory depedent libaries together with SINGA code

Find protobuf lib paths automatically.

SINGA-255 Compile mandatory depedent libaries together with SINGA code

Add protobuf 2.6.1.

Remove protobuf-2.7.

Make cudnn ON by default.


Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/4826d40a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/4826d40a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/4826d40a

Branch: refs/heads/master
Commit: 4826d40a1a6b67dd322fec5d3f6a5af1a17dc73d
Parents: f2c0b84
Author: xiezl <xi...@comp.nus.edu.sg>
Authored: Mon Oct 24 13:58:06 2016 +0800
Committer: xiezl <xi...@comp.nus.edu.sg>
Committed: Tue Oct 25 14:54:00 2016 +0800

----------------------------------------------------------------------
 CMakeLists.txt           | 41 +++++++++++++++++++++-------------------
 cmake/Dependencies.cmake | 44 +++++++++++++++++++++----------------------
 2 files changed, 44 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/4826d40a/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 58244c7..a07b694 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,14 +49,17 @@ OPTION(USE_CUDA "Use Cuda libs" OFF)
 OPTION(USE_CUDNN "Use Cudnn libs" ON)
 OPTION(USE_OPENCV "Use opencv" OFF)
 OPTION(USE_LMDB "Use LMDB libs" OFF)
-OPTION(USE_PYTHON "Generate py wrappers" OFF)
+OPTION(USE_PYTHON "Generate py wrappers" ON)
 OPTION(USE_JAVA "Generate java wrappers" OFF)
 OPTION(USE_OPENCL "Use OpenCL" OFF)
-OPTION(ENABLE_DIST "enable distributed training" OFF)
-OPTION(DISABLE_WARNINGS "disable warnings under windows" ON)
-OPTION(USE_MODULES "Use submodules to compile" OFF)
+OPTION(ENABLE_DIST "Enable distributed training" OFF)
+OPTION(DISABLE_WARNINGS "Disable warnings under windows" ON)
+OPTION(USE_MODULES "Compile dependent libs as submodules together with singa" OFF)
 #OPTION(USE_SHARED_LIBS "Use shared library" OFF)
 
+# TODO: remove all USE_CBLAS in codes
+SET(USE_CBLAS ON)
+
 INCLUDE("cmake/Dependencies.cmake")
 #INCLUDE("cmake/Utils.cmake")
 ADD_DEFINITIONS(-DUSE_CMAKE)
@@ -75,8 +78,8 @@ SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
 IF (USE_CUDA)
     include(ExternalProject)
     ExternalProject_Add(cnmem
-        GIT_REPOSITORY "https://github.com/NVIDIA/cnmem.git"
-        GIT_TAG "28a182d"
+        GIT_REPOSITORY "https://github.com/nusdbsystem/cnmem.git"
+        GIT_TAG "master"
         SOURCE_DIR "cnmem/"
         CONFIGURE_COMMAND "${CMAKE_COMMAND}"
         "-H${CMAKE_BINARY_DIR}/cnmem" "-B."
@@ -107,19 +110,19 @@ IF (USE_MODULES)
     #        BUILD_COMMAND "${CMAKE_COMMAND}" --build "." 
     #        )
     #ELSE()
-        ExternalProject_Add(protobuf
-            GIT_REPOSITORY "https://github.com/google/protobuf.git"
-            #GIT_TAG "2.7.0"
-            GIT_TAG "f56542f"
-            SOURCE_DIR "protobuf/" 
-            CONFIGURE_COMMAND "${CMAKE_COMMAND}"
-            "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B."
-            "-Dprotobuf_BUILD_TESTS=OFF" "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
-            "-Dprotobuf_BUILD_SHARED_LIBS=OFF" "-DCMAKE_C_FLAGS=-fPIC"
-            "-DCMAKE_CXX_FLAGS=-fPIC"
-            BUILD_COMMAND "${CMAKE_COMMAND}" --build "." 
-            )
-        #ENDIF()
+    #ENDIF()
+    ExternalProject_Add(protobuf
+        DOWNLOAD_COMMAND "wget"
+        "http://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz"
+        "-O" "protobuf-2.6.1.tar.gz"
+        UPDATE_COMMAND "tar" "zxvf"
+        "${CMAKE_BINARY_DIR}/protobuf-prefix/src/protobuf-2.6.1.tar.gz" "-C" ".."
+        SOURCE_DIR "protobuf-2.6.1/" 
+        BUILD_IN_SOURCE 1
+        CONFIGURE_COMMAND "./configure" "--disable-shared"
+        "--prefix=${CMAKE_BINARY_DIR}/" "CXXFLAGS=-fPIC"
+        INSTALL_COMMAND "make" "install"
+        )
     ExternalProject_Add(openblas
         GIT_REPOSITORY "https://github.com/xianyi/OpenBLAS.git"
         #GIT_TAG "develop"

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/4826d40a/cmake/Dependencies.cmake
----------------------------------------------------------------------
diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
index ed49eaf..d5bfbd9 100644
--- a/cmake/Dependencies.cmake
+++ b/cmake/Dependencies.cmake
@@ -34,32 +34,32 @@ IF(USE_MODULES)
     #        SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.so")
     #        INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
     #        LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
-            #ENDIF()
-            #ELSE()
-        include(FindProtobuf)
-        SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
-        SET(PROTOBUF_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.a")
-        SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.a")
-        SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
-        INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
-        LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
-        #IF(USE_CBLAS)
-            SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
-            SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.a")
-            INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
-            LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
-            #ENDIF()
-            #ENDIF()
+    #ENDIF()
+    #ELSE()
+    include(FindProtobuf)
+    SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+    SET(PROTOBUF_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.a")
+    SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.a")
+    SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
+    INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
+    LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
+    #IF(USE_CBLAS)
+    SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+    SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.a")
+    INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
+    LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
+    #ENDIF()
+    #ENDIF()
 ELSE()
     FIND_PACKAGE( Protobuf REQUIRED )
     #MESSAGE(STATUS "proto libs " ${PROTOBUF_LIBRARY})
     LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
     #IF(USE_CBLAS)
-        FIND_PACKAGE(CBLAS REQUIRED)
-        INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
-        LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
-        #MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}")
-        #ENDIF()
+    FIND_PACKAGE(CBLAS REQUIRED)
+    INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
+    LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
+    #MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}")
+    #ENDIF()
 ENDIF()
 
 #INCLUDE("cmake/ProtoBuf.cmake")
@@ -83,7 +83,7 @@ ENDIF()
 IF(USE_CUDA)
     INCLUDE("cmake/Cuda.cmake")
     SET(CNMEM_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
-    SET(CNMEM_LIBRARY "${CMAKE_BINARY_DIR}/lib/libcnmem.so")
+    SET(CNMEM_LIBRARY "${CMAKE_BINARY_DIR}/lib/libcnmem.a")
     LIST(APPEND SINGA_LINKER_LIBS ${CNMEM_LIBRARY})
 ELSE()
     SET(USE_CUDNN FALSE)


[3/6] incubator-singa git commit: SINGA-267 Add spatial mode in batch normalization layer

Posted by wa...@apache.org.
SINGA-267 Add spatial mode in batch normalization layer

Revise batchnorm test cases for spatial mode.


Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/f2c0b843
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/f2c0b843
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/f2c0b843

Branch: refs/heads/master
Commit: f2c0b843b4018622e0f0caa472d7d2dc259ce1f8
Parents: 47e38c8
Author: WANG Ji <ij...@gmail.com>
Authored: Sun Oct 23 20:54:38 2016 +0800
Committer: xiezl <xi...@comp.nus.edu.sg>
Committed: Tue Oct 25 14:52:34 2016 +0800

----------------------------------------------------------------------
 src/model/layer/batchnorm.cc |  2 +-
 test/singa/test_batchnorm.cc | 44 ++++++++++++++++++---------------------
 2 files changed, 21 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/f2c0b843/src/model/layer/batchnorm.cc
----------------------------------------------------------------------
diff --git a/src/model/layer/batchnorm.cc b/src/model/layer/batchnorm.cc
index afe9a36..e07dfd9 100644
--- a/src/model/layer/batchnorm.cc
+++ b/src/model/layer/batchnorm.cc
@@ -117,7 +117,7 @@ const Tensor BatchNorm::Forward(int flag, const Tensor& input) {
       bnBias_.Reshape(Shape{channels_, 1});
 
       std::vector<Tensor> mean_stack, var_stack, scale_stack, bias_stack;
-      for (int i = 0; i < height_ * width_; ++i) {
+      for (unsigned i = 0; i < height_ * width_; ++i) {
         mean_stack.push_back(runningMean_);
         var_stack.push_back(runningVariance_);
         scale_stack.push_back(bnScale_);

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/f2c0b843/test/singa/test_batchnorm.cc
----------------------------------------------------------------------
diff --git a/test/singa/test_batchnorm.cc b/test/singa/test_batchnorm.cc
index c8efbf9..fadba42 100644
--- a/test/singa/test_batchnorm.cc
+++ b/test/singa/test_batchnorm.cc
@@ -43,19 +43,19 @@ TEST(BatchNorm, Setup) {
 TEST(BatchNorm, Forward) {
   BatchNorm batchnorm;
   const float x[] = {1, 2, 3, 4};
-  Tensor in(Shape{2, 1, 2, 1});
-  in.CopyDataFromHostPtr(x, 2 * 1 * 2 * 1);
+  Tensor in(Shape{2, 2});
+  in.CopyDataFromHostPtr(x, 2 * 2);
   const float alpha_[] = {1, 1};
-  Tensor alpha(Shape{1, 2});
-  alpha.CopyDataFromHostPtr(alpha_, 1 * 2);
+  Tensor alpha(Shape{2});
+  alpha.CopyDataFromHostPtr(alpha_, 2);
 
   const float beta_[] = {2, 2};
-  Tensor beta(Shape{1, 2});
-  beta.CopyDataFromHostPtr(beta_, 1 * 2);
+  Tensor beta(Shape{2});
+  beta.CopyDataFromHostPtr(beta_, 2);
   singa::LayerConf conf;
   singa::BatchNormConf *batchnorm_conf = conf.mutable_batchnorm_conf();
   batchnorm_conf->set_factor(1);
-  batchnorm.Setup(Shape{1, 2, 1}, conf);
+  batchnorm.Setup(Shape{2}, conf);
   batchnorm.set_bnScale(alpha);
   batchnorm.set_bnBias(beta);
   batchnorm.set_runningMean(beta);
@@ -63,11 +63,9 @@ TEST(BatchNorm, Forward) {
   Tensor out = batchnorm.Forward(kTrain, in);
   const float *outptr = out.data<float>();
   const auto &shape = out.shape();
-  EXPECT_EQ(4u, shape.size());
+  EXPECT_EQ(2u, shape.size());
   EXPECT_EQ(2u, shape[0]);
-  EXPECT_EQ(1u, shape[1]);
-  EXPECT_EQ(2u, shape[2]);
-  EXPECT_EQ(1u, shape[3]);
+  EXPECT_EQ(2u, shape[1]);
   EXPECT_NEAR(1.0f, outptr[0], 1e-4f);
   EXPECT_NEAR(1.0f, outptr[1], 1e-4f);
   EXPECT_NEAR(3.0f, outptr[2], 1e-4f);
@@ -77,22 +75,22 @@ TEST(BatchNorm, Forward) {
 TEST(BatchNorm, Backward) {
   BatchNorm batchnorm;
   const float x[] = {1, 2, 3, 4};
-  Tensor in(Shape{2, 1, 2, 1});
-  in.CopyDataFromHostPtr(x, 2 * 1 * 2 * 1);
+  Tensor in(Shape{2, 2});
+  in.CopyDataFromHostPtr(x, 2 * 2);
   const float dy[] = {4, 3, 2, 1};
-  Tensor dy_in(Shape{2, 1, 2, 1});
-  dy_in.CopyDataFromHostPtr(dy, 2 * 1 * 2 * 1);
+  Tensor dy_in(Shape{2, 2});
+  dy_in.CopyDataFromHostPtr(dy, 2 * 2);
   const float alpha_[] = {1, 1};
-  Tensor alpha(Shape{1, 2});
-  alpha.CopyDataFromHostPtr(alpha_, 1 * 2);
+  Tensor alpha(Shape{2});
+  alpha.CopyDataFromHostPtr(alpha_, 2);
 
   const float beta_[] = {0, 0};
-  Tensor beta(Shape{1, 2});
-  beta.CopyDataFromHostPtr(beta_, 1 * 2);
+  Tensor beta(Shape{2});
+  beta.CopyDataFromHostPtr(beta_, 2);
   singa::LayerConf conf;
   singa::BatchNormConf *batchnorm_conf = conf.mutable_batchnorm_conf();
   batchnorm_conf->set_factor(1);
-  batchnorm.Setup(Shape{1, 2, 1}, conf);
+  batchnorm.Setup(Shape{2}, conf);
   batchnorm.set_bnScale(alpha);
   batchnorm.set_bnBias(beta);
   batchnorm.set_runningMean(beta);
@@ -101,11 +99,9 @@ TEST(BatchNorm, Backward) {
   auto ret = batchnorm.Backward(kTrain, dy_in);
   Tensor dx = ret.first;
   const auto & shape = dx.shape();
-  EXPECT_EQ(4u, shape.size());
+  EXPECT_EQ(2u, shape.size());
   EXPECT_EQ(2u, shape[0]);
-  EXPECT_EQ(1u, shape[1]);
-  EXPECT_EQ(2u, shape[2]);
-  EXPECT_EQ(1u, shape[3]);
+  EXPECT_EQ(2u, shape[1]);
   const float *dxptr = ret.first.data<float>();
   EXPECT_NEAR(.0f, dxptr[0], 1e-4f);
   EXPECT_NEAR(.0f, dxptr[1], 1e-4f);


[6/6] incubator-singa git commit: Merge PR #272 for compiling depedent libs together with SINGA

Posted by wa...@apache.org.
Merge PR #272 for compiling depedent libs together with SINGA


Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/1117a16e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/1117a16e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/1117a16e

Branch: refs/heads/master
Commit: 1117a16eb1cdf672d66cbead740c5bfa4b933d55
Parents: fac3af9 4826d40
Author: Wei Wang <wa...@comp.nus.edu.sg>
Authored: Tue Oct 25 16:42:08 2016 +0800
Committer: Wei Wang <wa...@comp.nus.edu.sg>
Committed: Tue Oct 25 16:42:08 2016 +0800

----------------------------------------------------------------------
 .gitmodules                     |  3 --
 CMakeLists.txt                  | 98 ++++++++++++++++++++++++++++--------
 cmake/Dependencies.cmake        | 89 ++++++++++++++++++++++----------
 examples/cifar10/CMakeLists.txt | 12 ++---
 lib/cnmem                       |  1 -
 src/CMakeLists.txt              |  1 +
 test/CMakeLists.txt             |  2 +-
 7 files changed, 146 insertions(+), 60 deletions(-)
----------------------------------------------------------------------



[4/6] incubator-singa git commit: SINGA-255 Compile mandatory depedent libaries together with SINGA code

Posted by wa...@apache.org.
SINGA-255 Compile mandatory depedent libaries together with SINGA code

Add git tag and remove some options.


Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/47e38c87
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/47e38c87
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/47e38c87

Branch: refs/heads/master
Commit: 47e38c87c574f012b6aa5238c5e7a06a6bdf348e
Parents: a98446f
Author: xiezl <xi...@comp.nus.edu.sg>
Authored: Mon Oct 24 13:45:10 2016 +0800
Committer: xiezl <xi...@comp.nus.edu.sg>
Committed: Tue Oct 25 14:52:34 2016 +0800

----------------------------------------------------------------------
 CMakeLists.txt           | 59 +++++++++++++++++-----------------------
 cmake/Dependencies.cmake | 63 +++++++++++++++++++++++--------------------
 2 files changed, 58 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/47e38c87/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f67c7af..58244c7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,7 +20,6 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 
 PROJECT(singa)
 SET(PACKAGE_VERSION "1.0.0")
-MESSAGE(STATUS "CMAKE paths: ${CMAKE_PREFIX_PATH} test ${CMAKE_SYSTEM_PREFIX_PATH}")
 
 LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Thirdparty)
 #message(STATUS "module path: ${CMAKE_MODULE_PATH}")
@@ -34,7 +33,7 @@ IF(WIN32)
     IF (MSVC)
         MESSAGE(STATUS "Using msvc compiler")
         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SCL_SECURE_NO_WARNINGS")
-        MESSAGE(STATUS "Using msvc compiler ${CMAKE_CXX_FLAGS}")
+        #MESSAGE(STATUS "Using msvc compiler ${CMAKE_CXX_FLAGS}")
     ENDIF()
 ENDIF()
 IF(CMAKE_BUILD_TYPE=Debug)
@@ -42,10 +41,10 @@ IF(CMAKE_BUILD_TYPE=Debug)
 ENDIF()
 #message(STATUS "${CMAKE_CXX_FLAGS}")
 SET(SINGA_INCLUDE_DIR
-    "${CMAKE_SOURCE_DIR}/include;${CMAKE_SOURCE_DIR}/lib/cnmem/include;${PROJECT_BINARY_DIR}")
+    "${CMAKE_SOURCE_DIR}/include;${PROJECT_BINARY_DIR}")
 INCLUDE_DIRECTORIES(${SINGA_INCLUDE_DIR})
 
-OPTION(USE_CBLAS "Use CBlas libs" ON)
+#OPTION(USE_CBLAS "Use CBlas libs" ON)
 OPTION(USE_CUDA "Use Cuda libs" OFF)
 OPTION(USE_CUDNN "Use Cudnn libs" ON)
 OPTION(USE_OPENCV "Use opencv" OFF)
@@ -56,7 +55,7 @@ OPTION(USE_OPENCL "Use OpenCL" OFF)
 OPTION(ENABLE_DIST "enable distributed training" OFF)
 OPTION(DISABLE_WARNINGS "disable warnings under windows" ON)
 OPTION(USE_MODULES "Use submodules to compile" OFF)
-OPTION(BUILD_SHARED_LIBS "Use shared library" OFF)
+#OPTION(USE_SHARED_LIBS "Use shared library" OFF)
 
 INCLUDE("cmake/Dependencies.cmake")
 #INCLUDE("cmake/Utils.cmake")
@@ -77,7 +76,7 @@ IF (USE_CUDA)
     include(ExternalProject)
     ExternalProject_Add(cnmem
         GIT_REPOSITORY "https://github.com/NVIDIA/cnmem.git"
-        GIT_TAG "master"
+        GIT_TAG "28a182d"
         SOURCE_DIR "cnmem/"
         CONFIGURE_COMMAND "${CMAKE_COMMAND}"
         "-H${CMAKE_BINARY_DIR}/cnmem" "-B."
@@ -85,7 +84,7 @@ IF (USE_CUDA)
         )
     #ADD_SUBDIRECTORY(lib/cnmem)
     #LIST(APPEND SINGA_LINKER_LIBS cnmem)
-    #SET(global_cuda_objs "")
+    SET(global_cuda_objs "")
 ENDIF()
 
 # TODO(wangwei) detect the ev lib
@@ -95,24 +94,23 @@ ENDIF()
 
 IF (USE_MODULES)
     include(ExternalProject)
-    #ADD_SUBDIRECTORY(lib/protobuf/cmake)
-    #ADD_SUBDIRECTORY(lib/OpenBLAS)
-    IF(BUILD_SHARED_LIBS)
+    #IF(USE_SHARED_LIBS)
+    #    ExternalProject_Add(protobuf
+    #        GIT_REPOSITORY "https://github.com/google/protobuf.git"
+    #        GIT_TAG "2.7.0"
+    #        SOURCE_DIR "protobuf/" 
+    #        CONFIGURE_COMMAND "${CMAKE_COMMAND}"
+    #        "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B."
+    #        "-Dprotobuf_BUILD_TESTS=OFF" "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
+    #        "-Dprotobuf_BUILD_SHARED_LIBS=ON" "-DCMAKE_C_FLAGS=-fPIC"
+    #        "-DCMAKE_CXX_FLAGS=-fPIC"
+    #        BUILD_COMMAND "${CMAKE_COMMAND}" --build "." 
+    #        )
+    #ELSE()
         ExternalProject_Add(protobuf
             GIT_REPOSITORY "https://github.com/google/protobuf.git"
-            GIT_TAG "2.7.0"
-            SOURCE_DIR "protobuf/" 
-            CONFIGURE_COMMAND "${CMAKE_COMMAND}"
-            "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B."
-            "-Dprotobuf_BUILD_TESTS=OFF" "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
-            "-Dprotobuf_BUILD_SHARED_LIBS=ON" "-DCMAKE_C_FLAGS=-fPIC"
-            "-DCMAKE_CXX_FLAGS=-fPIC"
-            BUILD_COMMAND "${CMAKE_COMMAND}" --build "." 
-            )
-    ELSE()
-        ExternalProject_Add(protobuf
-            GIT_REPOSITORY "https://github.com/google/protobuf.git"
-            GIT_TAG "2.7.0"
+            #GIT_TAG "2.7.0"
+            GIT_TAG "f56542f"
             SOURCE_DIR "protobuf/" 
             CONFIGURE_COMMAND "${CMAKE_COMMAND}"
             "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B."
@@ -121,26 +119,17 @@ IF (USE_MODULES)
             "-DCMAKE_CXX_FLAGS=-fPIC"
             BUILD_COMMAND "${CMAKE_COMMAND}" --build "." 
             )
-    ENDIF()
+        #ENDIF()
     ExternalProject_Add(openblas
         GIT_REPOSITORY "https://github.com/xianyi/OpenBLAS.git"
-        GIT_TAG "develop"
+        #GIT_TAG "develop"
+        GIT_TAG "f3419e6"
         SOURCE_DIR "openblas/" 
         BUILD_IN_SOURCE 1
         CONFIGURE_COMMAND ""
         BUILD_COMMAND "make" "ONLY_CBLAS=1" 
         INSTALL_COMMAND "make" "PREFIX=${CMAKE_BINARY_DIR}/" "install"
         )
-    IF(USE_CUDA)
-    ExternalProject_Add(cnmem
-        GIT_REPOSITORY "https://github.com/NVIDIA/cnmem.git"
-        GIT_TAG "master"
-        SOURCE_DIR "cnmem/"
-        CONFIGURE_COMMAND "${CMAKE_COMMAND}"
-        "-H${CMAKE_BINARY_DIR}/cnmem" "-B."
-        "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
-        )
-    ENDIF()
 ENDIF()
 
 INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include")

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/47e38c87/cmake/Dependencies.cmake
----------------------------------------------------------------------
diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
index 572a43b..ed49eaf 100644
--- a/cmake/Dependencies.cmake
+++ b/cmake/Dependencies.cmake
@@ -19,45 +19,47 @@
 SET(SINGA_LINKER_LIBS "")
 
 IF(USE_MODULES)
-    IF(USE_SHARED_LIBS)
+    #IF(USE_SHARED_LIBS)
+    #    include(FindProtobuf)
+    #    SET(CMAKE_INSTALL_RPATH "${CMAKE_BINARY_DIR}/lib")
+    #    link_directories(${CMAKE_BINARY_DIR}/lib)
+    #    SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+    #    SET(PROTOBUF_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.so")
+    #    SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.so")
+    #    SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
+    #    INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
+    #    LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
+    #    #IF(USE_CBLAS)
+    #        SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+    #        SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.so")
+    #        INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
+    #        LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
+            #ENDIF()
+            #ELSE()
         include(FindProtobuf)
         SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
-        SET(PROTOBUF_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libprotobuf.so")
-        SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.so")
-        SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
-        INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
-        LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES})
-        IF(USE_CBLAS)
-            SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
-            SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.so")
-            INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
-            LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
-        ENDIF()
-    ELSE()
-        include(FindProtobuf)
-        SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
-        SET(PROTOBUF_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libprotobuf.a")
+        SET(PROTOBUF_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.a")
         SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.a")
         SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
         INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
-        LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES})
-        IF(USE_CBLAS)
+        LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
+        #IF(USE_CBLAS)
             SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
             SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.a")
             INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
             LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
-        ENDIF()
-    ENDIF()
+            #ENDIF()
+            #ENDIF()
 ELSE()
     FIND_PACKAGE( Protobuf REQUIRED )
-    MESSAGE(STATUS "proto libs " ${PROTOBUF_LIBRARIES})
-    LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES})
-    IF(USE_CBLAS)
+    #MESSAGE(STATUS "proto libs " ${PROTOBUF_LIBRARY})
+    LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
+    #IF(USE_CBLAS)
         FIND_PACKAGE(CBLAS REQUIRED)
         INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
         LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
-        MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}")
-    ENDIF()
+        #MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}")
+        #ENDIF()
 ENDIF()
 
 #INCLUDE("cmake/ProtoBuf.cmake")
@@ -65,7 +67,7 @@ ENDIF()
 
 FIND_PACKAGE(Glog)
 IF(GLOG_FOUND)
-    MESSAGE(STATUS "GLOG FOUND at ${GLOG_INCLUDE_DIR}")
+    #MESSAGE(STATUS "GLOG FOUND at ${GLOG_INCLUDE_DIR}")
     ADD_DEFINITIONS("-DUSE_GLOG")
     LIST(APPEND SINGA_LINKER_LIBS ${GLOG_LIBRARIES})
     INCLUDE_DIRECTORIES(${GLOG_INCLUDE_DIR})
@@ -75,11 +77,14 @@ IF(USE_LMDB)
     FIND_PACKAGE(LMDB REQUIRED)
     INCLUDE_DIRECTORIES(SYSTEM ${LMDB_INCLUDE_DIR})
     LIST(APPEND SINGA_LINKER_LIBS ${LMDB_LIBRARIES})
-    MESSAGE(STATUS "FOUND lmdb at ${LMDB_INCLUDE_DIR}")
+    #MESSAGE(STATUS "FOUND lmdb at ${LMDB_INCLUDE_DIR}")
 ENDIF()
 
 IF(USE_CUDA)
     INCLUDE("cmake/Cuda.cmake")
+    SET(CNMEM_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
+    SET(CNMEM_LIBRARY "${CMAKE_BINARY_DIR}/lib/libcnmem.so")
+    LIST(APPEND SINGA_LINKER_LIBS ${CNMEM_LIBRARY})
 ELSE()
     SET(USE_CUDNN FALSE)
 ENDIF()
@@ -89,14 +94,14 @@ IF(USE_OPENCL)
     IF(NOT OpenCL_FOUND)
         MESSAGE(SEND_ERROR "OpenCL was requested, but not found.")
     ELSE()
-        MESSAGE(STATUS "Found OpenCL headers at ${OpenCL_INCLUDE_DIRS}")
+        #MESSAGE(STATUS "Found OpenCL headers at ${OpenCL_INCLUDE_DIRS}")
         INCLUDE_DIRECTORIES(SYSTEM ${OpenCL_INCLUDE_DIR})
         LIST(APPEND SINGA_LINKER_LIBS ${OpenCL_LIBRARIES})
         FIND_PACKAGE(ViennaCL REQUIRED)
         IF(NOT ViennaCL_FOUND)
             MESSAGE(SEND_ERROR "ViennaCL is required if OpenCL is enabled.")
         ELSE()
-            MESSAGE(STATUS "Found ViennaCL headers at ${ViennaCL_INCLUDE_DIR}")
+            #MESSAGE(STATUS "Found ViennaCL headers at ${ViennaCL_INCLUDE_DIR}")
             INCLUDE_DIRECTORIES(SYSTEM ${ViennaCL_INCLUDE_DIR})
             LIST(APPEND SINGA_LINKER_LIBS ${ViennaCL_LIBRARIES})
         ENDIF()