You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							108 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
	
	
							108 lines
						
					
					
						
							3.5 KiB
						
					
					
				# Find the CBlas and lapack libraries
 | 
						|
#
 | 
						|
# It will search MKLML, atlas, OpenBlas, reference-cblas in order.
 | 
						|
#
 | 
						|
# If any cblas implementation found, the following variable will be set.
 | 
						|
#    CBLAS_PROVIDER  # one of MKLML, OPENBLAS, REFERENCE
 | 
						|
#    CBLAS_INC_DIR   # the include directory for cblas.
 | 
						|
#    CBLAS_LIBS      # a list of libraries should be linked by paddle.
 | 
						|
#                    # Each library should be full path to object file.
 | 
						|
 | 
						|
set(CBLAS_FOUND OFF)
 | 
						|
 | 
						|
## Find MKLML First.
 | 
						|
if(WITH_MKLML AND MKLML_INC_DIR AND MKLML_LIB)
 | 
						|
  set(CBLAS_FOUND ON)
 | 
						|
  set(CBLAS_PROVIDER MKLML)
 | 
						|
  set(CBLAS_INC_DIR ${MKLML_INC_DIR})
 | 
						|
  set(CBLAS_LIBRARIES ${MKLML_LIB})
 | 
						|
 | 
						|
  add_definitions(-DPADDLE_WITH_MKLML)
 | 
						|
  add_definitions(-DLAPACK_FOUND)
 | 
						|
 | 
						|
  message(STATUS "Found cblas and lapack in MKLML "
 | 
						|
    "(include: ${CBLAS_INC_DIR}, library: ${CBLAS_LIBRARIES})")
 | 
						|
  return()
 | 
						|
endif()
 | 
						|
 | 
						|
## Then find openblas.
 | 
						|
set(OPENBLAS_ROOT $ENV{OPENBLAS_ROOT} CACHE PATH "Folder contains Openblas")
 | 
						|
set(OPENBLAS_INCLUDE_SEARCH_PATHS
 | 
						|
        ${OPENBLAS_ROOT}/include
 | 
						|
        /usr/include
 | 
						|
        /usr/include/openblas
 | 
						|
        /usr/local/opt/openblas/include)
 | 
						|
set(OPENBLAS_LIB_SEARCH_PATHS
 | 
						|
        ${OPENBLAS_ROOT}/lib
 | 
						|
        /usr/lib
 | 
						|
        /usr/lib/blas/openblas
 | 
						|
        /usr/lib/openblas
 | 
						|
        /usr/local/opt/openblas/lib)
 | 
						|
 | 
						|
find_path(OPENBLAS_INC_DIR NAMES cblas.h
 | 
						|
  PATHS ${OPENBLAS_INCLUDE_SEARCH_PATHS})
 | 
						|
find_path(OPENBLAS_LAPACKE_INC_DIR NAMES lapacke.h
 | 
						|
  PATHS ${OPENBLAS_INCLUDE_SEARCH_PATHS})
 | 
						|
find_library(OPENBLAS_LIB NAMES openblas
 | 
						|
  PATHS ${OPENBLAS_LIB_SEARCH_PATHS})
 | 
						|
 | 
						|
if(OPENBLAS_LAPACKE_INC_DIR AND OPENBLAS_INC_DIR AND OPENBLAS_LIB)
 | 
						|
  set(CBLAS_FOUND ON)
 | 
						|
  set(CBLAS_PROVIDER OPENBLAS)
 | 
						|
  set(CBLAS_INC_DIR ${OPENBLAS_INC_DIR} ${OPENBLAS_LAPACKE_INC_DIR})
 | 
						|
  set(CBLAS_LIBRARIES ${OPENBLAS_LIB})
 | 
						|
 | 
						|
  add_definitions(-DPADDLE_USE_OPENBLAS)
 | 
						|
  add_definitions(-DLAPACK_FOUND)
 | 
						|
 | 
						|
  message(STATUS "Found OpenBLAS (include: ${OPENBLAS_INC_DIR}, library: ${CBLAS_LIBRARIES})")
 | 
						|
  message(STATUS "Found lapack in OpenBLAS (include: ${OPENBLAS_LAPACKE_INC_DIR})")
 | 
						|
  return()
 | 
						|
endif()
 | 
						|
 | 
						|
 | 
						|
## Then find the reference-cblas.  www.netlib.org/blas/
 | 
						|
set(REFERENCE_CBLAS_ROOT $ENV{REFERENCE_CBLAS_ROOT} CACHE PATH
 | 
						|
  "Folder contains reference-cblas")
 | 
						|
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()
 | 
						|
  # Disable the finding of reference cblas under host's system path
 | 
						|
  set(REFERENCE_CBLAS_INCLUDE_SEARCH_PATHS ${REFERENCE_CBLAS_ROOT}/include)
 | 
						|
  set(REFERENCE_CBLAS_LIB_SEARCH_PATHS ${REFERENCE_CBLAS_ROOT}/lib)
 | 
						|
endif()
 | 
						|
 | 
						|
if(WITH_SYSTEM_BLAS)
 | 
						|
  find_path(REFERENCE_CBLAS_INCLUDE_DIR NAMES cblas.h PATHS
 | 
						|
        ${REFERENCE_CBLAS_INCLUDE_SEARCH_PATHS})
 | 
						|
  find_library(REFERENCE_CBLAS_LIBRARY NAMES cblas PATHS
 | 
						|
        ${REFERENCE_CBLAS_LIB_SEARCH_PATHS})
 | 
						|
 | 
						|
  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()
 | 
						|
endif()
 | 
						|
 | 
						|
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)
 | 
						|
endif()
 |