forked from apache/mxnet
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
90e40e4
commit c6d2a84
Showing
8 changed files
with
708 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
cmake_minimum_required(VERSION 2.8.7) | ||
|
||
project(mxnet C CXX) | ||
|
||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) | ||
|
||
include(cmake/Utils.cmake) | ||
include(mshadow/cmake/mshadow.cmake) | ||
include(mshadow/cmake/Utils.cmake) | ||
include(mshadow/cmake/Cuda.cmake) | ||
|
||
mxnet_option(USE_OPENCV "Build with OpenCV support" ON) | ||
mxnet_option(USE_OPENMP "Build with Openmp support" ON) | ||
mxnet_option(USE_CUDNN "Build with cudnn support" ON) | ||
|
||
include_directories("include") | ||
include_directories("mshadow") | ||
include_directories("dmlc-core/include") | ||
|
||
add_subdirectory("dmlc-core") | ||
|
||
|
||
add_definitions(-DDMLC_USE_CXX11) | ||
add_definitions(-D_SCL_SECURE_NO_WARNINGS) | ||
add_definitions(-D_CRT_SECURE_NO_WARNINGS) | ||
add_definitions(-DMXNET_EXPORTS) | ||
|
||
|
||
if(USE_OPENCV) | ||
find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs) | ||
if(NOT OpenCV_FOUND) # if not OpenCV 3.x, then imgcodecs are not found | ||
find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc) | ||
endif() | ||
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS}) | ||
list(APPEND mshadow_LINKER_LIBS ${OpenCV_LIBS}) | ||
message(STATUS "OpenCV found (${OpenCV_CONFIG_PATH})") | ||
add_definitions(-DMXNET_USE_OPENCV=1) | ||
endif() | ||
|
||
if(USE_OPENMP) | ||
FIND_PACKAGE( OpenMP REQUIRED) | ||
if(OPENMP_FOUND) | ||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") | ||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") | ||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") | ||
endif() | ||
endif() | ||
|
||
# cudnn detection | ||
if(USE_CUDNN) | ||
detect_cuDNN() | ||
if(HAVE_CUDNN) | ||
add_definitions(-DUSE_CUDNN) | ||
include_directories(SYSTEM ${CUDNN_INCLUDE}) | ||
list(APPEND mshadow_LINKER_LIBS ${CUDNN_LIBRARY}) | ||
add_definitions(-DMSHADOW_USE_CUDNN=1) | ||
endif() | ||
endif() | ||
|
||
mxnet_source_group("Source" GLOB_RECURSE "src/*.cc") | ||
mxnet_source_group("Source\\Cuda" GLOB_RECURSE "src/*.cu") | ||
|
||
|
||
FILE(GLOB_RECURSE SOURCE "src/*.cc") | ||
FILE(GLOB_RECURSE cuda "src/*.cu") | ||
|
||
if(USE_CUDA) | ||
# define preprocessor macro so that we will not include the generated forcelink header | ||
mshadow_cuda_compile(cuda_objs ${cuda}) | ||
list(APPEND SOURCE ${cuda_objs} ${cuda}) | ||
endif() | ||
|
||
add_library(mxnet SHARED ${SOURCE}) | ||
target_link_libraries(mxnet ${mshadow_LINKER_LIBS}) | ||
target_link_libraries(mxnet dmlccore) | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# Find the Atlas (and Lapack) libraries | ||
# | ||
# The following variables are optionally searched for defaults | ||
# Atlas_ROOT_DIR: Base directory where all Atlas components are found | ||
# | ||
# The following are set after configuration is done: | ||
# Atlas_FOUND | ||
# Atlas_INCLUDE_DIRS | ||
# Atlas_LIBRARIES | ||
# Atlas_LIBRARYRARY_DIRS | ||
|
||
set(Atlas_INCLUDE_SEARCH_PATHS | ||
/usr/include/atlas | ||
/usr/include/atlas-base | ||
$ENV{Atlas_ROOT_DIR} | ||
$ENV{Atlas_ROOT_DIR}/include | ||
) | ||
|
||
set(Atlas_LIB_SEARCH_PATHS | ||
/usr/lib/atlas | ||
/usr/lib/atlas-base | ||
$ENV{Atlas_ROOT_DIR} | ||
$ENV{Atlas_ROOT_DIR}/lib | ||
) | ||
|
||
find_path(Atlas_CBLAS_INCLUDE_DIR NAMES cblas.h PATHS ${Atlas_INCLUDE_SEARCH_PATHS}) | ||
find_path(Atlas_CLAPACK_INCLUDE_DIR NAMES clapack.h PATHS ${Atlas_INCLUDE_SEARCH_PATHS}) | ||
|
||
find_library(Atlas_CBLAS_LIBRARY NAMES ptcblas_r ptcblas cblas_r cblas PATHS ${Atlas_LIB_SEARCH_PATHS}) | ||
find_library(Atlas_BLAS_LIBRARY NAMES atlas_r atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) | ||
find_library(Atlas_LAPACK_LIBRARY NAMES alapack_r alapack lapack_atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) | ||
|
||
set(LOOKED_FOR | ||
Atlas_CBLAS_INCLUDE_DIR | ||
Atlas_CLAPACK_INCLUDE_DIR | ||
|
||
Atlas_CBLAS_LIBRARY | ||
Atlas_BLAS_LIBRARY | ||
Atlas_LAPACK_LIBRARY | ||
) | ||
|
||
include(FindPackageHandleStandardArgs) | ||
find_package_handle_standard_args(Atlas DEFAULT_MSG ${LOOKED_FOR}) | ||
|
||
if(ATLAS_FOUND) | ||
set(Atlas_INCLUDE_DIR ${Atlas_CBLAS_INCLUDE_DIR} ${Atlas_CLAPACK_INCLUDE_DIR}) | ||
set(Atlas_LIBRARIES ${Atlas_LAPACK_LIBRARY} ${Atlas_CBLAS_LIBRARY} ${Atlas_BLAS_LIBRARY}) | ||
mark_as_advanced(${LOOKED_FOR}) | ||
|
||
message(STATUS "Found Atlas (include: ${Atlas_CBLAS_INCLUDE_DIR}, library: ${Atlas_BLAS_LIBRARY})") | ||
endif(ATLAS_FOUND) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
# Find the MKL libraries | ||
# | ||
# Options: | ||
# | ||
# MKL_USE_SINGLE_DYNAMIC_LIBRARY : use single dynamic library interface | ||
# MKL_USE_STATIC_LIBS : use static libraries | ||
# MKL_MULTI_THREADED : use multi-threading | ||
# | ||
# This module defines the following variables: | ||
# | ||
# MKL_FOUND : True mkl is found | ||
# MKL_INCLUDE_DIR : unclude directory | ||
# MKL_LIBRARIES : the libraries to link against. | ||
|
||
|
||
# ---[ Options | ||
mxnet_option(MKL_USE_SINGLE_DYNAMIC_LIBRARY "Use single dynamic library interface" ON) | ||
mxnet_option(MKL_USE_STATIC_LIBS "Use static libraries" OFF IF NOT MKL_USE_SINGLE_DYNAMIC_LIBRARY) | ||
mxnet_option(MKL_MULTI_THREADED "Use multi-threading" ON IF NOT MKL_USE_SINGLE_DYNAMIC_LIBRARY) | ||
|
||
# ---[ Root folders | ||
set(INTEL_ROOT "/opt/intel" CACHE PATH "Folder contains intel libs") | ||
find_path(MKL_ROOT include/mkl.h PATHS $ENV{MKL_ROOT} ${INTEL_ROOT}/mkl | ||
DOC "Folder contains MKL") | ||
|
||
# ---[ Find include dir | ||
find_path(MKL_INCLUDE_DIR mkl.h PATHS ${MKL_ROOT} PATH_SUFFIXES include) | ||
set(__looked_for MKL_INCLUDE_DIR) | ||
|
||
# ---[ Find libraries | ||
if(CMAKE_SIZEOF_VOID_P EQUAL 4) | ||
set(__path_suffixes lib lib/ia32) | ||
else() | ||
set(__path_suffixes lib lib/intel64) | ||
endif() | ||
|
||
set(__mkl_libs "") | ||
if(MKL_USE_SINGLE_DYNAMIC_LIBRARY) | ||
list(APPEND __mkl_libs rt) | ||
else() | ||
if(CMAKE_SIZEOF_VOID_P EQUAL 4) | ||
if(WIN32) | ||
list(APPEND __mkl_libs intel_c) | ||
else() | ||
list(APPEND __mkl_libs intel gf) | ||
endif() | ||
else() | ||
list(APPEND __mkl_libs intel_lp64 gf_lp64) | ||
endif() | ||
|
||
if(MKL_MULTI_THREADED) | ||
list(APPEND __mkl_libs intel_thread) | ||
else() | ||
list(APPEND __mkl_libs sequential) | ||
endif() | ||
|
||
list(APPEND __mkl_libs core cdft_core) | ||
endif() | ||
|
||
|
||
foreach (__lib ${__mkl_libs}) | ||
set(__mkl_lib "mkl_${__lib}") | ||
string(TOUPPER ${__mkl_lib} __mkl_lib_upper) | ||
|
||
if(MKL_USE_STATIC_LIBS) | ||
set(__mkl_lib "lib${__mkl_lib}.a") | ||
endif() | ||
|
||
find_library(${__mkl_lib_upper}_LIBRARY | ||
NAMES ${__mkl_lib} | ||
PATHS ${MKL_ROOT} "${MKL_INCLUDE_DIR}/.." | ||
PATH_SUFFIXES ${__path_suffixes} | ||
DOC "The path to Intel(R) MKL ${__mkl_lib} library") | ||
mark_as_advanced(${__mkl_lib_upper}_LIBRARY) | ||
|
||
list(APPEND __looked_for ${__mkl_lib_upper}_LIBRARY) | ||
list(APPEND MKL_LIBRARIES ${${__mkl_lib_upper}_LIBRARY}) | ||
endforeach() | ||
|
||
|
||
if(NOT MKL_USE_SINGLE_DYNAMIC_LIBRARY) | ||
if (MKL_USE_STATIC_LIBS) | ||
set(__iomp5_libs iomp5 libiomp5mt.lib) | ||
else() | ||
set(__iomp5_libs iomp5 libiomp5md.lib) | ||
endif() | ||
|
||
if(WIN32) | ||
find_path(INTEL_INCLUDE_DIR omp.h PATHS ${INTEL_ROOT} PATH_SUFFIXES include) | ||
list(APPEND __looked_for INTEL_INCLUDE_DIR) | ||
endif() | ||
|
||
find_library(MKL_RTL_LIBRARY ${__iomp5_libs} | ||
PATHS ${INTEL_RTL_ROOT} ${INTEL_ROOT}/compiler ${MKL_ROOT}/.. ${MKL_ROOT}/../compiler | ||
PATH_SUFFIXES ${__path_suffixes} | ||
DOC "Path to Path to OpenMP runtime library") | ||
|
||
list(APPEND __looked_for MKL_RTL_LIBRARY) | ||
list(APPEND MKL_LIBRARIES ${MKL_RTL_LIBRARY}) | ||
endif() | ||
|
||
|
||
include(FindPackageHandleStandardArgs) | ||
find_package_handle_standard_args(MKL DEFAULT_MSG ${__looked_for}) | ||
|
||
if(MKL_FOUND) | ||
message(STATUS "Found MKL (include: ${MKL_INCLUDE_DIR}, lib: ${MKL_LIBRARIES}") | ||
endif() | ||
|
||
mxnet_clear_vars(__looked_for __mkl_libs __path_suffixes __lib_suffix __iomp5_libs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
|
||
|
||
SET(Open_BLAS_INCLUDE_SEARCH_PATHS | ||
/usr/include | ||
/usr/include/openblas | ||
/usr/include/openblas-base | ||
/usr/local/include | ||
/usr/local/include/openblas | ||
/usr/local/include/openblas-base | ||
/opt/OpenBLAS/include | ||
$ENV{OpenBLAS_HOME} | ||
$ENV{OpenBLAS_HOME}/include | ||
) | ||
|
||
SET(Open_BLAS_LIB_SEARCH_PATHS | ||
/lib/ | ||
/lib/openblas-base | ||
/lib64/ | ||
/usr/lib | ||
/usr/lib/openblas-base | ||
/usr/lib64 | ||
/usr/local/lib | ||
/usr/local/lib64 | ||
/opt/OpenBLAS/lib | ||
$ENV{OpenBLAS}cd | ||
$ENV{OpenBLAS}/lib | ||
$ENV{OpenBLAS_HOME} | ||
$ENV{OpenBLAS_HOME}/lib | ||
) | ||
|
||
FIND_PATH(OpenBLAS_INCLUDE_DIR NAMES cblas.h PATHS ${Open_BLAS_INCLUDE_SEARCH_PATHS}) | ||
FIND_LIBRARY(OpenBLAS_LIB NAMES openblas PATHS ${Open_BLAS_LIB_SEARCH_PATHS}) | ||
|
||
SET(OpenBLAS_FOUND ON) | ||
|
||
# Check include files | ||
IF(NOT OpenBLAS_INCLUDE_DIR) | ||
SET(OpenBLAS_FOUND OFF) | ||
MESSAGE(STATUS "Could not find OpenBLAS include. Turning OpenBLAS_FOUND off") | ||
ENDIF() | ||
|
||
# Check libraries | ||
IF(NOT OpenBLAS_LIB) | ||
SET(OpenBLAS_FOUND OFF) | ||
MESSAGE(STATUS "Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off") | ||
ENDIF() | ||
|
||
IF (OpenBLAS_FOUND) | ||
IF (NOT OpenBLAS_FIND_QUIETLY) | ||
MESSAGE(STATUS "Found OpenBLAS libraries: ${OpenBLAS_LIB}") | ||
MESSAGE(STATUS "Found OpenBLAS include: ${OpenBLAS_INCLUDE_DIR}") | ||
ENDIF (NOT OpenBLAS_FIND_QUIETLY) | ||
ELSE (OpenBLAS_FOUND) | ||
IF (OpenBLAS_FIND_REQUIRED) | ||
MESSAGE(FATAL_ERROR "Could not find OpenBLAS") | ||
ENDIF (OpenBLAS_FIND_REQUIRED) | ||
ENDIF (OpenBLAS_FOUND) | ||
|
||
MARK_AS_ADVANCED( | ||
OpenBLAS_INCLUDE_DIR | ||
OpenBLAS_LIB | ||
OpenBLAS | ||
) | ||
|
Oops, something went wrong.