Skip to content

Commit 6abbff0

Browse files
authored
Merge pull request #1759 from QMCPACK/rc_380
Rc 380
2 parents bc47a43 + 99a23d3 commit 6abbff0

1,132 files changed

Lines changed: 122735 additions & 150956 deletions

File tree

Some content is hidden

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

CHANGELOG.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,59 @@
22

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

5+
## [3.8.0] - 2019-07-23
6+
7+
### Notes
8+
9+
This release includes Quantum Espresso v6.4.1 support, new examples
10+
for adding wavefunctions and Jastrow functions, and many updates to the
11+
AFQMC code functionality. Additionally, all the updated scripts and
12+
functionality utilized during the [2019 QMCPACK
13+
workshop](https://github.com/QMCPACK/qmcpack_workshop_2019) are
14+
provided; this link also includes several new tutorials. A large
15+
number of feature refinements, bugfixes, testing improvements and
16+
source code cleanup have also been performed.
17+
18+
* Quantum Espresso v6.4.1 support [\#1732](https://github.com/QMCPACK/qmcpack/pull/1732).
19+
* New tutorial for adding a simple wavefunction (He) [\#1621](https://github.com/QMCPACK/qmcpack/pull/1621).
20+
* New tutorial and capability for adding Jastrow functors from symbolic expressions written in Python [\#1557](https://github.com/QMCPACK/qmcpack/pull/1557).
21+
* [Updated compiler and library support policy](https://github.com/QMCPACK/qmcpack#prerequisites), and matching testing. We aim to support open source compilers and
22+
libraries within two years of release. Use of older software is discouraged and untested. Support for closed source compilers over the same period may require use of an exact version.
23+
* Many updates to AFQMC code to support more compilers and libraries.
24+
* Newly expanded deterministic test set should now pass on all platforms and be usable as an.
25+
installation check. Recommend to run "ctest -L deterministic" after building QMCPACK.
26+
* AFQMC code now only reads HDF5 format data to improve I/O performance and storage utilization.
27+
* K-point AFQMC code usable in production (e.g. bug fix [\#1524](https://github.com/QMCPACK/qmcpack/pull/1524)).
28+
* Updated AFQMC workflow scripts for interfacing with PySCF.
29+
* Faster initial cusp correction calculation for all-electron calculations, e.g. [\#1643](https://github.com/QMCPACK/qmcpack/pull/1643).
30+
* Improved stability of cusp correction calculation [\#1594](https://github.com/QMCPACK/qmcpack/pull/1594).
31+
* New short-ranged e-n Jastrow [\#1680](https://github.com/QMCPACK/qmcpack/pull/1680).
32+
* Substantially faster 1-body reduced density matrix (1DRDM) estimator [\#1672](https://github.com/QMCPACK/qmcpack/pull/1672).
33+
* Performance tests added for LCAO code and Gaussian basis sets [\#1639](https://github.com/QMCPACK/qmcpack/pull/1639).
34+
* Reduced configuration output by default. Use -DQMC_VERBOSE_CONFIGURATION=1 on CMake line for greater detail.
35+
* Partial support for forces in LCAO basis e.g. [\#1559](https://github.com/QMCPACK/qmcpack/pull/1559). See details given at
36+
2019 QMCPACK Workshop and in manual.
37+
* Improved human-readable Jastrow output [\#1525](https://github.com/QMCPACK/qmcpack/pull/1525).
38+
* Improved MPI implementation. QMCPACK is now compatible with OpenMPI v4.
39+
* Majority of the manual has been professionally edited.
40+
41+
### Known bugs
42+
43+
See [list of open bugs](https://github.com/QMCPACK/qmcpack/issues?q=is%3Aissue+is%3Aopen+label%3Abug).
44+
45+
* There is a general problem with MVAPICH2 involving aligned memory allocations that will cause
46+
QMCPACK to crash if MVAPICH is compiled using defaults. See [\#1703](https://github.com/QMCPACK/qmcpack/issues/1703) for details and workaround.
47+
48+
### NEXUS
49+
50+
* Examples added of PySCF molecular and solid-state workflows [\#1552](https://github.com/QMCPACK/qmcpack/pull/1552).
51+
* Update support for Quantum Package 2.0 [\#1538](https://github.com/QMCPACK/qmcpack/pull/1538).
52+
* Support for additional machines including SuperMUC-NG [\#1665](https://github.com/QMCPACK/qmcpack/pull/1665).
53+
* Support for ghost atoms [\#1653](https://github.com/QMCPACK/qmcpack/pull/1653).
54+
* Update outdated cubic specifier to alat for QE [\#1642](https://github.com/QMCPACK/qmcpack/pull/1642).
55+
* K-point grids are symmetrized with spglib [\#1544](https://github.com/QMCPACK/qmcpack/pull/1544).
56+
* Bundling of jobs at NERSC [\#1748](https://github.com/QMCPACK/qmcpack/pull/1748).
57+
558
## [3.7.0] - 2019-03-29
659

760
### Notes

CMake/ClangCompilers.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
6363
endif() #(CMAKE_CXX_FLAGS MATCHES "-march=" AND CMAKE_C_FLAGS MATCHES "-march=")
6464
else() #(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")
6565
# use -march=native
66-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
66+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
6767
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
6868
endif() #(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")
6969
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
@@ -77,7 +77,7 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64" OR CMAKE_SYSTEM_PROCESSOR MATCHES
7777
endif() #(CMAKE_CXX_FLAGS MATCHES "-mcpu=" AND CMAKE_C_FLAGS MATCHES "-mcpu=")
7878
else() #(CMAKE_CXX_FLAGS MATCHES "-mcpu=" OR CMAKE_C_FLAGS MATCHES "-mcpu=")
7979
# use -mcpu=native
80-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=native")
80+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=native")
8181
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native")
8282
endif() #(CMAKE_CXX_FLAGS MATCHES "-mcpu=" OR CMAKE_C_FLAGS MATCHES "-mcpu=")
8383
ENDIF()
@@ -97,7 +97,7 @@ IF (ENABLE_GCOV)
9797
ENDIF(ENABLE_GCOV)
9898

9999
SET(XRAY_PROFILE FALSE CACHE BOOL "Use llvm xray profiling")
100-
SET(XRAY_INSTRUCTION_THRESHOLD 200 CACHE INT "Instruction threshold for xray instrumentation")
100+
SET(XRAY_INSTRUCTION_THRESHOLD 200 CACHE STRING "Instruction threshold for xray instrumentation")
101101

102102
IF(XRAY_PROFILE)
103103
set(XRAY_FLAGS "-fxray-instrument -fxray-instruction-threshold=${XRAY_INSTRUCTION_THRESHOLD}")

CMake/FindLibxml2QMC.cmake

Lines changed: 0 additions & 57 deletions
This file was deleted.

CMake/FindVectorMath.cmake

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,6 @@ ELSE()
3434
ENDIF()
3535
ENDIF()
3636

37-
IF ( NOT HAVE_MKL_VML )
38-
FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_glibc.cxx"
39-
"#include <iostream>\n#if __GLIBC__ == 2 && ( __GLIBC_MINOR__ == 22 || __GLIBC_MINOR__ == 23 )\n#error buggy glibc version\n#endif\n int main() { return 0; }\n" )
40-
try_compile(PASS_GLIBC ${CMAKE_BINARY_DIR}
41-
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_glibc.cxx
42-
CMAKE_FLAGS "${CMAKE_CXX_FLAGS}" )
43-
44-
IF ( NOT PASS_GLIBC )
45-
MESSAGE(WARNING "Using glibc 2.22 or 2.23 which contains a buggy libmvec crashing QMCPACK. Workaround needed for this issue.")
46-
ENDIF()
47-
ENDIF()
48-
4937
IF ( NOT HAVE_VECTOR_MATH )
5038
MESSAGE(STATUS "No usable vector math library detected.")
5139
ENDIF()

CMake/GNUCompilers.cmake

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -finline-limit=1000
2323
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated")
2424
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
2525

26+
# treat VLA as error
27+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=vla")
28+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wvla")
29+
2630
# Set extra optimization specific flags
2731
SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffast-math" )
2832
SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffast-math" )
@@ -50,7 +54,7 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
5054
endif() #(CMAKE_CXX_FLAGS MATCHES "-march=" AND CMAKE_C_FLAGS MATCHES "-march=")
5155
else() #(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")
5256
# use -march=native
53-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
57+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
5458
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
5559
endif() #(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")
5660
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
@@ -64,11 +68,21 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64" OR CMAKE_SYSTEM_PROCESSOR MATCHES
6468
endif() #(CMAKE_CXX_FLAGS MATCHES "-mcpu=" AND CMAKE_C_FLAGS MATCHES "-mcpu=")
6569
else() #(CMAKE_CXX_FLAGS MATCHES "-mcpu=" OR CMAKE_C_FLAGS MATCHES "-mcpu=")
6670
# use -mcpu=native
67-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=native")
71+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=native")
6872
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native")
6973
endif() #(CMAKE_CXX_FLAGS MATCHES "-mcpu=" OR CMAKE_C_FLAGS MATCHES "-mcpu=")
7074
ENDIF()
7175

76+
# protect buggy libmvec
77+
FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_glibc.cxx"
78+
"#include <iostream>\n#if __GLIBC__ == 2 && ( __GLIBC_MINOR__ == 22 || __GLIBC_MINOR__ == 23 )\n#error buggy glibc version\n#endif\n int main() { return 0; }\n" )
79+
try_compile(PASS_GLIBC ${CMAKE_BINARY_DIR}
80+
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_glibc.cxx
81+
CMAKE_FLAGS "${CMAKE_CXX_FLAGS}" )
82+
IF ( NOT PASS_GLIBC )
83+
MESSAGE(FATAL_ERROR "Your system and GNU compiler are using glibc 2.22 or 2.23 which contains a buggy libmvec. This results in crashes. Workaround needed. Alternatively upgrade or use another compiler.")
84+
ENDIF()
85+
7286
# Add static flags if necessary
7387
IF(QMC_BUILD_STATIC)
7488
SET(CMAKE_CXX_LINK_FLAGS " -static")

CMake/IntelCompilers.cmake

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,11 @@ SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -restrict -unroll -ip"
3131
SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -restrict -unroll -ip" )
3232
SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -restrict -unroll -ip" )
3333

34-
# Use deprecated options prior to 11.1
35-
SET(ICC_DEPRECATED_OPTS FALSE)
36-
IF ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11.1 )
37-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -prefetch ")
38-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -prefetch" )
39-
ELSEIF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16 )
40-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -opt-prefetch" )
41-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -opt-prefetch" )
42-
ELSE()
43-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -qopt-prefetch" )
34+
# Set prefetch flag
4435
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -qopt-prefetch" )
45-
ENDIF()
4636

4737
#check if -ftz is accepted
48-
CHECK_C_COMPILER_FLAG( "${CMAKE_CXX_FLAGS} -ftz" INTEL_FTZ )
38+
CHECK_CXX_COMPILER_FLAG( "${CMAKE_CXX_FLAGS} -ftz" INTEL_FTZ )
4939
IF( INTEL_FTZ)
5040
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftz" )
5141
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftz" )

CMake/macros.cmake

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ FUNCTION( RUN_QMC_APP_NO_COPY TESTNAME WORKDIR PROCS THREADS TEST_ADDED TEST_LAB
102102
SET( TEST_ADDED_TEMP FALSE )
103103
IF ( USE_MPI )
104104
IF ( ${TOT_PROCS} GREATER ${TEST_MAX_PROCS} )
105-
MESSAGE("Disabling test ${TESTNAME} (exceeds maximum number of processors ${TEST_MAX_PROCS})")
105+
MESSAGE_VERBOSE("Disabling test ${TESTNAME} (exceeds maximum number of processors ${TEST_MAX_PROCS})")
106106
ELSEIF ( USE_MPI )
107107
ADD_TEST( ${TESTNAME} ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${PROCS} ${QMC_APP} ${ARGN} )
108108
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES FAIL_REGULAR_EXPRESSION "${TEST_FAIL_REGULAR_EXPRESSION}"
@@ -118,7 +118,7 @@ FUNCTION( RUN_QMC_APP_NO_COPY TESTNAME WORKDIR PROCS THREADS TEST_ADDED TEST_LAB
118118
ENVIRONMENT OMP_NUM_THREADS=${THREADS} )
119119
SET( TEST_ADDED_TEMP TRUE )
120120
ELSE()
121-
MESSAGE("Disabling test ${TESTNAME} (building without MPI)")
121+
MESSAGE_VERBOSE("Disabling test ${TESTNAME} (building without MPI)")
122122
ENDIF()
123123
ENDIF()
124124
SET(TEST_LABELS_TEMP "")
@@ -170,7 +170,7 @@ FUNCTION(QMC_RUN_AND_CHECK BASE_NAME BASE_DIR PREFIX INPUT_FILE PROCS THREADS SH
170170
SET( TEST_ADDED FALSE )
171171
SET( TEST_LABELS "")
172172
SET( FULL_NAME "${BASE_NAME}-${PROCS}-${THREADS}" )
173-
MESSAGE("Adding test ${FULL_NAME}")
173+
MESSAGE_VERBOSE("Adding test ${FULL_NAME}")
174174
RUN_QMC_APP(${FULL_NAME} ${BASE_DIR} ${PROCS} ${THREADS} TEST_ADDED TEST_LABELS ${INPUT_FILE})
175175
IF ( TEST_ADDED )
176176
SET_PROPERTY(TEST ${FULL_NAME} APPEND PROPERTY LABELS "QMCPACK")
@@ -244,7 +244,7 @@ function(SIMPLE_RUN_AND_CHECK base_name base_dir input_file procs threads check_
244244

245245
# build test name
246246
set(full_name "${base_name}-${procs}-${threads}")
247-
message("Adding test ${full_name}")
247+
MESSAGE_VERBOSE("Adding test ${full_name}")
248248

249249
# add run (task 1)
250250
set (test_added false)
@@ -303,3 +303,10 @@ FUNCTION( CPU_LIMIT_RUN TESTNAME SRC_DIR PROCS THREADS TIME ${ARGN} )
303303
SET_PROPERTY(TEST ${FULLNAME} APPEND PROPERTY PASS_REGULAR_EXPRESSION "Time limit reached for")
304304
ENDIF()
305305
ENDFUNCTION()
306+
307+
# Print THE_MESSAGE if verbose configuration is enabled
308+
FUNCTION ( MESSAGE_VERBOSE THE_MESSAGE )
309+
IF ( QMC_VERBOSE_CONFIGURATION )
310+
MESSAGE( ${THE_MESSAGE} )
311+
ENDIF()
312+
ENDFUNCTION()

CMake/run_qe.cmake

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ FUNCTION( RUN_QE_TEST BASE_NAME SRC_DIR PROCS1 PROCS2 PROCS3 NPOOL1 NPOOL2 NPOOL
1616
SET( FULL_NAME ${BASE_NAME}-np-${PROCS1}-${PROCS2}-${PROCS3}-nk-${NPOOL1}-${NPOOL2}-${NPOOL3} )
1717
SET( ${TEST_NAME} ${FULL_NAME} PARENT_SCOPE)
1818
SET( MY_WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/${FULL_NAME} )
19-
MESSAGE("Adding test ${FULL_NAME}")
19+
MESSAGE_VERBOSE("Adding test ${FULL_NAME}")
2020
COPY_DIRECTORY( "${SRC_DIR}" "${MY_WORKDIR}" )
2121
ADD_QE_TEST(${FULL_NAME}-scf ${PROCS1} ${QE_BIN}/pw.x ${NPOOL1} ${MY_WORKDIR} ${TEST_INPUT_PREFIX}-scf.in )
2222
IF(PROCS2 EQUAL 0)
@@ -36,3 +36,18 @@ FUNCTION( SOFTLINK_H5 SOURCE TARGET PREFIX FILENAME TEST_NAME)
3636
SET_TESTS_PROPERTIES(LINK_${SOURCE}_TO_${TARGET} PROPERTIES DEPENDS ${SOURCE}-pw2x)
3737
SET_PROPERTY( TEST LINK_${SOURCE}_TO_${TARGET} APPEND PROPERTY LABELS "converter" )
3838
ENDFUNCTION()
39+
40+
FUNCTION( VERIFY_QE_PRESENT QE_BIN )
41+
IF ( EXISTS "${QE_BIN}/pw.x" )
42+
MESSAGE( STATUS "Found pw.x at ${QE_BIN}/pw.x")
43+
ELSE()
44+
MESSAGE( "QE_BIN was specified but could not find ${QE_BIN}/pw.x" )
45+
MESSAGE( FATAL_ERROR "QE should be built ahead of QMCPACK. See qmcpack/external_codes/quantum_espresso/README for details on building patched version." )
46+
ENDIF()
47+
IF ( EXISTS "${QE_BIN}/pw2qmcpack.x" )
48+
MESSAGE( STATUS "Found pw2qmcpack.x at ${QE_BIN}/pw.x")
49+
ELSE()
50+
MESSAGE( "QE_BIN was specified but could not find ${QE_BIN}/pw2qmcpack.x" )
51+
MESSAGE( FATAL_ERROR "See qmcpack/external_codes/quantum_espresso/README for details on building patched version" )
52+
ENDIF()
53+
ENDFUNCTION()

CMake/unit_test.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ INCLUDE("${PROJECT_SOURCE_DIR}/CMake/test_labels.cmake")
33

44
# Runs unit tests
55
FUNCTION( ADD_UNIT_TEST TESTNAME TEST_BINARY )
6-
MESSAGE("Adding test ${TESTNAME}")
6+
MESSAGE_VERBOSE("Adding test ${TESTNAME}")
77
IF ( USE_MPI )
88
ADD_TEST(NAME ${TESTNAME} COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 1 ${TEST_BINARY} ${ARGN})
99
#SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES ENVIRONMENT OMP_NUM_THREADS=1 )

0 commit comments

Comments
 (0)