diff --git a/dlib/cmake_find_blas.txt b/dlib/cmake_find_blas.txt index 97f8f752b..681cffa40 100644 --- a/dlib/cmake_find_blas.txt +++ b/dlib/cmake_find_blas.txt @@ -29,12 +29,16 @@ if (UNIX) if (SIZE_OF_VOID_PTR EQUAL 8) set( mkl_search_path /opt/intel/mkl/*/lib/em64t + /opt/intel/mkl/lib/intel64 + /opt/intel/lib/intel64 ) find_library(mkl_intel mkl_intel_lp64 ${mkl_search_path}) - else() + else() set( mkl_search_path /opt/intel/mkl/*/lib/32 + /opt/intel/mkl/lib/ia32 + /opt/intel/lib/ia32 ) find_library(mkl_intel mkl_intel ${mkl_search_path}) @@ -45,21 +49,22 @@ if (UNIX) # Search for the needed libraries from the MKL find_library(mkl_core mkl_core ${mkl_search_path}) find_library(mkl_thread mkl_intel_thread ${mkl_search_path}) - find_library(mkl_io iomp5 ${mkl_search_path}) + find_library(mkl_iomp iomp5 ${mkl_search_path}) #MKL also needs pthreads so search for that as well find_library(mkl_pthread pthread ${mkl_search_path}) - mark_as_advanced( mkl_intel mkl_core mkl_thread mkl_io mkl_pthread) + mark_as_advanced( mkl_intel mkl_core mkl_thread mkl_iomp mkl_pthread) # if we found the MKL #if (mkl_mkl AND mkl_core AND mkl_guide AND mkl_pthread) - if (mkl_intel AND mkl_core AND mkl_thread AND mkl_io AND mkl_pthread) - set(blas_libraries ${mkl_intel} ${mkl_core} ${mkl_thread} ${mkl_io} ${mkl_pthread}) - set(lapack_libraries ${mkl_intel} ${mkl_core} ${mkl_thread} ${mkl_io} ${mkl_pthread}) + 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() @@ -117,8 +122,10 @@ if (UNIX) # Make sure we really found a CBLAS library. That is, it needs to expose # the proper cblas link symbols. So here we test if one of them is present - # and assume everything is good if it is. - if (blas_found) + # and assume everything is good if it is. Note that we don't do this check if + # we found the Intel MKL since for some reason CHECK_FUNCTION_EXISTS doesn't work + # with it. But it's fine since the MKL should always have cblas. + if (blas_found AND NOT found_intel_mkl) INCLUDE (CheckFunctionExists) set(CMAKE_REQUIRED_LIBRARIES ${blas_libraries}) CHECK_FUNCTION_EXISTS(cblas_ddot HAVE_CBLAS)