cblas.cmake 3.5 KB
Newer Older
L
lzhao4ever 已提交
1
# Find the CBlas and lapack libraries
2
#
L
Luo Tao 已提交
3
# It will search MKLML, atlas, OpenBlas, reference-cblas in order.
4 5
#
# If any cblas implementation found, the following variable will be set.
L
Luo Tao 已提交
6
#    CBLAS_PROVIDER  # one of MKLML, OPENBLAS, REFERENCE
7
#    CBLAS_INC_DIR   # the include directory for cblas.
8
#    CBLAS_LIBS      # a list of libraries should be linked by paddle.
9 10
#                    # Each library should be full path to object file.

L
liaogang 已提交
11
set(CBLAS_FOUND OFF)
12

T
tensor-tang 已提交
13 14
## Find MKLML First.
if(WITH_MKLML AND MKLML_INC_DIR AND MKLML_LIB)
15
  set(CBLAS_FOUND ON)
T
tensor-tang 已提交
16 17 18
  set(CBLAS_PROVIDER MKLML)
  set(CBLAS_INC_DIR ${MKLML_INC_DIR})
  set(CBLAS_LIBRARIES ${MKLML_LIB})
19

20
  add_definitions(-DPADDLE_WITH_MKLML)
21 22
  add_definitions(-DLAPACK_FOUND)

T
tensor-tang 已提交
23
  message(STATUS "Found cblas and lapack in MKLML "
24 25 26 27
    "(include: ${CBLAS_INC_DIR}, library: ${CBLAS_LIBRARIES})")
  return()
endif()

28 29 30 31 32
## Then find openblas.
set(OPENBLAS_ROOT $ENV{OPENBLAS_ROOT} CACHE PATH "Folder contains Openblas")
set(OPENBLAS_INCLUDE_SEARCH_PATHS
        ${OPENBLAS_ROOT}/include
        /usr/include
33 34
        /usr/include/openblas
        /usr/local/opt/openblas/include)
35 36 37 38
set(OPENBLAS_LIB_SEARCH_PATHS
        ${OPENBLAS_ROOT}/lib
        /usr/lib
        /usr/lib/blas/openblas
39 40
        /usr/lib/openblas
        /usr/local/opt/openblas/lib)
41 42 43

find_path(OPENBLAS_INC_DIR NAMES cblas.h
  PATHS ${OPENBLAS_INCLUDE_SEARCH_PATHS})
L
lzhao4ever 已提交
44 45
find_path(OPENBLAS_LAPACKE_INC_DIR NAMES lapacke.h
  PATHS ${OPENBLAS_INCLUDE_SEARCH_PATHS})
46 47 48
find_library(OPENBLAS_LIB NAMES openblas
  PATHS ${OPENBLAS_LIB_SEARCH_PATHS})

L
liaogang 已提交
49 50
if(OPENBLAS_LAPACKE_INC_DIR AND OPENBLAS_INC_DIR AND OPENBLAS_LIB)
  set(CBLAS_FOUND ON)
51
  set(CBLAS_PROVIDER OPENBLAS)
L
liaogang 已提交
52
  set(CBLAS_INC_DIR ${OPENBLAS_INC_DIR} ${OPENBLAS_LAPACKE_INC_DIR})
L
liaogang 已提交
53
  set(CBLAS_LIBRARIES ${OPENBLAS_LIB})
L
liaogang 已提交
54

L
liaogang 已提交
55
  add_definitions(-DPADDLE_USE_OPENBLAS)
L
liaogang 已提交
56
  add_definitions(-DLAPACK_FOUND)
L
liaogang 已提交
57 58 59

  message(STATUS "Found OpenBLAS (include: ${OPENBLAS_INC_DIR}, library: ${CBLAS_LIBRARIES})")
  message(STATUS "Found lapack in OpenBLAS (include: ${OPENBLAS_LAPACKE_INC_DIR})")
60 61 62 63 64
  return()
endif()


## Then find the reference-cblas.  www.netlib.org/blas/
65
set(REFERENCE_CBLAS_ROOT $ENV{REFERENCE_CBLAS_ROOT} CACHE PATH
66
  "Folder contains reference-cblas")
67 68 69 70 71 72 73 74 75 76 77 78 79 80
if(NOT CMAKE_CROSSCOMPILING)
  set(REFERENCE_CBLAS_INCLUDE_SEARCH_PATHS
    ${REFERENCE_CBLAS_ROOT}/include
    /usr/include
    /usr/include/cblas
  )

  set(REFERENCE_CBLAS_LIB_SEARCH_PATHS
    ${REFERENCE_CBLAS_ROOT}/lib
    /usr/lib
    /usr/lib/blas/reference/
    /usr/lib/reference/
  )
else()
L
Liu Yiqun 已提交
81
  # Disable the finding of reference cblas under host's system path
82 83 84
  set(REFERENCE_CBLAS_INCLUDE_SEARCH_PATHS ${REFERENCE_CBLAS_ROOT}/include)
  set(REFERENCE_CBLAS_LIB_SEARCH_PATHS ${REFERENCE_CBLAS_ROOT}/lib)
endif()
85

W
Wu Yi 已提交
86 87
if(WITH_SYSTEM_BLAS)
  find_path(REFERENCE_CBLAS_INCLUDE_DIR NAMES cblas.h PATHS
88
        ${REFERENCE_CBLAS_INCLUDE_SEARCH_PATHS})
W
Wu Yi 已提交
89
  find_library(REFERENCE_CBLAS_LIBRARY NAMES cblas PATHS
90 91
        ${REFERENCE_CBLAS_LIB_SEARCH_PATHS})

W
Wu Yi 已提交
92 93 94 95 96 97 98 99
  if(REFERENCE_CBLAS_INCLUDE_DIR AND REFERENCE_CBLAS_LIBRARY)
    set(CBLAS_FOUND ON)
    set(CBLAS_PROVIDER REFERENCE)
    set(CBLAS_INC_DIR ${REFERENCE_CBLAS_INCLUDE_DIR})
    set(CBLAS_LIBRARIES ${REFERENCE_CBLAS_LIBRARY})
    add_definitions(-DPADDLE_USE_REFERENCE_CBLAS)
    message(STATUS "Found reference-cblas (include: ${CBLAS_INC_DIR}, library: ${CBLAS_LIBRARIES})")
  endif()
100
endif()
101

102 103 104 105 106
if(IOS_USE_VECLIB_FOR_BLAS AND VECLIB_FOUND)
  set(CBLAS_FOUND ON)
  set(CBLAS_PROVIDER vecLib)
  set(CBLAS_INC_DIR ${VECLIB_INC_DIR})
  add_definitions(-DPADDLE_USE_VECLIB)
107
endif()
反馈
建议
客服 返回
顶部