[arrayfire] 52/75: Added support for finding MKL RT on OSX for BLAS, LAPACKE, FFTW

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Mon Feb 29 08:01:17 UTC 2016


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

ghisvail-guest pushed a commit to branch dfsg-clean
in repository arrayfire.

commit d4fb656e09dd89994ae65bf643cfefe2f58f3f47
Author: Shehzan Mohammed <shehzan at arrayfire.com>
Date:   Mon Feb 22 17:59:53 2016 -0500

    Added support for finding MKL RT on OSX for BLAS, LAPACKE, FFTW
    
    * Uses INTEL_MKL_ROOT as enviornment variable. Commonly /opt/intel/mkl
    * If using RT, then add /opt/intel/mkl/lib and
      /opt/intel/compilers_and_libraries/mac/lib/ to DYLD_LIBRARY_PATH
---
 CMakeModules/FindCBLAS.cmake      | 26 +++++++++++++++++---------
 CMakeModules/FindFFTW.cmake       | 29 ++++++++++++++++++++++++-----
 CMakeModules/FindLAPACKE.cmake    |  8 ++++++--
 src/backend/cpu/CMakeLists.txt    | 10 +++++++++-
 src/backend/cuda/CMakeLists.txt   | 10 +++++++++-
 src/backend/opencl/CMakeLists.txt | 10 +++++++++-
 6 files changed, 74 insertions(+), 19 deletions(-)

diff --git a/CMakeModules/FindCBLAS.cmake b/CMakeModules/FindCBLAS.cmake
index efef36b..db1d783 100644
--- a/CMakeModules/FindCBLAS.cmake
+++ b/CMakeModules/FindCBLAS.cmake
@@ -62,28 +62,36 @@ IF(NOT CBLAS_ROOT_DIR)
   IF (ENV{CBLASDIR})
     SET(CBLAS_ROOT_DIR $ENV{CBLASDIR})
     IF ("${SIZE_OF_VOIDP}" EQUAL 8)
-      SET(CBLAS_LIB64_DIR "${INTEL_MKL_ROOT_DIR}/lib64")
+        SET(CBLAS_LIB64_DIR "${CBLAS_ROOT_DIR}/lib64")
     ELSE()
-      SET(CBLAS_LIB32_DIR "${INTEL_MKL_ROOT_DIR}/lib")
+        SET(CBLAS_LIB32_DIR "${CBLAS_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")
+        SET(CBLAS_LIB64_DIR "${CBLAS_ROOT_DIR}/lib64")
     ELSE()
-      SET(CBLAS_LIB32_DIR "${INTEL_MKL_ROOT_DIR}/lib")
+        SET(CBLAS_LIB32_DIR "${CBLAS_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()
+    IF(APPLE)
+        IF ("${SIZE_OF_VOIDP}" EQUAL 8)
+            SET(CBLAS_LIB64_DIR "${CBLAS_ROOT_DIR}/lib")
+        ELSE()
+            SET(CBLAS_LIB32_DIR "${CBLAS_ROOT_DIR}/lib")
+        ENDIF()
+    ELSE(APPLE) # Windows and Linux
+        IF ("${SIZE_OF_VOIDP}" EQUAL 8)
+            SET(CBLAS_LIB64_DIR "${CBLAS_ROOT_DIR}/lib/intel64")
+        ELSE()
+            SET(CBLAS_LIB32_DIR "${CBLAS_ROOT_DIR}/lib/ia32")
+        ENDIF()
+    ENDIF(APPLE)
   ENDIF()
 
   SET(CBLAS_INCLUDE_DIR "${CBLAS_ROOT_DIR}/include")
diff --git a/CMakeModules/FindFFTW.cmake b/CMakeModules/FindFFTW.cmake
index a725f64..3156cec 100644
--- a/CMakeModules/FindFFTW.cmake
+++ b/CMakeModules/FindFFTW.cmake
@@ -24,6 +24,25 @@ IF(NOT FFTW_ROOT AND ENV{FFTWDIR})
     SET(FFTW_ROOT $ENV{FFTWDIR})
 ENDIF()
 
+IF (NOT INTEL_MKL_ROOT_DIR)
+  SET(INTEL_MKL_ROOT_DIR $ENV{INTEL_MKL_ROOT})
+ENDIF()
+
+IF(NOT FFTW_ROOT)
+
+  IF (ENV{FFTWDIR})
+    SET(FFTW_ROOT $ENV{FFTWDIR})
+  ENDIF()
+
+  IF (ENV{FFTW_ROOT_DIR})
+    SET(FFTW_ROOT $ENV{FFTW_ROOT_DIR})
+  ENDIF()
+
+  IF (INTEL_MKL_ROOT_DIR)
+    SET(FFTW_ROOT ${INTEL_MKL_ROOT_DIR})
+  ENDIF()
+ENDIF()
+
 # Check if we can use PkgConfig
 FIND_PACKAGE(PkgConfig)
 
@@ -44,14 +63,14 @@ IF(FFTW_ROOT)
     #find libs
     FIND_LIBRARY(
         FFTW_LIB
-        NAMES "fftw3" "libfftw3-3" "fftw3-3"
+        NAMES "fftw3" "libfftw3-3" "fftw3-3" "mkl_rt"
         PATHS ${FFTW_ROOT}
         PATH_SUFFIXES "lib" "lib64"
         NO_DEFAULT_PATH
         )
     FIND_LIBRARY(
         FFTWF_LIB
-        NAMES "fftw3f" "libfftw3f-3" "fftw3f-3"
+        NAMES "fftw3f" "libfftw3f-3" "fftw3f-3" "mkl_rt"
         PATHS ${FFTW_ROOT}
         PATH_SUFFIXES "lib" "lib64"
         NO_DEFAULT_PATH
@@ -62,18 +81,18 @@ IF(FFTW_ROOT)
         FFTW_INCLUDES
         NAMES "fftw3.h"
         PATHS ${FFTW_ROOT}
-        PATH_SUFFIXES "include"
+        PATH_SUFFIXES "include" "include/fftw"
         NO_DEFAULT_PATH
         )
 ELSE()
     FIND_LIBRARY(
         FFTW_LIB
-        NAMES "fftw3"
+        NAMES "fftw3" "mkl_rt"
         PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR}
         )
     FIND_LIBRARY(
         FFTWF_LIB
-        NAMES "fftw3f"
+        NAMES "fftw3f" "mkl_rt"
         PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR}
         )
     FIND_PATH(
diff --git a/CMakeModules/FindLAPACKE.cmake b/CMakeModules/FindLAPACKE.cmake
index dc4a045..0732cfa 100644
--- a/CMakeModules/FindLAPACKE.cmake
+++ b/CMakeModules/FindLAPACKE.cmake
@@ -141,8 +141,12 @@ ELSE(PC_LAPACKE_FOUND)
     ENDIF(LAPACKE_ROOT_DIR)
 ENDIF(PC_LAPACKE_FOUND)
 
-SET(LAPACK_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB})
-SET(LAPACK_INCLUDE_DIR ${LAPACKE_INCLUDES})
+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
diff --git a/src/backend/cpu/CMakeLists.txt b/src/backend/cpu/CMakeLists.txt
index 2032f0b..9387323 100644
--- a/src/backend/cpu/CMakeLists.txt
+++ b/src/backend/cpu/CMakeLists.txt
@@ -39,7 +39,15 @@ MESSAGE(STATUS "FFTW Found ? ${FFTW_FOUND}")
 MESSAGE(STATUS "FFTW Library: ${FFTW_LIBRARIES}")
 
 IF(APPLE)
-    FIND_PACKAGE(LAPACK)
+    FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
+    IF(NOT LAPACK_FOUND)
+        # UNSET THE VARIABLES FROM LAPACKE
+        UNSET(LAPACKE_LIB CACHE)
+        UNSET(LAPACK_LIB CACHE)
+        UNSET(LAPACKE_INCLUDES CACHE)
+        UNSET(LAPACKE_ROOT_DIR CACHE)
+        FIND_PACKAGE(LAPACK)
+    ENDIF()
 ELSE(APPLE) # Linux and Windows
     FIND_PACKAGE(LAPACKE)
 ENDIF(APPLE)
diff --git a/src/backend/cuda/CMakeLists.txt b/src/backend/cuda/CMakeLists.txt
index 8cecd81..ae0690d 100644
--- a/src/backend/cuda/CMakeLists.txt
+++ b/src/backend/cuda/CMakeLists.txt
@@ -102,7 +102,15 @@ ELSE(CUDA_cusolver_LIBRARY)
     IF(${CUDA_LAPACK_CPU_FALLBACK})
         ## Try to use CPU side lapack
         IF(APPLE)
-            FIND_PACKAGE(LAPACK)
+            FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
+            IF(NOT LAPACK_FOUND)
+                # UNSET THE VARIABLES FROM LAPACKE
+                UNSET(LAPACKE_LIB CACHE)
+                UNSET(LAPACK_LIB CACHE)
+                UNSET(LAPACKE_INCLUDES CACHE)
+                UNSET(LAPACKE_ROOT_DIR CACHE)
+                FIND_PACKAGE(LAPACK)
+            ENDIF()
         ELSE(APPLE) # Linux and Windows
             FIND_PACKAGE(LAPACKE)
         ENDIF(APPLE)
diff --git a/src/backend/opencl/CMakeLists.txt b/src/backend/opencl/CMakeLists.txt
index ce45c4b..bbe430d 100644
--- a/src/backend/opencl/CMakeLists.txt
+++ b/src/backend/opencl/CMakeLists.txt
@@ -21,7 +21,15 @@ ELSE(USE_OPENCL_MKL)
 ENDIF()
 
 IF(APPLE)
-    FIND_PACKAGE(LAPACK)
+    FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
+    IF(NOT LAPACK_FOUND)
+        # UNSET THE VARIABLES FROM LAPACKE
+        UNSET(LAPACKE_LIB CACHE)
+        UNSET(LAPACK_LIB CACHE)
+        UNSET(LAPACKE_INCLUDES CACHE)
+        UNSET(LAPACKE_ROOT_DIR CACHE)
+        FIND_PACKAGE(LAPACK)
+    ENDIF()
 ELSE(APPLE) # Linux and Windows
     FIND_PACKAGE(LAPACKE)
 ENDIF(APPLE)

-- 
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