[arrayfire] 243/284: Fixes to build with MKL when INTEL_MKL_ROOT is exported

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Sun Feb 7 18:59:37 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch debian/experimental
in repository arrayfire.

commit cc2dda092b6b12684a42837a4784b9b9bc75cc8f
Author: Pavan Yalamanchili <pavan at arrayfire.com>
Date:   Thu Jan 21 18:38:03 2016 -0500

    Fixes to build with MKL when INTEL_MKL_ROOT is exported
---
 CMakeModules/FindCBLAS.cmake      | 64 +++++++++++++++++++++++++++++++--------
 CMakeModules/FindLAPACKE.cmake    | 56 +++++++++++++++++++++++-----------
 src/backend/cpu/CMakeLists.txt    |  1 +
 src/backend/opencl/CMakeLists.txt |  4 +++
 4 files changed, 95 insertions(+), 30 deletions(-)

diff --git a/CMakeModules/FindCBLAS.cmake b/CMakeModules/FindCBLAS.cmake
index b0cd3bd..efef36b 100644
--- a/CMakeModules/FindCBLAS.cmake
+++ b/CMakeModules/FindCBLAS.cmake
@@ -53,19 +53,40 @@ SET(CBLAS_ROOT_DIR CACHE STRING
 INCLUDE(CheckTypeSize)
 CHECK_TYPE_SIZE("void*" SIZE_OF_VOIDP)
 
-SET(CBLAS_LIB_DIR)
+IF (NOT INTEL_MKL_ROOT_DIR)
+  SET(INTEL_MKL_ROOT_DIR $ENV{INTEL_MKL_ROOT})
+ENDIF()
 
-SET(CBLAS_ROOT_DIR "${INTEL_MKL_ROOT_DIR}")
+IF(NOT CBLAS_ROOT_DIR)
 
-IF(CBLAS_ROOT_DIR)
-    IF(INTEL_MKL_ROOT_DIR)
-      IF ("${SIZE_OF_VOIDP}" EQUAL 8)
-        SET(CBLAS_LIB_DIR "${INTEL_MKL_ROOT_DIR}/lib/intel64")
-      ELSE()
-        SET(CBLAS_LIB_DIR "${INTEL_MKL_ROOT_DIR}/lib/ia32")
-      ENDIF()
+  IF (ENV{CBLASDIR})
+    SET(CBLAS_ROOT_DIR $ENV{CBLASDIR})
+    IF ("${SIZE_OF_VOIDP}" EQUAL 8)
+      SET(CBLAS_LIB64_DIR "${INTEL_MKL_ROOT_DIR}/lib64")
+    ELSE()
+      SET(CBLAS_LIB32_DIR "${INTEL_MKL_ROOT_DIR}/lib")
+    ENDIF()
+  ENDIF()
+
+  IF (ENV{CBLAS_ROOT_DIR})
+    SET(CBLAS_ROOT_DIR $ENV{CBLAS_ROOT_DIR})
+    IF ("${SIZE_OF_VOIDP}" EQUAL 8)
+      SET(CBLAS_LIB64_DIR "${INTEL_MKL_ROOT_DIR}/lib64")
+    ELSE()
+      SET(CBLAS_LIB32_DIR "${INTEL_MKL_ROOT_DIR}/lib")
+    ENDIF()
+  ENDIF()
+
+  IF (INTEL_MKL_ROOT_DIR)
+    SET(CBLAS_ROOT_DIR ${INTEL_MKL_ROOT_DIR})
+    IF ("${SIZE_OF_VOIDP}" EQUAL 8)
+      SET(CBLAS_LIB64_DIR "${INTEL_MKL_ROOT_DIR}/lib/intel64")
+    ELSE()
+      SET(CBLAS_LIB32_DIR "${INTEL_MKL_ROOT_DIR}/lib/ia32")
     ENDIF()
-    SET(CBLAS_INCLUDE_DIR "${INTEL_MKL_ROOT_DIR}/include")
+  ENDIF()
+
+  SET(CBLAS_INCLUDE_DIR "${CBLAS_ROOT_DIR}/include")
 ENDIF()
 
 # Old CBLAS search
@@ -116,14 +137,14 @@ MACRO(CHECK_ALL_LIBRARIES
           NAMES ${_library}
           PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64
           ENV DYLD_LIBRARY_PATH
-          "{CBLAS_LIB_DIR}"
+          "${CBLAS_LIB_DIR}" "${CBLAS_LIB32_DIR}" "${CBLAS_LIB64_DIR}"
           )
       ELSE(APPLE)
         FIND_LIBRARY(${_prefix}_${_library}_LIBRARY
           NAMES ${_library}
           PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64
           ENV LD_LIBRARY_PATH
-          "${CBLAS_LIB_DIR}"
+          "${CBLAS_LIB_DIR}" "${CBLAS_LIB32_DIR}" "${CBLAS_LIB64_DIR}"
           PATH_SUFFIXES atlas
           )
         IF(NOT ${_prefix}_${library}_LIBRARY)
@@ -132,7 +153,7 @@ MACRO(CHECK_ALL_LIBRARIES
               NAMES ${_library}
               PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64
               ENV LD_LIBRARY_PATH
-              "${CBLAS_LIB_DIR}"
+              "${CBLAS_LIB_DIR}" "${CBLAS_LIB32_DIR}" "${CBLAS_LIB64_DIR}"
               PATH_SUFFIXES atlas
               )
           ENDIF(NOT ${_prefix}_${library}_LIBRARY)
@@ -194,6 +215,23 @@ MACRO(CHECK_ALL_LIBRARIES
   ENDIF(NOT _libraries_work)
 ENDMACRO(CHECK_ALL_LIBRARIES)
 
+# MKL CBLAS library?
+IF(NOT CBLAS_LIBRARIES)
+  CHECK_ALL_LIBRARIES(
+    CBLAS_LIBRARIES
+    CBLAS
+    cblas_dgemm
+    ""
+    "mkl_rt"
+    "mkl_cblas.h"
+    FALSE,
+    TRUE)
+ENDIF(NOT CBLAS_LIBRARIES)
+
+IF(CBLAS_LIBRARIES)
+  SET(MKL_FOUND ON)
+ENDIF()
+
 # Apple CBLAS library?
 IF(NOT CBLAS_LIBRARIES)
   CHECK_ALL_LIBRARIES(
diff --git a/CMakeModules/FindLAPACKE.cmake b/CMakeModules/FindLAPACKE.cmake
index 3bf8a1f..dc4a045 100644
--- a/CMakeModules/FindLAPACKE.cmake
+++ b/CMakeModules/FindLAPACKE.cmake
@@ -9,15 +9,33 @@
 #   LAPACK_INCLUDES            ... LAPACKE include directory
 #
 
-IF(NOT LAPACKE_ROOT AND ENV{LAPACKEDIR})
-  SET(LAPACKE_ROOT $ENV{LAPACKEDIR})
+SET(LAPACKE_ROOT_DIR CACHE STRING
+  "Root directory for custom LAPACK implementation")
+
+IF (NOT INTEL_MKL_ROOT_DIR)
+  SET(INTEL_MKL_ROOT_DIR $ENV{INTEL_MKL_ROOT})
+ENDIF()
+
+IF(NOT LAPACKE_ROOT_DIR)
+
+  IF (ENV{LAPACKEDIR})
+    SET(LAPACKE_ROOT_DIR $ENV{LAPACKEDIR})
+  ENDIF()
+
+  IF (ENV{LAPACKE_ROOT_DIR_DIR})
+    SET(LAPACKE_ROOT_DIR $ENV{LAPACKE_ROOT_DIR})
+  ENDIF()
+
+  IF (INTEL_MKL_ROOT_DIR)
+    SET(LAPACKE_ROOT_DIR ${INTEL_MKL_ROOT_DIR})
+  ENDIF()
 ENDIF()
 
 # Check if we can use PkgConfig
 FIND_PACKAGE(PkgConfig)
 
 #Determine from PKG
-IF(PKG_CONFIG_FOUND AND NOT LAPACKE_ROOT)
+IF(PKG_CONFIG_FOUND AND NOT LAPACKE_ROOT_DIR)
   PKG_CHECK_MODULES( PC_LAPACKE QUIET "lapacke")
 ENDIF()
 
@@ -48,40 +66,41 @@ IF(PC_LAPACKE_FOUND)
 
 ELSE(PC_LAPACKE_FOUND)
 
-    IF(LAPACKE_ROOT)
+    IF(LAPACKE_ROOT_DIR)
         #find libs
         FIND_LIBRARY(
             LAPACKE_LIB
-            NAMES "lapacke" "LAPACKE" "liblapacke"
-            PATHS ${LAPACKE_ROOT}
-            PATH_SUFFIXES "lib" "lib64"
+            NAMES "lapacke" "LAPACKE" "liblapacke" "mkl_rt"
+            PATHS ${LAPACKE_ROOT_DIR}
+            PATH_SUFFIXES "lib" "lib64" "lib/ia32" "lib/intel64"
             DOC "LAPACKE Library"
             NO_DEFAULT_PATH
             )
         FIND_LIBRARY(
             LAPACK_LIB
-            NAMES "lapack" "LAPACK" "liblapack"
-            PATHS ${LAPACKE_ROOT}
-            PATH_SUFFIXES "lib" "lib64"
+            NAMES "lapack" "LAPACK" "liblapack" "mkl_rt"
+            PATHS ${LAPACKE_ROOT_DIR}
+            PATH_SUFFIXES "lib" "lib64" "lib/ia32" "lib/intel64"
             DOC "LAPACK Library"
             NO_DEFAULT_PATH
             )
         FIND_PATH(
             LAPACKE_INCLUDES
-            NAMES "lapacke.h"
-            PATHS ${LAPACKE_ROOT}
+            NAMES "lapacke.h" "mkl_lapacke.h"
+            PATHS ${LAPACKE_ROOT_DIR}
             PATH_SUFFIXES "include"
             DOC "LAPACKE Include Directory"
             NO_DEFAULT_PATH
             )
-
     ELSE()
         FIND_LIBRARY(
             LAPACKE_LIB
-            NAMES "lapacke" "liblapacke" "openblas"
+            NAMES "lapacke" "liblapacke" "openblas" "mkl_rt"
             PATHS
             ${PC_LAPACKE_LIBRARY_DIRS}
             ${LIB_INSTALL_DIR}
+            /opt/intel/mkl/lib/ia32
+            /opt/intel/mkl/lib/intel64
             /usr/lib64
             /usr/lib
             /usr/local/lib64
@@ -92,10 +111,12 @@ ELSE(PC_LAPACKE_FOUND)
             )
         FIND_LIBRARY(
            LAPACK_LIB
-            NAMES "lapack" "liblapack" "openblas"
+            NAMES "lapack" "liblapack" "openblas" "mkl_rt"
             PATHS
             ${PC_LAPACKE_LIBRARY_DIRS}
             ${LIB_INSTALL_DIR}
+            /opt/intel/mkl/lib/ia32
+            /opt/intel/mkl/lib/intel64
             /usr/lib64
             /usr/lib
             /usr/local/lib64
@@ -106,17 +127,18 @@ ELSE(PC_LAPACKE_FOUND)
             )
         FIND_PATH(
             LAPACKE_INCLUDES
-            NAMES "lapacke.h"
+            NAMES "lapacke.h" "mkl_lapacke.h"
             PATHS
             ${PC_LAPACKE_INCLUDE_DIRS}
             ${INCLUDE_INSTALL_DIR}
+            /opt/intel/mkl/include
             /usr/include
             /usr/local/include
             /sw/include
             /opt/local/include
             DOC "LAPACKE Include Directory"
             )
-    ENDIF(LAPACKE_ROOT)
+    ENDIF(LAPACKE_ROOT_DIR)
 ENDIF(PC_LAPACKE_FOUND)
 
 SET(LAPACK_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB})
diff --git a/src/backend/cpu/CMakeLists.txt b/src/backend/cpu/CMakeLists.txt
index b0ab17a..5dee6de 100644
--- a/src/backend/cpu/CMakeLists.txt
+++ b/src/backend/cpu/CMakeLists.txt
@@ -41,6 +41,7 @@ IF(NOT LAPACK_FOUND)
     MESSAGE(WARNING "LAPACK not found. Functionality will be disabled")
 ELSE(NOT LAPACK_FOUND)
     ADD_DEFINITIONS(-DWITH_CPU_LINEAR_ALGEBRA)
+    MESSAGE(STATUS "LAPACK libraries found: ${LAPACK_LIBRARIES}")
 ENDIF()
 
 IF(NOT UNIX)
diff --git a/src/backend/opencl/CMakeLists.txt b/src/backend/opencl/CMakeLists.txt
index c9c47d0..6731c67 100644
--- a/src/backend/opencl/CMakeLists.txt
+++ b/src/backend/opencl/CMakeLists.txt
@@ -42,6 +42,10 @@ ELSE(NOT LAPACK_FOUND)
   ENDIF()
 ENDIF()
 
+IF(${MKL_FOUND})
+  ADD_DEFINITIONS(-DUSE_MKL)
+ENDIF()
+
 IF(NOT UNIX)
     ADD_DEFINITIONS(-DAFDLL)
 ENDIF()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git



More information about the debian-science-commits mailing list