Updated cmake file so it can find the new version of the Intel MKL on linux.

This commit is contained in:
Davis King 2012-12-21 16:13:29 -05:00
parent ceb71d96e6
commit 1ef4260e32
1 changed files with 15 additions and 8 deletions

View File

@ -29,12 +29,16 @@ if (UNIX)
if (SIZE_OF_VOID_PTR EQUAL 8) if (SIZE_OF_VOID_PTR EQUAL 8)
set( mkl_search_path set( mkl_search_path
/opt/intel/mkl/*/lib/em64t /opt/intel/mkl/*/lib/em64t
/opt/intel/mkl/lib/intel64
/opt/intel/lib/intel64
) )
find_library(mkl_intel mkl_intel_lp64 ${mkl_search_path}) find_library(mkl_intel mkl_intel_lp64 ${mkl_search_path})
else() else()
set( mkl_search_path set( mkl_search_path
/opt/intel/mkl/*/lib/32 /opt/intel/mkl/*/lib/32
/opt/intel/mkl/lib/ia32
/opt/intel/lib/ia32
) )
find_library(mkl_intel mkl_intel ${mkl_search_path}) find_library(mkl_intel mkl_intel ${mkl_search_path})
@ -45,21 +49,22 @@ if (UNIX)
# Search for the needed libraries from the MKL # Search for the needed libraries from the MKL
find_library(mkl_core mkl_core ${mkl_search_path}) find_library(mkl_core mkl_core ${mkl_search_path})
find_library(mkl_thread mkl_intel_thread ${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 #MKL also needs pthreads so search for that as well
find_library(mkl_pthread pthread ${mkl_search_path}) 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 we found the MKL
#if (mkl_mkl AND mkl_core AND mkl_guide AND mkl_pthread) #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) 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_io} ${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_io} ${mkl_pthread}) set(lapack_libraries ${mkl_intel} ${mkl_core} ${mkl_thread} ${mkl_iomp} ${mkl_pthread})
set(blas_found 1) set(blas_found 1)
set(lapack_found 1) set(lapack_found 1)
set(found_intel_mkl 1)
message(STATUS "Found Intel MKL BLAS/LAPACK library") message(STATUS "Found Intel MKL BLAS/LAPACK library")
endif() endif()
@ -117,8 +122,10 @@ if (UNIX)
# Make sure we really found a CBLAS library. That is, it needs to expose # 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 # the proper cblas link symbols. So here we test if one of them is present
# and assume everything is good if it is. # and assume everything is good if it is. Note that we don't do this check if
if (blas_found) # 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) INCLUDE (CheckFunctionExists)
set(CMAKE_REQUIRED_LIBRARIES ${blas_libraries}) set(CMAKE_REQUIRED_LIBRARIES ${blas_libraries})
CHECK_FUNCTION_EXISTS(cblas_ddot HAVE_CBLAS) CHECK_FUNCTION_EXISTS(cblas_ddot HAVE_CBLAS)