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.
 
 

277 lines
9.5 KiB

https://sources.debian.org/data/main/a/arrayfire/3.3.2+dfsg1-4/debian/patches/Fix-LAPACKE-detection.patch
From: Ghislain Antony Vaillant <ghisvail@gmail.com>
Date: Wed, 2 Mar 2016 10:46:50 +0000
Subject: Fix LAPACKE detection.
---
CMakeModules/FindLAPACKE.cmake | 54 +++++++++++++++------------------------
src/backend/cpu/CMakeLists.txt | 18 ++++++-------
src/backend/cuda/CMakeLists.txt | 11 ++++----
src/backend/opencl/CMakeLists.txt | 19 +++++++-------
4 files changed, 45 insertions(+), 57 deletions(-)
diff --git a/CMakeModules/FindLAPACKE.cmake b/CMakeModules/FindLAPACKE.cmake
index 9251ee9..1a73632 100644
--- a/CMakeModules/FindLAPACKE.cmake
+++ b/CMakeModules/FindLAPACKE.cmake
@@ -4,13 +4,13 @@
# FIND_PACKAGE(LAPACKE [REQUIRED] [QUIET] )
#
# It sets the following variables:
-# LAPACK_FOUND ... true if LAPACKE is found on the system
-# LAPACK_LIBRARIES ... full path to LAPACKE library
-# LAPACK_INCLUDES ... LAPACKE include directory
-#
+# LAPACKE_FOUND ... true if LAPACKE is found on the system
+# LAPACKE_INCLUDE_DIRS ... LAPACKE include directories
+# LAPACKE_LIBRARIES ... path to LAPACKE libraries
+# LAPACKE_LIBRARY_DIRS ... LAPACKE library directories
SET(LAPACKE_ROOT_DIR CACHE STRING
- "Root directory for custom LAPACK implementation")
+ "Root directory for custom LAPACKE implementation")
IF (NOT INTEL_MKL_ROOT_DIR)
SET(INTEL_MKL_ROOT_DIR $ENV{INTEL_MKL_ROOT})
@@ -40,29 +40,20 @@ IF(PKG_CONFIG_FOUND AND NOT LAPACKE_ROOT_DIR)
ENDIF()
IF(PC_LAPACKE_FOUND)
+
+ # Verify sanity of LAPACKE pkg-config file.
FOREACH(PC_LIB ${PC_LAPACKE_LIBRARIES})
FIND_LIBRARY(${PC_LIB}_LIBRARY NAMES ${PC_LIB} HINTS ${PC_LAPACKE_LIBRARY_DIRS} )
IF (NOT ${PC_LIB}_LIBRARY)
MESSAGE(FATAL_ERROR "Something is wrong in your pkg-config file - lib ${PC_LIB} not found in ${PC_LAPACKE_LIBRARY_DIRS}")
ENDIF (NOT ${PC_LIB}_LIBRARY)
- LIST(APPEND LAPACKE_LIB ${${PC_LIB}_LIBRARY})
ENDFOREACH(PC_LIB)
- FIND_PATH(
- LAPACKE_INCLUDES
- NAMES "lapacke.h"
- PATHS
- ${PC_LAPACKE_INCLUDE_DIRS}
- ${INCLUDE_INSTALL_DIR}
- /usr/include
- /usr/local/include
- /sw/include
- /opt/local/include
- DOC "LAPACKE Include Directory"
- )
+ set(LAPACKE_LIBRARIES ${PC_LAPACKE_LIBRARIES})
+ set(LAPACKE_LIBRARY_DIRS ${PC_LAPACKE_LIBRARY_DIRS})
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACKE DEFAULT_MSG LAPACKE_LIB)
- MARK_AS_ADVANCED(LAPACKE_INCLUDES LAPACKE_LIB)
+ FIND_PATH(LAPACKE_INCLUDE_DIRS NAMES "lapacke.h"
+ PATHS ${PC_LAPACKE_INCLUDE_DIRS})
ELSE(PC_LAPACKE_FOUND)
@@ -97,7 +88,6 @@ ELSE(PC_LAPACKE_FOUND)
LAPACKE_LIB
NAMES "lapacke" "liblapacke" "openblas" "mkl_rt"
PATHS
- ${PC_LAPACKE_LIBRARY_DIRS}
${LIB_INSTALL_DIR}
/opt/intel/mkl/lib/ia32
/opt/intel/mkl/lib/intel64
@@ -113,7 +103,6 @@ ELSE(PC_LAPACKE_FOUND)
LAPACK_LIB
NAMES "lapack" "liblapack" "openblas" "mkl_rt"
PATHS
- ${PC_LAPACKE_LIBRARY_DIRS}
${LIB_INSTALL_DIR}
/opt/intel/mkl/lib/ia32
/opt/intel/mkl/lib/intel64
@@ -129,7 +118,6 @@ ELSE(PC_LAPACKE_FOUND)
LAPACKE_INCLUDES
NAMES "lapacke.h" "mkl_lapacke.h"
PATHS
- ${PC_LAPACKE_INCLUDE_DIRS}
${INCLUDE_INSTALL_DIR}
/opt/intel/mkl/include
/usr/include
@@ -141,17 +129,15 @@ ELSE(PC_LAPACKE_FOUND)
lapacke
)
ENDIF(LAPACKE_ROOT_DIR)
+ SET(LAPACKE_INCLUDE_DIRS ${LAPACKE_INCLUDES})
+ SET(LAPACKE_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB})
+ MARK_AS_ADVANCED(LAPACKE_INCLUDES LAPACKE_LIB LAPACK_LIB)
ENDIF(PC_LAPACKE_FOUND)
-IF(LAPACKE_LIB AND LAPACK_LIB)
- SET(LAPACK_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB})
-ENDIF()
-IF(LAPACKE_INCLUDES)
- SET(LAPACK_INCLUDE_DIR ${LAPACKE_INCLUDES})
-ENDIF()
-
INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACK DEFAULT_MSG
- LAPACK_INCLUDE_DIR LAPACK_LIBRARIES)
-
-MARK_AS_ADVANCED(LAPACK_INCLUDES LAPACK_LIBRARIES)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACKE DEFAULT_MSG
+ LAPACKE_LIBRARIES
+ LAPACKE_INCLUDE_DIRS)
+MARK_AS_ADVANCED(LAPACKE_LIBRARIES
+ LAPACKE_INCLUDE_DIRS
+ LAPACKE_LIBRARY_DIRS)
diff --git a/src/backend/cpu/CMakeLists.txt b/src/backend/cpu/CMakeLists.txt
index ea57269..efe50a0 100644
--- a/src/backend/cpu/CMakeLists.txt
+++ b/src/backend/cpu/CMakeLists.txt
@@ -55,7 +55,7 @@ MESSAGE(STATUS "FFTW Library: ${FFTW_LIBRARIES}")
IF(APPLE)
FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
- IF(NOT LAPACK_FOUND)
+ IF(NOT LAPACKE_FOUND)
# UNSET THE VARIABLES FROM LAPACKE
UNSET(LAPACKE_LIB CACHE)
UNSET(LAPACK_LIB CACHE)
@@ -67,11 +67,10 @@ ELSE(APPLE) # Linux and Windows
FIND_PACKAGE(LAPACKE)
ENDIF(APPLE)
-IF(NOT LAPACK_FOUND)
- MESSAGE(WARNING "LAPACK not found. Functionality will be disabled")
-ELSE(NOT LAPACK_FOUND)
+IF(NOT LAPACKE_FOUND)
+ MESSAGE(WARNING "LAPACKE not found. Functionality will be disabled")
+ELSE(NOT LAPACKE_FOUND)
ADD_DEFINITIONS(-DWITH_CPU_LINEAR_ALGEBRA)
- MESSAGE(STATUS "LAPACK libraries found: ${LAPACK_LIBRARIES}")
ENDIF()
IF(NOT UNIX)
@@ -99,8 +98,9 @@ INCLUDE_DIRECTORIES(
${CBLAS_INCLUDE_DIR}
)
-IF(LAPACK_FOUND)
- INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR})
+IF(LAPACKE_FOUND)
+ INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS})
+ LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS})
ENDIF()
FILE(GLOB cpu_headers
@@ -213,8 +213,8 @@ IF(FORGE_FOUND AND NOT USE_SYSTEM_FORGE)
ADD_DEPENDENCIES(afcpu forge)
ENDIF()
-IF(LAPACK_FOUND)
- TARGET_LINK_LIBRARIES(afcpu PRIVATE ${LAPACK_LIBRARIES})
+IF(LAPACKE_FOUND)
+ TARGET_LINK_LIBRARIES(afcpu PRIVATE ${LAPACKE_LIBRARIES})
ENDIF()
IF(FORGE_FOUND)
diff --git a/src/backend/cuda/CMakeLists.txt b/src/backend/cuda/CMakeLists.txt
index 4efb427..24c6544 100644
--- a/src/backend/cuda/CMakeLists.txt
+++ b/src/backend/cuda/CMakeLists.txt
@@ -105,7 +105,7 @@ ELSE(CUDA_cusolver_LIBRARY)
## Try to use CPU side lapack
IF(APPLE)
FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
- IF(NOT LAPACK_FOUND)
+ IF(NOT LAPACKE_FOUND)
# UNSET THE VARIABLES FROM LAPACKE
UNSET(LAPACKE_LIB CACHE)
UNSET(LAPACK_LIB CACHE)
@@ -117,9 +117,9 @@ ELSE(CUDA_cusolver_LIBRARY)
FIND_PACKAGE(LAPACKE)
ENDIF(APPLE)
- IF(NOT LAPACK_FOUND)
+ IF(NOT LAPACKE_FOUND)
MESSAGE(STATUS "CUDA Version ${CUDA_VERSION_STRING} does not contain cusolver library. Linear Algebra will not be available.")
- ELSE(NOT LAPACK_FOUND)
+ ELSE(NOT LAPACKE_FOUND)
MESSAGE(STATUS "CUDA Version ${CUDA_VERSION_STRING} does not contain cusolver library. But CPU LAPACK libraries are available. Will fallback to using host side code.")
ADD_DEFINITIONS(-DWITH_CPU_LINEAR_ALGEBRA)
IF(USE_CUDA_MKL) # Manual MKL Setup
@@ -148,7 +148,8 @@ INCLUDE_DIRECTORIES(
)
IF(CUDA_LAPACK_CPU_FALLBACK)
- INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR})
+ INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS})
+ LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS})
ENDIF()
FILE(GLOB cuda_headers
@@ -379,7 +380,7 @@ ENDIF()
IF(CUDA_cusolver_LIBRARY)
TARGET_LINK_LIBRARIES(afcuda PRIVATE ${CUDA_cusolver_LIBRARY})
ELSEIF(CUDA_LAPACK_CPU_FALLBACK)
- TARGET_LINK_LIBRARIES(afcuda PRIVATE ${LAPACK_LIBRARIES})
+ TARGET_LINK_LIBRARIES(afcuda PRIVATE ${LAPACKE_LIBRARIES})
ENDIF()
SET_TARGET_PROPERTIES(afcuda PROPERTIES
diff --git a/src/backend/opencl/CMakeLists.txt b/src/backend/opencl/CMakeLists.txt
index 71247ce..ded53bf 100644
--- a/src/backend/opencl/CMakeLists.txt
+++ b/src/backend/opencl/CMakeLists.txt
@@ -12,7 +12,7 @@ ENDIF()
IF(APPLE)
FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
- IF(NOT LAPACK_FOUND)
+ IF(NOT LAPACKE_FOUND)
# UNSET THE VARIABLES FROM LAPACKE
UNSET(LAPACKE_LIB CACHE)
UNSET(LAPACK_LIB CACHE)
@@ -24,9 +24,9 @@ ELSE(APPLE) # Linux and Windows
FIND_PACKAGE(LAPACKE)
ENDIF(APPLE)
-IF(NOT LAPACK_FOUND)
- MESSAGE(WARNING "LAPACK not found. Functionality will be disabled")
-ELSE(NOT LAPACK_FOUND)
+IF(NOT LAPACKE_FOUND)
+ MESSAGE(WARNING "LAPACKE not found. Functionality will be disabled")
+ELSE(NOT LAPACKE_FOUND)
ADD_DEFINITIONS(-DWITH_OPENCL_LINEAR_ALGEBRA)
IF(NOT USE_OPENCL_MKL)
@@ -105,8 +105,9 @@ INCLUDE_DIRECTORIES(
${BoostCompute_INCLUDE_DIRS}
${CBLAS_INCLUDE_DIR}
)
-IF(LAPACK_FOUND)
- INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR})
+IF(LAPACKE_FOUND)
+ INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS})
+ LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS})
ENDIF()
FILE(GLOB opencl_headers
@@ -163,7 +164,7 @@ source_group(backend\\opencl\\kernel\\convolve\\Sources FILES ${conv_ker_sources
source_group(backend\\opencl\\cpu\\Headers FILES ${cpu_headers})
source_group(backend\\opencl\\cpu\\Sources FILES ${cpu_sources})
-IF(LAPACK_FOUND)
+IF(LAPACKE_FOUND)
FILE(GLOB magma_sources
"magma/*.cpp")
@@ -313,9 +314,9 @@ IF(FORGE_FOUND AND NOT USE_SYSTEM_FORGE)
ADD_DEPENDENCIES(afopencl forge)
ENDIF()
-IF(LAPACK_FOUND)
+IF(LAPACKE_FOUND)
TARGET_LINK_LIBRARIES(afopencl
- PRIVATE ${LAPACK_LIBRARIES}
+ PRIVATE ${LAPACKE_LIBRARIES}
PRIVATE ${CBLAS_LIBRARIES})
ENDIF()