|
|
@ -23,6 +23,7 @@ |
|
|
|
########## |
|
|
|
### List of vendors (BLA_VENDOR) valid in this module |
|
|
|
## Goto,ATLAS PhiPACK,CXML,DXML,SunPerf,SCSL,SGIMATH,IBMESSL,Intel10_32 (intel mkl v10 32 bit),Intel10_64lp (intel mkl v10 64 bit,lp thread model, lp64 model), |
|
|
|
## Intel10_64lp_seq (intel mkl v10 64 bit,sequential code, lp64 model), |
|
|
|
## Intel( older versions of mkl 32 and 64 bit), ACML,ACML_MP,ACML_GPU,Apple, NAS, Generic |
|
|
|
# C/CXX should be enabled to use Intel mkl |
|
|
|
|
|
|
@ -85,6 +86,7 @@ if (NOT _libdir) |
|
|
|
set(_libdir /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 ENV LD_LIBRARY_PATH) |
|
|
|
endif () |
|
|
|
endif () |
|
|
|
|
|
|
|
foreach(_library ${_list}) |
|
|
|
set(_combined_name ${_combined_name}_${_library}) |
|
|
|
|
|
|
@ -115,7 +117,7 @@ foreach(_library ${_list}) |
|
|
|
endforeach(_library ${_list}) |
|
|
|
if(_libraries_work) |
|
|
|
# Test this combination of libraries. |
|
|
|
set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_threads}) |
|
|
|
set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_thread}) |
|
|
|
# message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}") |
|
|
|
if (_CHECK_FORTRAN) |
|
|
|
check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS) |
|
|
@ -460,117 +462,99 @@ if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") |
|
|
|
else(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED) |
|
|
|
find_package(Threads REQUIRED) |
|
|
|
endif(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED) |
|
|
|
if (WIN32) |
|
|
|
|
|
|
|
set(BLAS_SEARCH_LIBS "") |
|
|
|
|
|
|
|
if(BLA_F95) |
|
|
|
if(NOT BLAS95_LIBRARIES) |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS95_LIBRARIES |
|
|
|
BLAS |
|
|
|
sgemm |
|
|
|
"" |
|
|
|
"mkl_blas95;mkl_intel_c;mkl_intel_thread;mkl_core;libguide40" |
|
|
|
"" |
|
|
|
) |
|
|
|
endif(NOT BLAS95_LIBRARIES) |
|
|
|
else(BLA_F95) |
|
|
|
if(NOT BLAS_LIBRARIES) |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS_LIBRARIES |
|
|
|
BLAS |
|
|
|
SGEMM |
|
|
|
"" |
|
|
|
"mkl_c_dll;mkl_intel_thread_dll;mkl_core_dll;libguide40" |
|
|
|
"" |
|
|
|
) |
|
|
|
endif(NOT BLAS_LIBRARIES) |
|
|
|
endif(BLA_F95) |
|
|
|
else(WIN32) |
|
|
|
if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All") |
|
|
|
if(BLA_F95) |
|
|
|
if(NOT BLAS95_LIBRARIES) |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS95_LIBRARIES |
|
|
|
BLAS |
|
|
|
sgemm |
|
|
|
"" |
|
|
|
"mkl_blas95;mkl_intel;mkl_intel_thread;mkl_core;guide" |
|
|
|
"${CMAKE_THREAD_LIBS_INIT};${LM}" |
|
|
|
) |
|
|
|
endif(NOT BLAS95_LIBRARIES) |
|
|
|
else(BLA_F95) |
|
|
|
if(NOT BLAS_LIBRARIES) |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS_LIBRARIES |
|
|
|
BLAS |
|
|
|
sgemm |
|
|
|
"" |
|
|
|
"mkl_intel;mkl_intel_thread;mkl_core;guide" |
|
|
|
"${CMAKE_THREAD_LIBS_INIT}" |
|
|
|
"${LM}" |
|
|
|
) |
|
|
|
endif(NOT BLAS_LIBRARIES) |
|
|
|
endif(BLA_F95) |
|
|
|
endif (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All") |
|
|
|
if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All") |
|
|
|
if(BLA_F95) |
|
|
|
if(NOT BLAS95_LIBRARIES) |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS95_LIBRARIES |
|
|
|
BLAS |
|
|
|
sgemm |
|
|
|
"" |
|
|
|
"mkl_blas95;mkl_intel_lp64;mkl_intel_thread;mkl_core;guide" |
|
|
|
"${CMAKE_THREAD_LIBS_INIT};${LM}" |
|
|
|
) |
|
|
|
endif(NOT BLAS95_LIBRARIES) |
|
|
|
else(BLA_F95) |
|
|
|
if(NOT BLAS_LIBRARIES) |
|
|
|
set(BLAS_mkl_SEARCH_SYMBOL SGEMM) |
|
|
|
set(_LIBRARIES BLAS95_LIBRARIES) |
|
|
|
if (WIN32) |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_blas95 mkl_intel_c mkl_intel_thread mkl_core libguide40") |
|
|
|
else (WIN32) |
|
|
|
if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_blas95 mkl_intel mkl_intel_thread mkl_core guide") |
|
|
|
endif () |
|
|
|
if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All") |
|
|
|
# old version |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_blas95 mkl_intel_lp64 mkl_intel_thread mkl_core guide") |
|
|
|
|
|
|
|
# mkl >= 10.3 |
|
|
|
if (CMAKE_C_COMPILER MATCHES ".+gcc.*") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core") |
|
|
|
set(LM "${LM};-lgomp") |
|
|
|
else () |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core iomp5") |
|
|
|
endif () |
|
|
|
endif () |
|
|
|
endif (WIN32) |
|
|
|
if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_blas95_lp64 mkl_intel_lp64 mkl_sequential mkl_core") |
|
|
|
endif () |
|
|
|
else (BLA_F95) |
|
|
|
set(BLAS_mkl_SEARCH_SYMBOL sgemm) |
|
|
|
set(_LIBRARIES BLAS_LIBRARIES) |
|
|
|
if (WIN32) |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_c_dll mkl_intel_thread_dll mkl_core_dll libguide40") |
|
|
|
else (WIN32) |
|
|
|
if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_intel mkl_intel_thread mkl_core guide") |
|
|
|
endif () |
|
|
|
if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All") |
|
|
|
|
|
|
|
# old version |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_intel_lp64 mkl_intel_thread mkl_core guide") |
|
|
|
|
|
|
|
# mkl >= 10.3 |
|
|
|
if (CMAKE_C_COMPILER MATCHES ".+gcc.*") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_intel_lp64 mkl_gnu_thread mkl_core") |
|
|
|
set(LM "${LM};-lgomp") |
|
|
|
else () |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_intel_lp64 mkl_intel_thread mkl_core iomp5") |
|
|
|
endif () |
|
|
|
endif () |
|
|
|
|
|
|
|
#older vesions of intel mkl libs |
|
|
|
if (BLA_VENDOR STREQUAL "Intel" OR BLA_VENDOR STREQUAL "All") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_ia32") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_em64t") |
|
|
|
endif () |
|
|
|
endif (WIN32) |
|
|
|
if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All") |
|
|
|
list(APPEND BLAS_SEARCH_LIBS |
|
|
|
"mkl_intel_lp64 mkl_sequential mkl_core") |
|
|
|
endif () |
|
|
|
endif (BLA_F95) |
|
|
|
|
|
|
|
foreach (IT ${BLAS_SEARCH_LIBS}) |
|
|
|
string(REPLACE " " ";" SEARCH_LIBS ${IT}) |
|
|
|
if (${_LIBRARIES}) |
|
|
|
else () |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS_LIBRARIES |
|
|
|
BLAS |
|
|
|
sgemm |
|
|
|
"" |
|
|
|
"mkl_intel_lp64;mkl_intel_thread;mkl_core;guide" |
|
|
|
"${CMAKE_THREAD_LIBS_INIT};${LM}" |
|
|
|
) |
|
|
|
endif(NOT BLAS_LIBRARIES) |
|
|
|
endif(BLA_F95) |
|
|
|
endif (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All") |
|
|
|
endif (WIN32) |
|
|
|
#older vesions of intel mkl libs |
|
|
|
# BLAS in intel mkl library? (shared) |
|
|
|
if(NOT BLAS_LIBRARIES) |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS_LIBRARIES |
|
|
|
BLAS |
|
|
|
sgemm |
|
|
|
"" |
|
|
|
"mkl;guide" |
|
|
|
"${CMAKE_THREAD_LIBS_INIT};${LM}" |
|
|
|
) |
|
|
|
endif(NOT BLAS_LIBRARIES) |
|
|
|
#BLAS in intel mkl library? (static, 32bit) |
|
|
|
if(NOT BLAS_LIBRARIES) |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS_LIBRARIES |
|
|
|
BLAS |
|
|
|
sgemm |
|
|
|
"" |
|
|
|
"mkl_ia32;guide" |
|
|
|
"${CMAKE_THREAD_LIBS_INIT};${LM}" |
|
|
|
) |
|
|
|
endif(NOT BLAS_LIBRARIES) |
|
|
|
#BLAS in intel mkl library? (static, em64t 64bit) |
|
|
|
if(NOT BLAS_LIBRARIES) |
|
|
|
check_fortran_libraries( |
|
|
|
BLAS_LIBRARIES |
|
|
|
BLAS |
|
|
|
sgemm |
|
|
|
"" |
|
|
|
"mkl_em64t;guide" |
|
|
|
"${CMAKE_THREAD_LIBS_INIT};${LM}" |
|
|
|
) |
|
|
|
endif(NOT BLAS_LIBRARIES) |
|
|
|
${_LIBRARIES} |
|
|
|
BLAS |
|
|
|
${BLAS_mkl_SEARCH_SYMBOL} |
|
|
|
"" |
|
|
|
"${SEARCH_LIBS}" |
|
|
|
"${CMAKE_THREAD_LIBS_INIT};${LM}" |
|
|
|
) |
|
|
|
endif () |
|
|
|
endforeach () |
|
|
|
|
|
|
|
endif (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX) |
|
|
|
endif (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") |
|
|
|
|
|
|
|