Skip to content

Commit 8064ebf

Browse files
authored
Merge pull request #2412 from QMCPACK/rc_392
Rc 392
2 parents e53d0b9 + 0505c82 commit 8064ebf

File tree

435 files changed

+45239
-35333
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

435 files changed

+45239
-35333
lines changed

CHANGELOG.md

+15
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22

33
Notable changes to QMCPACK are documented in this file.
44

5+
## [3.9.2] - 2020-04-29
6+
7+
### Notes
8+
9+
This is an important bug fix release. As described in [\#2330](https://github.com/QMCPACK/qmcpack/issues/2330), since v3.8.0 the
10+
timestep was not correctly changed between different DMC blocks if the time step was changed in the input, biasing the results.
11+
Runs using a single time step were not affected. Thanks to Chandler Bennett for identifying the problem.
12+
13+
* Bug fix: timestep was not correctly changed between DMC blocks if it was changed in the input [\#2330](https://github.com/QMCPACK/qmcpack/issues/2330).
14+
* qmcfinitesize tool added [\#2329](https://github.com/QMCPACK/qmcpack/pull/2329).
15+
* QMCPACK spack package now supports AFQMC [\#2237](https://github.com/QMCPACK/qmcpack/issues/2237).
16+
* Improvements to deterministic tests: these are now fully reliable other than for some CUDA builds and some mixed precision CPU configurations.
17+
* Many improvements to cmake configuration for faster builds, e.g. [\#2389](https://github.com/QMCPACK/qmcpack/pull/2389).
18+
* Ongoing source cleanup and fewer compile-time warnings, e.g. [\#2375](https://github.com/QMCPACK/qmcpack/pull/2375).
19+
520
## [3.9.1] - 2020-02-11
621

722
### Notes

CMake/CheckSincos.cmake

+1-16
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,6 @@
11
INCLUDE(${CMAKE_ROOT}/Modules/CheckCXXSourceCompiles.cmake)
22

3-
SET(SINCOS_INCLUDE cmath)
4-
5-
SET(ENABLE_MASS FALSE CACHE BOOL "ENABLE MASS math libraries for Power architecture")
6-
# This needs to go before HAVE_SINCOS
7-
IF(ENABLE_MASS)
8-
INCLUDE(CMake/FindIBMMASS.cmake)
9-
IF(HAVE_MASS)
10-
SET(CMAKE_REQUIRED_INCLUDES ${MASS_INCLUDE_DIRECTORIES} ${CMAKE_REQUIRED_INCLUDES})
11-
SET(CMAKE_REQUIRED_LINK_OPTIONS ${MASS_LINKER_FLAGS})
12-
SET(CMAKE_REQUIRED_LIBRARIES ${MASS_LIBRARIES})
13-
ENDIF(HAVE_MASS)
14-
ENDIF(ENABLE_MASS)
15-
16-
MESSAGE("CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}")
17-
MESSAGE("CMAKE_REQUIRED_LINK_OPTIONS: ${CMAKE_REQUIRED_LINK_OPTIONS}")
18-
MESSAGE("CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}")
3+
SET(CMAKE_REQUIRED_LIBRARIES Math::scalar_vector_functions)
194

205
SET( SINCOS_TEST_SRC
216
"#include \"${SINCOS_INCLUDE}\"

CMake/ClangCompilers.cmake

+8-2
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
1010
# Enable OpenMP
1111
IF(QMC_OMP)
1212
SET(ENABLE_OPENMP 1)
13-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
1413
IF(ENABLE_OFFLOAD)
1514
SET(OFFLOAD_TARGET "nvptx64-nvidia-cuda" CACHE STRING "Offload target architecture")
16-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -fopenmp-targets=${OFFLOAD_TARGET}")
15+
IF(OFFLOAD_TARGET MATCHES "spir64")
16+
SET(OMP_FLAG "-fiopenmp")
17+
ELSE(OFFLOAD_TARGET MATCHES "spir64")
18+
SET(OMP_FLAG "-fopenmp")
19+
ENDIF(OFFLOAD_TARGET MATCHES "spir64")
20+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OMP_FLAG}")
21+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OMP_FLAG} -fopenmp-targets=${OFFLOAD_TARGET}")
1722
ELSE()
23+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
1824
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
1925
ENDIF()
2026
ENDIF(QMC_OMP)

CMake/FindFFTW.cmake

+5
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ IF(FFTW_INCLUDE_DIR AND FFTW_LIBRARIES)
2020
MESSAGE(STATUS "FFTW_INCLUDE_DIR=${FFTW_INCLUDE_DIR}")
2121
MESSAGE(STATUS "FFTW_LIBRARIES=${FFTW_LIBRARIES}")
2222
SET(FFTW_FOUND TRUE)
23+
#create FFTW3 target
24+
ADD_LIBRARY(Math::FFTW3 INTERFACE IMPORTED)
25+
SET_TARGET_PROPERTIES(Math::FFTW3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIR}"
26+
INTERFACE_COMPILE_DEFINITIONS "HAVE_LIBFFTW"
27+
INTERFACE_LINK_LIBRARIES "${FFTW_LIBRARIES}")
2328
ENDIF()
2429

2530
MARK_AS_ADVANCED(

CMake/FindIBMMASS.cmake

+16-15
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ set(SUFFIXES include)
77
find_path(MASS_INCLUDE_DIRECTORIES name "mass.h" HINTS ${MASS_ROOT}
88
PATH_SUFFIXES ${SUFFIXES})
99
if (NOT MASS_INCLUDE_DIRECTORIES)
10-
message(FATAL_ERROR "MASS_INCLUDE_DIRECTORIES not set. \"mass.h\" not found in MASS_ROOT/(${SUFFIXES})")
10+
MESSAGE(FATAL_ERROR "MASS_INCLUDE_DIRECTORIES not set. \"mass.h\" not found in MASS_ROOT/(${SUFFIXES})")
1111
endif (NOT MASS_INCLUDE_DIRECTORIES)
12-
message("MASS_INCLUDE_DIRECTORIES: ${MASS_INCLUDE_DIRECTORIES}")
12+
MESSAGE(STATUS "MASS_INCLUDE_DIRECTORIES: ${MASS_INCLUDE_DIRECTORIES}")
1313

1414
# Finding and setting the MASS_LINK_DIRECTORIES
1515
# the directory organization varies with platform and targets
@@ -19,10 +19,10 @@ set(SUFFIXES lib lib64)
1919
find_path(MASS_LINK_DIRECTORIES name "${MASS_FIND_LIB}" HINTS ${MASS_ROOT}
2020
PATH_SUFFIXES ${SUFFIXES})
2121
if (NOT MASS_LINK_DIRECTORIES)
22-
message(FATAL_ERROR "MASS_LINK_DIRECTORIES not set. ${MASS_FIND_LIB} "
22+
MESSAGE(FATAL_ERROR "MASS_LINK_DIRECTORIES not set. ${MASS_FIND_LIB} "
2323
"not found in MASS_ROOT/(${SUFFIXES})")
2424
endif (NOT MASS_LINK_DIRECTORIES)
25-
message("MASS_LINK_DIRECTORIES: ${MASS_LINK_DIRECTORIES}")
25+
MESSAGE(STATUS "MASS_LINK_DIRECTORIES: ${MASS_LINK_DIRECTORIES}")
2626

2727
set(MASS_LINKER_FLAGS -L${MASS_LINK_DIRECTORIES} -Wl,-rpath,${MASS_LINK_DIRECTORIES})
2828
set(MASS_LIBRARIES "-lmass -lmassv")
@@ -45,6 +45,7 @@ for( int i = 0; i < in_size; ++i)
4545
vlog10(resultv, inputv, &in_size);
4646
}
4747
")
48+
4849
try_compile(HAVE_MASS ${CMAKE_BINARY_DIR}
4950
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mass.cxx
5051
CMAKE_FLAGS
@@ -58,17 +59,17 @@ if ( NOT HAVE_MASS )
5859
endif ( NOT HAVE_MASS )
5960

6061
IF ( HAVE_MASS )
61-
SET( MASS_FOUND 1 )
62-
SET( MASS_FLAGS ${MASS_COMPILE_DEFINITIONS} )
63-
include_directories( ${MASS_INCLUDE_DIRECTORIES} )
64-
set( HAVE_VECTOR_MATH 1 )
65-
set( HAVE_MASSV 1 )
66-
set( SINCOS_INCLUDE mass.h )
62+
SET( MASS_FOUND TRUE )
63+
SET( HAVE_MASSV TRUE )
6764
MESSAGE(STATUS "MASS found: HAVE_MASS=${HAVE_MASS}, HAVE_MASSV=${HAVE_MASSV}")
65+
66+
#create scalar_vector_functions target
67+
ADD_LIBRARY(Math::scalar_vector_functions INTERFACE IMPORTED)
68+
SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_COMPILE_DEFINITIONS "HAVE_MASS;HAVE_MASSV"
69+
INTERFACE_INCLUDE_DIRECTORIES "${MASS_INCLUDE_DIRECTORIES}"
70+
INTERFACE_LINK_LIBRARIES "${MASS_LINKER_FLAGS} ${MASS_LIBRARIES}")
71+
set( SINCOS_INCLUDE mass.h )
6872
ELSE( HAVE_MASS )
69-
SET( MASS_FOUND 0 )
70-
SET( MASS_FLAGS )
71-
SET( MASS_LIBRARIES )
72-
SET( MASS_LINKER_FLAGS )
73-
MESSAGE("MASS not found")
73+
SET( MASS_FOUND FALSE )
74+
MESSAGE(STATUS "MASS not found")
7475
ENDIF( HAVE_MASS )

CMake/FindMKL.cmake

+101-62
Original file line numberDiff line numberDiff line change
@@ -4,81 +4,89 @@ INCLUDE( CheckCXXSourceCompiles )
44

55
MESSAGE(STATUS "Looking for Intel MKL libraries")
66

7-
# Extremely Basic Support of common mkl module environment variables
8-
# or -DMKLROOT/-DMKL_HOME instead of preferred -DMKL_ROOT
9-
# Some Linux distributions (Ubuntu >= 18.10) provide MKL
10-
# headers in /usr/include/mkl, define MKL_ROOT but not used for library searching.
11-
if (NOT MKL_ROOT)
12-
# Finding and setting the MKL_INCLUDE_DIRECTORIES
13-
find_path(MKL_INCLUDE_DIRECTORIES "mkl.h"
14-
HINTS ${MKLROOT} ${MKL_HOME} $ENV{MKLROOT} $ENV{MKL_ROOT} $ENV{MKL_HOME}
15-
PATH_SUFFIXES include mkl)
16-
string(REPLACE "/include" "" MKL_ROOT ${MKL_INCLUDE_DIRECTORIES})
17-
else (NOT MKL_ROOT)
18-
# Finding and setting the MKL_INCLUDE_DIRECTORIES
19-
set(SUFFIXES include)
20-
find_path(MKL_INCLUDE_DIRECTORIES "mkl.h" HINTS ${MKL_ROOT}
21-
PATH_SUFFIXES ${SUFFIXES})
22-
if (NOT MKL_INCLUDE_DIRECTORIES)
7+
IF(DEFINED MKL_ROOT)
8+
# Finding and setting the MKL_INCLUDE_DIRECTORIES based on explicit MKL_ROOT
9+
SET(SUFFIXES include)
10+
FIND_PATH(MKL_INCLUDE_DIRECTORIES "mkl.h" HINTS ${MKL_ROOT}
11+
PATH_SUFFIXES ${SUFFIXES} NO_CMAKE_SYSTEM_PATH)
12+
IF(NOT MKL_INCLUDE_DIRECTORIES)
2313
message(FATAL_ERROR "MKL_INCLUDE_DIRECTORIES not set. \"mkl.h\" not found in MKL_ROOT/(${SUFFIXES})")
24-
endif ()
25-
endif (NOT MKL_ROOT)
14+
ENDIF ()
15+
ELSE(DEFINED MKL_ROOT)
16+
# Finding and setting the MKL_INCLUDE_DIRECTORIES based on MKLROOT, MKL_HOME, $ENV{MKLROOT}, $ENV{MKL_ROOT}, $ENV{MKL_HOME}
17+
# Extremely Basic Support of common mkl module environment variables
18+
# or -DMKLROOT/-DMKL_HOME instead of preferred -DMKL_ROOT
19+
FIND_PATH(MKL_INCLUDE_DIRECTORIES "mkl.h"
20+
HINTS ${MKLROOT} ${MKL_HOME} $ENV{MKLROOT} $ENV{MKL_ROOT} $ENV{MKL_HOME}
21+
PATH_SUFFIXES include NO_CMAKE_SYSTEM_PATH)
22+
IF(MKL_INCLUDE_DIRECTORIES)
23+
STRING(REPLACE "/include" "" MKL_ROOT ${MKL_INCLUDE_DIRECTORIES})
24+
ELSE(MKL_INCLUDE_DIRECTORIES)
25+
# Finding MKL headers in the system
26+
FIND_PATH(MKL_INCLUDE_DIRECTORIES "mkl.h" PATH_SUFFIXES mkl)
27+
ENDIF(MKL_INCLUDE_DIRECTORIES)
28+
ENDIF(DEFINED MKL_ROOT)
2629

27-
if (NOT MKL_ROOT)
28-
if (CMAKE_CXX_COMPILER_ID MATCHES "Intel")
29-
message(FATAL_ERROR "Intel's standard compilervar.sh sets the env variable MKLROOT.\n"
30+
IF(MKL_INCLUDE_DIRECTORIES)
31+
MESSAGE("MKL_INCLUDE_DIRECTORIES: ${MKL_INCLUDE_DIRECTORIES}")
32+
ELSE(MKL_INCLUDE_DIRECTORIES)
33+
IF(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
34+
MESSAGE(FATAL_ERROR "Intel's standard compilervar.sh sets the env variable MKLROOT.\n"
3035
"If you are invoking icc without the customary environment\n"
3136
"you must set the the environment variable or pass cmake MKL_ROOT.")
32-
else(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
33-
message (FATAL_ERROR "ENABLE_MKL is TRUE and mkl directory not found. Set MKL_ROOT." )
34-
endif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
35-
endif (NOT MKL_ROOT)
36-
37-
message("MKL_INCLUDE_DIRECTORIES: ${MKL_INCLUDE_DIRECTORIES}")
37+
ELSE(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
38+
MESSAGE(FATAL_ERROR "ENABLE_MKL is TRUE and mkl directory not found. Set MKL_ROOT." )
39+
ENDIF(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
40+
ENDIF(MKL_INCLUDE_DIRECTORIES)
3841

39-
if ( NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
42+
IF( NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
4043
# Finding and setting the MKL_LINK_DIRECTORIES
4144
# the directory organization varies with platform and targets
4245
# these suffixes are not exhaustive
43-
set(MKL_FIND_LIB "libmkl_intel_lp64${CMAKE_SHARED_LIBRARY_SUFFIX}")
44-
set(SUFFIXES lib lib/intel64)
45-
find_library(MKL_LINK_DIRECTORIES "${MKL_FIND_LIB}" HINTS ${MKL_ROOT}
46-
PATH_SUFFIXES ${SUFFIXES})
47-
if (NOT MKL_LINK_DIRECTORIES)
48-
message(FATAL_ERROR "MKL_LINK_DIRECTORIES not set. ${MKL_FIND_LIB} "
49-
"not found in MKL_ROOT/(${SUFFIXES})")
50-
endif ()
51-
string(REPLACE "/${MKL_FIND_LIB}" "" MKL_LINK_DIRECTORIES ${MKL_LINK_DIRECTORIES})
52-
message("MKL_LINK_DIRECTORIES: ${MKL_LINK_DIRECTORIES}")
53-
set(MKL_LINKER_FLAGS "-L${MKL_LINK_DIRECTORIES} -Wl,-rpath,${MKL_LINK_DIRECTORIES}")
54-
set(MKL_LIBRARIES "-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl")
55-
else ( NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
46+
SET(MKL_FIND_LIB "libmkl_intel_lp64${CMAKE_SHARED_LIBRARY_SUFFIX}")
47+
SET(SUFFIXES lib lib/intel64)
48+
FIND_PATH(MKL_LINK_DIRECTORIES "${MKL_FIND_LIB}" HINTS ${MKL_ROOT}
49+
PATH_SUFFIXES ${SUFFIXES} NO_CMAKE_SYSTEM_PATH)
50+
IF(MKL_LINK_DIRECTORIES)
51+
MESSAGE("MKL_LINK_DIRECTORIES: ${MKL_LINK_DIRECTORIES}")
52+
set(MKL_LINKER_FLAGS "-L${MKL_LINK_DIRECTORIES} -Wl,-rpath,${MKL_LINK_DIRECTORIES}")
53+
ELSE(MKL_LINK_DIRECTORIES)
54+
FIND_LIBRARY(MKL_SYSTEM_LIBRARIES "${MKL_FIND_LIB}")
55+
IF(MKL_SYSTEM_LIBRARIES)
56+
MESSAGE("MKL provided by the system. Leave MKL_LINK_DIRECTORIES unset.")
57+
ENDIF()
58+
ENDIF(MKL_LINK_DIRECTORIES)
59+
IF (NOT MKL_LINK_DIRECTORIES AND NOT MKL_SYSTEM_LIBRARIES)
60+
MESSAGE(FATAL_ERROR "${MKL_FIND_LIB} found neither in MKL_ROOT/(${SUFFIXES}) nor on system library paths.")
61+
ENDIF ()
62+
SET(MKL_LIBRARIES "-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl")
63+
ELSE ( NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
5664
# this takes away link control for intel but is convenient
5765
# perhaps we should consider dropping it since it will more or less
5866
# unify the MKL setup.
5967
# Note -mkl implicitly includes that icc's mkl/include
60-
set(MKL_COMPILE_DEFINITIONS "-mkl")
61-
endif (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
68+
SET(MKL_COMPILE_DEFINITIONS "-mkl")
69+
ENDIF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
6270

6371
# Check for mkl.h
6472
FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl.cxx"
6573
"#include <iostream>\n #include <mkl.h>\n int main() { return 0; }\n" )
66-
try_compile(HAVE_MKL ${CMAKE_BINARY_DIR}
74+
TRY_COMPILE(HAVE_MKL ${CMAKE_BINARY_DIR}
6775
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl.cxx
6876
CMAKE_FLAGS
6977
"-DINCLUDE_DIRECTORIES=${MKL_INCLUDE_DIRECTORIES} "
7078
"-DLINK_DIRECTORIES=${MKL_LINK_DIRECTORIES}"
7179
LINK_LIBRARIES "${MKL_LIBRARIES}"
7280
COMPILE_DEFINITIONS "${MKL_COMPILE_DEFINITIONS}"
7381
OUTPUT_VARIABLE MKL_OUT)
74-
if ( NOT HAVE_MKL )
82+
IF( NOT HAVE_MKL )
7583
MESSAGE( "${MKL_OUT}" )
76-
endif ( NOT HAVE_MKL )
84+
ENDIF( NOT HAVE_MKL )
7785

7886
# Check for mkl_vml_functions.h
7987
FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl_vml.cxx"
8088
"#include <iostream>\n #include <mkl_vml_functions.h>\n int main() { return 0; }\n" )
81-
try_compile(HAVE_MKL_VML ${CMAKE_BINARY_DIR}
89+
TRY_COMPILE(HAVE_MKL_VML ${CMAKE_BINARY_DIR}
8290
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl_vml.cxx
8391
CMAKE_FLAGS
8492
"-DINCLUDE_DIRECTORIES=${MKL_INCLUDE_DIRECTORIES} "
@@ -87,34 +95,65 @@ try_compile(HAVE_MKL_VML ${CMAKE_BINARY_DIR}
8795
OUTPUT_VARIABLE MKL_OUT)
8896

8997
# Check for fftw3
90-
find_path(MKL_FFTW3 "fftw3.h"
98+
FIND_PATH(MKL_FFTW3 "fftw3.h"
9199
HINTS ${MKL_INCLUDE_DIRECTORIES}
92100
PATH_SUFFIXES fftw)
93-
if(MKL_FFTW3)
94-
list(APPEND MKL_INCLUDE_DIRECTORIES ${MKL_FFTW3})
101+
IF(MKL_FFTW3)
95102
FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl_fftw3.cxx"
96103
"#include <iostream>\n #include <fftw3.h>\n int main() { return 0; }\n" )
97-
try_compile(HAVE_MKL_FFTW3 ${CMAKE_BINARY_DIR}
104+
TRY_COMPILE(HAVE_MKL_FFTW3 ${CMAKE_BINARY_DIR}
98105
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl_fftw3.cxx
99106
CMAKE_FLAGS
100-
"-DINCLUDE_DIRECTORIES=${MKL_INCLUDE_DIRECTORIES} "
107+
"-DINCLUDE_DIRECTORIES=${MKL_FFTW3} "
101108
"-DLINK_DIRECTORIES=${MKL_LINK_DIRECTORIES}"
102109
LINK_LIBRARIES "${MKL_LIBRARIES}"
103110
COMPILE_DEFINITIONS "${MKL_COMPILE_DEFINITIONS}"
104111
OUTPUT_VARIABLE MKL_OUT)
105-
else(MKL_FFTW3)
112+
ELSE(MKL_FFTW3)
106113
UNSET(HAVE_MKL_FFTW3)
107-
endif(MKL_FFTW3)
114+
ENDIF(MKL_FFTW3)
108115

109116
IF ( HAVE_MKL )
110-
SET( MKL_FOUND 1 )
111-
SET( MKL_FLAGS ${MKL_COMPILE_DEFINITIONS} )
112-
include_directories( ${MKL_INCLUDE_DIRECTORIES} )
117+
SET( MKL_FOUND TRUE )
113118
MESSAGE(STATUS "MKL found: HAVE_MKL=${HAVE_MKL}, HAVE_MKL_VML=${HAVE_MKL_VML}, HAVE_MKL_FFTW3=${HAVE_MKL_FFTW3}")
119+
120+
#create BLAS_LAPACK target
121+
ADD_LIBRARY(Math::BLAS_LAPACK INTERFACE IMPORTED)
122+
SET_TARGET_PROPERTIES(Math::BLAS_LAPACK PROPERTIES INTERFACE_COMPILE_DEFINITIONS "HAVE_MKL")
123+
IF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
124+
SET_TARGET_PROPERTIES(Math::BLAS_LAPACK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE_DIRECTORIES}"
125+
INTERFACE_LINK_LIBRARIES "${MKL_LINKER_FLAGS};${MKL_LIBRARIES}")
126+
ELSE (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
127+
SET_TARGET_PROPERTIES(Math::BLAS_LAPACK PROPERTIES INTERFACE_COMPILE_OPTIONS "-mkl"
128+
INTERFACE_LINK_LIBRARIES "-mkl")
129+
ENDIF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
130+
131+
IF( HAVE_MKL_VML )
132+
#create scalar_vector_functions target
133+
ADD_LIBRARY(Math::scalar_vector_functions INTERFACE IMPORTED)
134+
SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_COMPILE_DEFINITIONS "HAVE_MKL;HAVE_MKL_VML")
135+
IF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
136+
SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE_DIRECTORIES}"
137+
INTERFACE_LINK_LIBRARIES "${MKL_LINKER_FLAGS};${MKL_LIBRARIES}")
138+
ELSE (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
139+
SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_COMPILE_OPTIONS "-mkl"
140+
INTERFACE_LINK_LIBRARIES "-mkl")
141+
ENDIF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
142+
ENDIF( HAVE_MKL_VML )
143+
144+
IF( HAVE_MKL_FFTW3 )
145+
#create FFTW3 target
146+
ADD_LIBRARY(Math::FFTW3 INTERFACE IMPORTED)
147+
SET_TARGET_PROPERTIES(Math::FFTW3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MKL_FFTW3}"
148+
INTERFACE_COMPILE_DEFINITIONS "HAVE_MKL;HAVE_LIBFFTW")
149+
IF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
150+
SET_TARGET_PROPERTIES(Math::FFTW3 PROPERTIES INTERFACE_LINK_LIBRARIES "${MKL_LINKER_FLAGS};${MKL_LIBRARIES}")
151+
ELSE (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
152+
SET_TARGET_PROPERTIES(Math::FFTW3 PROPERTIES INTERFACE_COMPILE_OPTIONS "-mkl"
153+
INTERFACE_LINK_LIBRARIES "-mkl")
154+
ENDIF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
155+
ENDIF( HAVE_MKL_FFTW3 )
114156
ELSE( HAVE_MKL )
115-
SET( MKL_FOUND 0 )
116-
SET( MKL_FLAGS )
117-
SET( MKL_LIBRARIES )
118-
SET( MKL_LINKER_FLAGS )
119-
MESSAGE("MKL not found")
157+
SET( MKL_FOUND FALSE )
158+
MESSAGE(STATUS "MKL not found")
120159
ENDIF( HAVE_MKL )

CMake/FindVectorMath.cmake

-42
This file was deleted.

0 commit comments

Comments
 (0)