From c029600a2663be5991349861a89cdbf2ed35c404 Mon Sep 17 00:00:00 2001 From: Davis King Date: Fri, 29 Jan 2016 10:44:14 -0500 Subject: [PATCH 1/2] Added more Intel MKL search paths --- dlib/cmake_find_blas.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dlib/cmake_find_blas.txt b/dlib/cmake_find_blas.txt index 1ec343727..268ba1051 100644 --- a/dlib/cmake_find_blas.txt +++ b/dlib/cmake_find_blas.txt @@ -218,6 +218,8 @@ elseif(WIN32 AND NOT MINGW) check_type_size( "void*" SIZE_OF_VOID_PTR) if (SIZE_OF_VOID_PTR EQUAL 8) set( mkl_search_path + "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_*/windows/mkl/lib/intel64" + "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_*/windows/compiler/lib/intel64" "C:/Program Files (x86)/Intel/Composer XE/mkl/lib/intel64" "C:/Program Files (x86)/Intel/Composer XE/compiler/lib/intel64" "C:/Program Files/Intel/Composer XE/mkl/lib/intel64" @@ -226,6 +228,8 @@ elseif(WIN32 AND NOT MINGW) find_library(mkl_intel mkl_intel_lp64 ${mkl_search_path}) else() set( mkl_search_path + "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_*/windows/mkl/lib/ia32" + "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_*/windows/compiler/lib/ia32" "C:/Program Files (x86)/Intel/Composer XE/mkl/lib/ia32" "C:/Program Files (x86)/Intel/Composer XE/compiler/lib/ia32" "C:/Program Files/Intel/Composer XE/mkl/lib/ia32" From b6b62fa2b190e03a7691ff62903f01ce16c7d8d8 Mon Sep 17 00:00:00 2001 From: Davis King Date: Fri, 29 Jan 2016 15:22:41 -0500 Subject: [PATCH 2/2] Made cmake avoid using the Intel MKL when building mex files since it will often create a conflict with MATLAB's copy of the MKL. --- dlib/cmake_find_blas.txt | 68 ++++++++++++++++++----------------- dlib/matlab/cmake_mex_wrapper | 1 + 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/dlib/cmake_find_blas.txt b/dlib/cmake_find_blas.txt index 268ba1051..2175b98d9 100644 --- a/dlib/cmake_find_blas.txt +++ b/dlib/cmake_find_blas.txt @@ -47,40 +47,43 @@ if (UNIX) include(CheckLibraryExists) - # Search for the needed libraries from the MKL. We will try to link against the mkl_rt - # file first since this way avoids linking bugs in some cases. - find_library(mkl_rt mkl_rt ${mkl_search_path}) - mark_as_advanced( mkl_rt ) - # if we found the MKL - if ( mkl_rt) - set(blas_libraries ${mkl_rt} ) - set(lapack_libraries ${mkl_rt} ) - set(blas_found 1) - set(lapack_found 1) - set(found_intel_mkl 1) - message(STATUS "Found Intel MKL BLAS/LAPACK library") - endif() + # Don't try to use the Intel MKL when we are building a MATLAB mex file + # since it will usually conflict with MATLAB's copy of the MKL and cause + # problems. + if (NOT BUILDING_MATLAB_MEX_FILE) + # Search for the needed libraries from the MKL. We will try to link against the mkl_rt + # file first since this way avoids linking bugs in some cases. + find_library(mkl_rt mkl_rt ${mkl_search_path}) + mark_as_advanced( mkl_rt ) + # if we found the MKL + if ( mkl_rt) + set(blas_libraries ${mkl_rt} ) + set(lapack_libraries ${mkl_rt} ) + set(blas_found 1) + set(lapack_found 1) + set(found_intel_mkl 1) + message(STATUS "Found Intel MKL BLAS/LAPACK library") + endif() + if (NOT found_intel_mkl) + # Search for the needed libraries from the MKL. This time try looking for a different + # set of MKL files and try to link against those. + find_library(mkl_core mkl_core ${mkl_search_path}) + find_library(mkl_thread mkl_intel_thread ${mkl_search_path}) + find_library(mkl_iomp iomp5 ${mkl_search_path}) + find_library(mkl_pthread pthread ${mkl_search_path}) - - if (NOT found_intel_mkl) - # Search for the needed libraries from the MKL. This time try looking for a different - # set of MKL files and try to link against those. - find_library(mkl_core mkl_core ${mkl_search_path}) - find_library(mkl_thread mkl_intel_thread ${mkl_search_path}) - find_library(mkl_iomp iomp5 ${mkl_search_path}) - find_library(mkl_pthread pthread ${mkl_search_path}) - - mark_as_advanced( mkl_intel mkl_core mkl_thread mkl_iomp mkl_pthread) - # If we found the MKL - if (mkl_intel AND mkl_core AND mkl_thread AND mkl_iomp AND mkl_pthread) - set(blas_libraries ${mkl_intel} ${mkl_core} ${mkl_thread} ${mkl_iomp} ${mkl_pthread}) - set(lapack_libraries ${mkl_intel} ${mkl_core} ${mkl_thread} ${mkl_iomp} ${mkl_pthread}) - set(blas_found 1) - set(lapack_found 1) - set(found_intel_mkl 1) - message(STATUS "Found Intel MKL BLAS/LAPACK library") - endif() + mark_as_advanced( mkl_intel mkl_core mkl_thread mkl_iomp mkl_pthread) + # If we found the MKL + if (mkl_intel AND mkl_core AND mkl_thread AND mkl_iomp AND mkl_pthread) + set(blas_libraries ${mkl_intel} ${mkl_core} ${mkl_thread} ${mkl_iomp} ${mkl_pthread}) + set(lapack_libraries ${mkl_intel} ${mkl_core} ${mkl_thread} ${mkl_iomp} ${mkl_pthread}) + set(blas_found 1) + set(lapack_found 1) + set(found_intel_mkl 1) + message(STATUS "Found Intel MKL BLAS/LAPACK library") + endif() + endif() endif() @@ -96,6 +99,7 @@ if (UNIX) /usr/lib/atlas /usr/lib/openblas-base /opt/OpenBLAS/lib + $ENV{OPENBLAS_HOME}/lib ) INCLUDE (CheckFunctionExists) diff --git a/dlib/matlab/cmake_mex_wrapper b/dlib/matlab/cmake_mex_wrapper index 0cdd188b5..821731e2c 100644 --- a/dlib/matlab/cmake_mex_wrapper +++ b/dlib/matlab/cmake_mex_wrapper @@ -5,6 +5,7 @@ cmake_minimum_required(VERSION 2.8.4) +set(BUILDING_MATLAB_MEX_FILE true) # Find MATLAB's include directory and needed libraries find_program(MATLAB_EXECUTABLE matlab PATHS