Skip to content

Commit

Permalink
[cmake] clean up blas discovery (#47940)
Browse files Browse the repository at this point in the history
Summary:
remove useless variable changes in blas discovery

Pull Request resolved: #47940

Reviewed By: malfet

Differential Revision: D25122228

Pulled By: walterddr

fbshipit-source-id: 12bc3ce9e4f89a72b6a92c10d14024e5941f4b96
  • Loading branch information
Rong Rong authored and facebook-github-bot committed Nov 30, 2020
1 parent 0b66cda commit af520d9
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 49 deletions.
18 changes: 7 additions & 11 deletions cmake/Dependencies.cmake
Expand Up @@ -107,6 +107,8 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO)
endif()

# ---[ BLAS

# setting default preferred BLAS options if not already present.
if(NOT INTERN_BUILD_MOBILE)
set(BLAS "MKL" CACHE STRING "Selected BLAS library")
else()
Expand Down Expand Up @@ -146,7 +148,6 @@ elseif(BLAS STREQUAL "MKL")
set(CAFFE2_USE_MKL ON)
else()
message(WARNING "MKL could not be found. Defaulting to Eigen")
set(BLAS "Eigen" CACHE STRING "Selected BLAS library")
set(CAFFE2_USE_EIGEN_FOR_BLAS ON)
set(CAFFE2_USE_MKL OFF)
endif()
Expand All @@ -173,9 +174,6 @@ if(NOT INTERN_BUILD_MOBILE)
find_package(BLAS)
if(NOT BLAS_FOUND)
set(USE_BLAS 0)
set(BLAS "" CACHE STRING "Selected BLAS library")
else()
set(BLAS BLAS_INFO CACHE STRING "Selected BLAS library")
endif()
endif()

Expand All @@ -190,6 +188,11 @@ if(NOT INTERN_BUILD_MOBILE)
endif()
set(AT_MKL_ENABLED 1)
endif()
elseif(INTERN_USE_EIGEN_BLAS)
# Eigen BLAS for Mobile
set(USE_BLAS 1)
include(${CMAKE_CURRENT_LIST_DIR}/External/EigenBLAS.cmake)
list(APPEND Caffe2_DEPENDENCY_LIBS eigen_blas)
endif()

# ---[ Dependencies
Expand Down Expand Up @@ -285,13 +288,6 @@ set(CONFU_DEPENDENCIES_SOURCE_DIR ${PROJECT_BINARY_DIR}/confu-srcs
set(CONFU_DEPENDENCIES_BINARY_DIR ${PROJECT_BINARY_DIR}/confu-deps
CACHE PATH "Confu-style dependencies binary directory")

# ---[ Eigen BLAS for Mobile
if(INTERN_BUILD_MOBILE AND INTERN_USE_EIGEN_BLAS)
set(USE_BLAS 1)
include(${CMAKE_CURRENT_LIST_DIR}/External/EigenBLAS.cmake)
list(APPEND Caffe2_DEPENDENCY_LIBS eigen_blas)
endif()

# ---[ pthreadpool
# Only add a dependency on pthreadpool if we are on a mobile build
# or are building any of the libraries in the {Q/X}NNPACK family.
Expand Down
94 changes: 56 additions & 38 deletions cmake/Modules/FindBLAS.cmake
Expand Up @@ -83,7 +83,7 @@ MACRO(Check_Fortran_Libraries LIBRARIES _prefix _name _flags _list)
check_fortran_function_exists(${_name} ${_prefix}${_combined_name}_WORKS)
else (CMAKE_Fortran_COMPILER_WORKS)
check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS)
endif (CMAKE_Fortran_COMPILER_WORKS)
endif(CMAKE_Fortran_COMPILER_WORKS)
set(CMAKE_REQUIRED_LIBRARIES)
mark_as_advanced(${_prefix}${_combined_name}_WORKS)
set(_libraries_work ${${_prefix}${_combined_name}_WORKS})
Expand Down Expand Up @@ -117,33 +117,46 @@ if((NOT BLAS_LIBRARIES)
if (BLAS_LIBRARIES)
set(BLAS_INFO "accelerate")
set(BLAS_IS_ACCELERATE 1)
endif (BLAS_LIBRARIES)
endif(BLAS_LIBRARIES)
endif()

if((NOT BLAS_LIBRARIES)
AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "veclib")))
check_fortran_libraries(
BLAS_LIBRARIES
BLAS
sgemm
""
"vecLib")
if (BLAS_LIBRARIES)
set(BLAS_INFO "veclib")
endif (BLAS_LIBRARIES)
FIND_PACKAGE(vecLib)
if(vecLib_FOUND)
SET(BLAS_INFO "veclib")
else()
check_fortran_libraries(
BLAS_LIBRARIES
BLAS
sgemm
""
"vecLib")
if (BLAS_LIBRARIES)
set(BLAS_INFO "veclib")
endif(BLAS_LIBRARIES)
endif()
endif()

if((NOT BLAS_LIBRARIES)
AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "open")))
check_fortran_libraries(
BLAS_LIBRARIES
BLAS
sgemm
""
"openblas")
if(BLAS_LIBRARIES)
set(BLAS_INFO "open")
endif(BLAS_LIBRARIES)
FIND_PACKAGE(OpenBLAS)
if(OpenBLAS_FOUND)
SET(BLAS_INFO "open")
SET(BLAS_LIBRARIES ${OpenBLAS_LIB})
SET(BLAS_INCLUDE_DIR ${OpenBLAS_INCLUDE_DIR})
SET(BLAS_VERSION ${OpenBLAS_VERSION})
else()
check_fortran_libraries(
BLAS_LIBRARIES
BLAS
sgemm
""
"openblas")
if(BLAS_LIBRARIES)
set(BLAS_INFO "open")
endif(BLAS_LIBRARIES)
endif()
endif()

if((NOT BLAS_LIBRARIES)
Expand Down Expand Up @@ -182,7 +195,7 @@ if((NOT BLAS_LIBRARIES)
"goto2;gfortran")
if (BLAS_LIBRARIES)
set(BLAS_INFO "goto")
endif (BLAS_LIBRARIES)
endif(BLAS_LIBRARIES)
endif()

if((NOT BLAS_LIBRARIES)
Expand All @@ -195,7 +208,7 @@ if((NOT BLAS_LIBRARIES)
"goto2;gfortran;pthread")
if (BLAS_LIBRARIES)
set(BLAS_INFO "goto")
endif (BLAS_LIBRARIES)
endif(BLAS_LIBRARIES)
endif()

if((NOT BLAS_LIBRARIES)
Expand All @@ -208,7 +221,7 @@ if((NOT BLAS_LIBRARIES)
"acml;gfortran")
if (BLAS_LIBRARIES)
set(BLAS_INFO "acml")
endif (BLAS_LIBRARIES)
endif(BLAS_LIBRARIES)
endif()

if((NOT BLAS_LIBRARIES)
Expand All @@ -222,21 +235,26 @@ if((NOT BLAS_LIBRARIES)
"blis")
if (BLAS_LIBRARIES)
set(BLAS_INFO "FLAME")
endif (BLAS_LIBRARIES)
endif(BLAS_LIBRARIES)
endif()

# BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
if((NOT BLAS_LIBRARIES)
AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "atlas")))
check_fortran_libraries(
BLAS_LIBRARIES
BLAS
sgemm
""
"ptf77blas;atlas;gfortran")
if (BLAS_LIBRARIES)
set(BLAS_INFO "atlas")
endif (BLAS_LIBRARIES)
FIND_PACKAGE(Atlas)
if(Atlas_FOUND)
SET(BLAS_INFO "atlas")
else()
check_fortran_libraries(
BLAS_LIBRARIES
BLAS
sgemm
""
"ptf77blas;atlas;gfortran")
if (BLAS_LIBRARIES)
set(BLAS_INFO "atlas")
endif(BLAS_LIBRARIES)
endif()
endif()

# Generic BLAS library?
Expand All @@ -250,7 +268,7 @@ if((NOT BLAS_LIBRARIES)
"blas")
if (BLAS_LIBRARIES)
set(BLAS_INFO "generic")
endif (BLAS_LIBRARIES)
endif(BLAS_LIBRARIES)
endif()

# Determine if blas was compiled with the f2c conventions
Expand Down Expand Up @@ -287,7 +305,7 @@ int main() {
SET(BLAS_F2C TRUE)
ELSE (BLAS_F2C_DOUBLE_WORKS AND NOT BLAS_F2C_FLOAT_WORKS)
SET(BLAS_F2C FALSE)
ENDIF (BLAS_F2C_DOUBLE_WORKS AND NOT BLAS_F2C_FLOAT_WORKS)
ENDIF(BLAS_F2C_DOUBLE_WORKS AND NOT BLAS_F2C_FLOAT_WORKS)
CHECK_C_SOURCE_RUNS("
#include <stdlib.h>
#include <stdio.h>
Expand All @@ -303,7 +321,7 @@ int main() {
SET(BLAS_USE_CBLAS_DOT TRUE)
ELSE (BLAS_USE_CBLAS_DOT)
SET(BLAS_USE_CBLAS_DOT FALSE)
ENDIF (BLAS_USE_CBLAS_DOT)
ENDIF(BLAS_USE_CBLAS_DOT)
SET(CMAKE_REQUIRED_LIBRARIES)
ENDIF(BLAS_LIBRARIES)

Expand All @@ -317,10 +335,10 @@ endif(BLAS_LIBRARIES)

IF (NOT BLAS_FOUND AND BLAS_FIND_REQUIRED)
message(FATAL_ERROR "Cannot find a library with BLAS API. Please specify library location.")
ENDIF (NOT BLAS_FOUND AND BLAS_FIND_REQUIRED)
ENDIF(NOT BLAS_FOUND AND BLAS_FIND_REQUIRED)
IF(NOT BLAS_FIND_QUIETLY)
IF(BLAS_FOUND)
MESSAGE(STATUS "Found a library with BLAS API (${BLAS_INFO}).")
MESSAGE(STATUS "Found a library with BLAS API (${BLAS_INFO}). Full path: (${BLAS_LIBRARIES})")
ELSE(BLAS_FOUND)
MESSAGE(STATUS "Cannot find a library with BLAS API. Not using BLAS.")
ENDIF(BLAS_FOUND)
Expand Down

0 comments on commit af520d9

Please sign in to comment.