Skip to content

Commit f775d65

Browse files
authored
Merge pull request #2784 from QMCPACK/rc_3100
Rc 3100
2 parents 8064ebf + 6b90043 commit f775d65

File tree

2,160 files changed

+233598
-160862
lines changed

Some content is hidden

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

2,160 files changed

+233598
-160862
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ qmcpack_manual.out
77
qmcpack_manual.toc
88
qmcpack_manual.pdf
99
.DS_Store
10+
/build_*/
11+
docs/_build

CHANGELOG.md

+34
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,40 @@
22

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

5+
## [3.10.0] - 2020-11-10
6+
7+
### Notes
8+
9+
This release contains multiple feature improvements and bug fixes. The AFQMC implementation has been significantly enhanced, and
10+
an important wavefunction optimization bug fixed in real space QMC.
11+
12+
* The QMCPACK manual is now available at https://qmcpack.readthedocs.io, having been converted to use reStructuredText and the sphinx
13+
documentation system.
14+
* Significant improvements to the AFQMC code including HIP support for AMD GPUs, updated documentation, and support for non-collinear calculations and spin-orbit k-point Hamiltonians
15+
[\#2734](https://github.com/QMCPACK/qmcpack/pull/2734).
16+
* Improved support for spin-orbit in real-space QMC including documentation [\#2733](https://github.com/QMCPACK/qmcpack/pull/2733).
17+
* Important bug fix for wavefunction optimization in few electron systems such as isolated atoms. The bug would result in slow or no
18+
convergence. Thanks to Jaron Krogel and Matus Dubecky for reports and reproducers.
19+
[\#2496](https://github.com/QMCPACK/qmcpack/issues/2496).
20+
* Implementation of L2 potentials and evaluation in DMC [\#1948](https://github.com/QMCPACK/qmcpack/pull/1948).
21+
* Consistent with our two year support policy for open source compilers, libraries, and tooling, several version minimums have
22+
been increased to either avoid bugs or to utilize new features.
23+
* Clang 7 is the earliest supported Clang compiler. The latest release is recommended.
24+
* Intel 2019 is the earliest supported Intel compiler. The latest release is recommended.
25+
* Future releases of QMCPACK will require C++17. The current minimum is C++14.
26+
* AoS builds are no longer supported. The code has been removed now that the default structures-of-arrays (SoA) build has
27+
sufficiently broad capability.
28+
* The default CUDA architecture is set to sm_70 (Volta).
29+
* QMCPACK is built with ENABLE_TIMERS=ON by default [\#2663](https://github.com/QMCPACK/qmcpack/issues/2663)
30+
* Various bug fixes to complete the transition to Python 3.
31+
* Ongoing improvements to the OpenMP offload implementation.
32+
33+
### NEXUS
34+
35+
* NEXUS manual is now available at https://nexus-workflows.readthedocs.io, having been converted to use the reStructuredText and sphinx
36+
documentation system.
37+
* Various small fixes and improvements.
38+
539
## [3.9.2] - 2020-04-29
640

741
### Notes

CMake/ClangCompilers.cmake

+40-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Check compiler version
2-
IF ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4 )
2+
IF ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0 )
33
MESSAGE(STATUS "Compiler Version ${CMAKE_CXX_COMPILER_VERSION}")
4-
MESSAGE(FATAL_ERROR "Requires clang 3.4 or higher ")
4+
MESSAGE(FATAL_ERROR "Requires clang 7.0 or higher ")
55
ENDIF()
66

77
# Set the std
@@ -10,15 +10,23 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
1010
# Enable OpenMP
1111
IF(QMC_OMP)
1212
SET(ENABLE_OPENMP 1)
13-
IF(ENABLE_OFFLOAD)
13+
IF(ENABLE_OFFLOAD AND NOT CMAKE_SYSTEM_NAME STREQUAL "CrayLinuxEnvironment")
1414
SET(OFFLOAD_TARGET "nvptx64-nvidia-cuda" CACHE STRING "Offload target architecture")
15+
IF(DEFINED OFFLOAD_ARCH)
16+
SET(CLANG_OPENMP_OFFLOAD_FLAGS "-fopenmp-targets=${OFFLOAD_TARGET} -Xopenmp-target=${OFFLOAD_TARGET} -march=${OFFLOAD_ARCH}")
17+
ELSE()
18+
SET(CLANG_OPENMP_OFFLOAD_FLAGS "-fopenmp-targets=${OFFLOAD_TARGET}")
19+
ENDIF()
20+
21+
# Intel clang compiler needs a different flag for the host side OpenMP library when offload is used.
1522
IF(OFFLOAD_TARGET MATCHES "spir64")
1623
SET(OMP_FLAG "-fiopenmp")
1724
ELSE(OFFLOAD_TARGET MATCHES "spir64")
1825
SET(OMP_FLAG "-fopenmp")
1926
ENDIF(OFFLOAD_TARGET MATCHES "spir64")
27+
2028
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OMP_FLAG}")
21-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OMP_FLAG} -fopenmp-targets=${OFFLOAD_TARGET}")
29+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OMP_FLAG}")
2230
ELSE()
2331
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
2432
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
@@ -31,6 +39,18 @@ ADD_DEFINITIONS( -Drestrict=__restrict__ )
3139
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstrict-aliasing")
3240
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrict-aliasing -D__forceinline=inline")
3341

42+
# treat VLA as error
43+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=vla")
44+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wvla")
45+
46+
# set compiler warnings
47+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unused-variable -Wno-overloaded-virtual -Wno-unused-private-field -Wno-unused-local-typedef")
48+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas")
49+
IF( CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0 )
50+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wmisleading-indentation")
51+
ENDIF()
52+
53+
3454
# Set extra optimization specific flags
3555
SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fomit-frame-pointer -ffast-math" )
3656
SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fomit-frame-pointer -ffast-math" )
@@ -49,7 +69,7 @@ SET( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fs
4969
# arm: -mpcu
5070
# default or cray: none
5171
#--------------------------------------
52-
IF($ENV{CRAYPE_VERSION} MATCHES ".")
72+
IF(CMAKE_SYSTEM_NAME STREQUAL "CrayLinuxEnvironment")
5373
# It's a cray machine. Don't do anything
5474
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
5575
# the case for x86_64
@@ -79,6 +99,21 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64" OR CMAKE_SYSTEM_PROCESSOR MATCHES
7999
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=native")
80100
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native")
81101
endif() #(CMAKE_CXX_FLAGS MATCHES "-mcpu=" OR CMAKE_C_FLAGS MATCHES "-mcpu=")
102+
103+
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64")
104+
# Ensure PowerPC builds include optimization flags in release and release-with-debug builds
105+
# Otherwise these are missing (2020-06-22)
106+
SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -DNDEBUG" )
107+
SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG" )
108+
SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -DNDEBUG" )
109+
SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -DNDEBUG" )
110+
ENDIF()
111+
ENDIF()
112+
113+
# Add OpenMP offload flags
114+
# This step is intentionally put after the -march parsing for CPUs.
115+
IF(DEFINED CLANG_OPENMP_OFFLOAD_FLAGS)
116+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLANG_OPENMP_OFFLOAD_FLAGS}")
82117
ENDIF()
83118

84119
# Add static flags if necessary

CMake/FindIBMMASS.cmake

+46-19
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,17 @@ endif (NOT MASS_LINK_DIRECTORIES)
2525
MESSAGE(STATUS "MASS_LINK_DIRECTORIES: ${MASS_LINK_DIRECTORIES}")
2626

2727
set(MASS_LINKER_FLAGS -L${MASS_LINK_DIRECTORIES} -Wl,-rpath,${MASS_LINK_DIRECTORIES})
28-
set(MASS_LIBRARIES "-lmass -lmassv")
2928

29+
set(MASS_LIBRARY "-lmass")
3030
FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mass.cxx"
3131
"#include <cmath>
3232
#include <mass.h>
33-
#include <massv.h>
3433
#include <iostream>
3534
3635
int main(void) {
3736
double input = 1.1;
3837
double outsin, outcos;;
39-
sincos(input,&outsin, &outcos);
40-
int in_size = 10;
41-
double inputv[in_size];
42-
double resultv[in_size];
43-
for( int i = 0; i < in_size; ++i)
44-
inputv[i] = i;
45-
vlog10(resultv, inputv, &in_size);
38+
sincos(input, &outsin, &outcos);
4639
}
4740
")
4841

@@ -51,25 +44,59 @@ try_compile(HAVE_MASS ${CMAKE_BINARY_DIR}
5144
CMAKE_FLAGS
5245
"-DINCLUDE_DIRECTORIES=${MASS_INCLUDE_DIRECTORIES} "
5346
"-DLINK_DIRECTORIES=${MASS_LINK_DIRECTORIES}"
54-
LINK_LIBRARIES "${MASS_LIBRARIES}"
55-
COMPILE_DEFINITIONS "${MASS_COMPILE_DEFINITIONS}"
47+
LINK_LIBRARIES "${MASS_LIBRARY}"
5648
OUTPUT_VARIABLE MASS_OUT)
5749
if ( NOT HAVE_MASS )
5850
MESSAGE( "${MASS_OUT}" )
5951
endif ( NOT HAVE_MASS )
6052

61-
IF ( HAVE_MASS )
53+
set(MASSV_LIBRARY "-lmassv")
54+
FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_massv.cxx"
55+
"#include <massv.h>
56+
#include <iostream>
57+
58+
int main(void) {
59+
int in_size = 10;
60+
double inputv[in_size];
61+
double resultv[in_size];
62+
for( int i = 0; i < in_size; ++i)
63+
inputv[i] = i;
64+
vlog10(resultv, inputv, &in_size);
65+
}
66+
")
67+
68+
try_compile(HAVE_MASSV ${CMAKE_BINARY_DIR}
69+
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_massv.cxx
70+
CMAKE_FLAGS
71+
"-DINCLUDE_DIRECTORIES=${MASS_INCLUDE_DIRECTORIES} "
72+
"-DLINK_DIRECTORIES=${MASS_LINK_DIRECTORIES}"
73+
LINK_LIBRARIES "${MASSV_LIBRARY}"
74+
OUTPUT_VARIABLE MASSV_OUT)
75+
if ( NOT HAVE_MASSV )
76+
MESSAGE( "${MASSV_OUT}" )
77+
endif ( NOT HAVE_MASSV )
78+
79+
80+
IF ( HAVE_MASS OR HAVE_MASSV )
6281
SET( MASS_FOUND TRUE )
63-
SET( HAVE_MASSV TRUE )
6482
MESSAGE(STATUS "MASS found: HAVE_MASS=${HAVE_MASS}, HAVE_MASSV=${HAVE_MASSV}")
6583

6684
#create scalar_vector_functions target
6785
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 )
72-
ELSE( HAVE_MASS )
86+
SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MASS_INCLUDE_DIRECTORIES}"
87+
INTERFACE_LINK_OPTIONS "${MASS_LINKER_FLAGS}")
88+
IF( HAVE_MASS )
89+
SET_PROPERTY(TARGET Math::scalar_vector_functions APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "HAVE_MASS")
90+
SET_PROPERTY(TARGET Math::scalar_vector_functions APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${MASS_LIBRARY}")
91+
SET( SINCOS_INCLUDE mass.h )
92+
ENDIF()
93+
94+
IF( HAVE_MASSV )
95+
SET_PROPERTY(TARGET Math::scalar_vector_functions APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "HAVE_MASSV")
96+
SET_PROPERTY(TARGET Math::scalar_vector_functions APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${MASSV_LIBRARY}")
97+
ENDIF()
98+
99+
ELSE()
73100
SET( MASS_FOUND FALSE )
74101
MESSAGE(STATUS "MASS not found")
75-
ENDIF( HAVE_MASS )
102+
ENDIF()

0 commit comments

Comments
 (0)