Skip to content

Commit

Permalink
Merge pull request #386 from QMCPACK/rc_320
Browse files Browse the repository at this point in the history
Rc 320
  • Loading branch information
prckent committed Sep 21, 2017
2 parents 0761163 + b466d8e commit d531f6b
Show file tree
Hide file tree
Showing 503 changed files with 59,218 additions and 11,311 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
*.pyc
*.aux
qmcpack_manual.bbl
qmcpack_manual.blg
qmcpack_manual.log
qmcpack_manual.out
qmcpack_manual.toc
qmcpack_manual.pdf
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,45 @@

Notable changes to QMCPACK will be documented in this file.

## [3.2.0] - 2017-09-21

### Notes

This release provides a significant speed increase for
many calculations. A C++11 compiler is now required. It is a
recommended update.

### QMCPACK updates

* Major speedup for calculations using spline wavefunctions via
initial implementation of "Structure of Arrays" data layout and
improved algorithms. Enabled via -DENABLE_SOA=1. Benefits all CPU
architectures. Many runs are doubled in speed. Not yet available for
Gaussian-basis sets or for all observables and QMC methods. See
writeup in manual for guidance.
* A compiler supporting C++11 is now required.
* DMC respects MaxCPUSecs parameter and will gracefully shut down and
not start a new block if there is not sufficient estimated time to
complete it.
* Checkpointing code rewritten for robustness and performance at scale.
Parallel as well as serial HDF5 supported and autodetected.
* Improved beta-release of AFQMC code and documentation.
* Backflow documentation and optimization tips added.
* Correlated sampling VMC drivers reactivated.
* Added carbon graphite performance test similar to CORAL benchmark.
* Improvements to CMake and CTest usage.
* Build instructions for NERSC, ALCF, and OLCF machines updated.
* Latest manual PDF now available at http://docs.qmcpack.org

### NEXUS

* Significantly improved manual entry for "qmca" analysis tool, the
main recommended tool for statistical analysis of QMCPACK data.
* Added time step fitting tool "qfit" for timestep extrapolation. Uses
jack-knife statistical technique.
* Improved density file postprocessing.
* Support for Makov-Payne corrections.

## [3.1.1] - 2017-08-01

### Notes
Expand Down
102 changes: 33 additions & 69 deletions CMake/ClangCompilers.cmake
Original file line number Diff line number Diff line change
@@ -1,97 +1,61 @@
# Check compiler version
IF ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.0 )
IF ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.3 )
MESSAGE(STATUS "Compiler Version ${CMAKE_CXX_COMPILER_VERSION}")
MESSAGE(FATAL_ERROR "Require clang 3.0 or higher ")
MESSAGE(FATAL_ERROR "Requires clang 3.3 or higher ")
ENDIF()

# Set the std
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")

# Enable OpenMP
SET(ENABLE_OPENMP 0)
SET(ENABLE_OPENMP 1)
IF ( ENABLE_OPENMP )
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
ENDIF()

# Set the std
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

# Set clang specfic flags (which we always want)
ADD_DEFINITIONS( -Drestrict=__restrict__ )
ADD_DEFINITIONS( -DADD_ )
ADD_DEFINITIONS( -DINLINE_ALL=inline )
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer -fstrict-aliasing")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -fstrict-aliasing")

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer -fstrict-aliasing")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -fstrict-aliasing -D__forceinline=inline")
SET( HAVE_POSIX_MEMALIGN 0 ) # Clang doesn't support -malign-double

# Suppress compile warnings
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated -Wno-unused-value")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wno-unused-value")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated -Wno-unused-value")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wno-unused-value -Wno-undefined-var-template")

# Set extra optimization specific flags
SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffast-math" )
SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffast-math" )
SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffast-math" )
SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ffast-math" )
SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ffast-math" )
SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -ffast-math" )

# Enable mmx/sse instructions if posix_memalign exists
IF(HAVE_POSIX_MEMALIGN)

# Check for mmx flags
SET(CMAKE_TRY_CC_FLAGS "-mmmx")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_CC_FLAGS} CC_FLAGS)
IF(CC_FLAGS)
SET(HAVE_MMX 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmmx")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmmx")
ENDIF(CC_FLAGS)

# Check for msse flags
SET(CMAKE_TRY_CC_FLAGS "-msse")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_CC_FLAGS} CC_FLAGS)
IF(CC_FLAGS)
SET(HAVE_SSE 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse")
ENDIF(CC_FLAGS)

# Check for msse2 flags
SET(CMAKE_TRY_GNU_CXX_FLAGS "-msse2")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_CC_FLAGS} CC_FLAGS)
IF(CC_FLAGS)
SET(HAVE_SSE2 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2")
ENDIF(CC_FLAGS)

# Check for msse3 flags
SET(CMAKE_TRY_CC_FLAGS "-msse3")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_CC_FLAGS} CC_FLAGS)
IF(CC_FLAGS)
SET(HAVE_SSE3 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse3")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse3")
ENDIF(CC_FLAGS)

# Check for msse4.1 flags
SET(CMAKE_TRY_CC_FLAGS "-msse4.1")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_CC_FLAGS} CC_FLAGS)
IF(CC_FLAGS)
SET(HAVE_SSE41 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
ENDIF(CC_FLAGS)

ENDIF(HAVE_POSIX_MEMALIGN)
#------------------------
# Not on Cray's machine
#------------------------
IF(NOT $ENV{CRAYPE_VERSION} MATCHES ".")

#check if the user has already specified -march=XXXX option for cross-compiling.
if(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")
# make sure that the user specifies -march= for both CMAKE_CXX_FLAGS and CMAKE_C_FLAGS.
if(CMAKE_CXX_FLAGS MATCHES "-march=" AND CMAKE_C_FLAGS MATCHES "-march=")
else() #(CMAKE_CXX_FLAGS MATCHES "-march=" AND CMAKE_C_FLAGS MATCHES "-march=")
MESSAGE(FATAL_ERROR "if -march=ARCH is specified by the user, it should be added in both CMAKE_CXX_FLAGS and CMAKE_C_FLAGS!")
endif() #(CMAKE_CXX_FLAGS MATCHES "-march=" AND CMAKE_C_FLAGS MATCHES "-march=")
else() #(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")
# use -march=native
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif() #(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")

ENDIF(NOT $ENV{CRAYPE_VERSION} MATCHES ".")

# Add static flags if necessary
IF(QMC_BUILD_STATIC)
SET(CMAKE_CXX_LINK_FLAGS " -static")
ENDIF(QMC_BUILD_STATIC)

# Add enviornmental flags
SET(CMAKE_CXX_FLAGS "$ENV{CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
SET(CMAKE_C_FLAGS "$ENV{CC_FLAGS} ${CMAKE_C_FLAGS}")

# Coverage
IF (ENABLE_GCOV)
SET(GCOV_COVERAGE TRUE)
Expand Down
98 changes: 31 additions & 67 deletions CMake/GNUCompilers.cmake
Original file line number Diff line number Diff line change
@@ -1,93 +1,57 @@
# Check compiler version
IF ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4 )
MESSAGE(FATAL_ERROR "Require gcc 4.4 or higher ")
IF ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8 )
MESSAGE(FATAL_ERROR "Requires gcc 4.8 or higher ")
ENDIF()

# Set the std
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")

# Enable OpenMP
SET(ENABLE_OPENMP 1)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")

# Set the std
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")

# Set gnu specfic flags (which we always want)
ADD_DEFINITIONS( -Drestrict=__restrict__ )
ADD_DEFINITIONS( -DADD_ )
ADD_DEFINITIONS( -DINLINE_ALL=inline )
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer -finline-limit=1000 -fstrict-aliasing -funroll-all-loops")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -finline-limit=1000 -fstrict-aliasing -funroll-all-loops")

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer -finline-limit=1000 -fstrict-aliasing -funroll-all-loops")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -D__forceinline=inline")

# Suppress compile warnings
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")

# Set extra optimization specific flags
SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffast-math" )
SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffast-math" )
SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffast-math" )
SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ffast-math" )
SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ffast-math" )
SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -ffast-math" )

# Enable mmx/sse instructions if posix_memalign exists
IF(HAVE_POSIX_MEMALIGN)

# Check for mmx flags
SET(CMAKE_TRY_GNU_CC_FLAGS "-mmmx")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_GNU_CC_FLAGS} GNU_CC_FLAGS)
IF(GNU_CC_FLAGS)
SET(HAVE_MMX 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmmx")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmmx")
ENDIF(GNU_CC_FLAGS)

# Check for msse flags
SET(CMAKE_TRY_GNU_CC_FLAGS "-msse")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_GNU_CC_FLAGS} GNU_CC_FLAGS)
IF(GNU_CC_FLAGS)
SET(HAVE_SSE 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse")
ENDIF(GNU_CC_FLAGS)

# Check for msse2 flags
SET(CMAKE_TRY_GNU_CXX_FLAGS "-msse2")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_GNU_CC_FLAGS} GNU_CC_FLAGS)
IF(GNU_CC_FLAGS)
SET(HAVE_SSE2 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2")
ENDIF(GNU_CC_FLAGS)

# Check for msse3 flags
SET(CMAKE_TRY_GNU_CC_FLAGS "-msse3")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_GNU_CC_FLAGS} GNU_CC_FLAGS)
IF(GNU_CC_FLAGS)
SET(HAVE_SSE3 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse3")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse3")
ENDIF(GNU_CC_FLAGS)

# Check for msse4.1 flags
SET(CMAKE_TRY_GNU_CC_FLAGS "-msse4.1")
CHECK_C_COMPILER_FLAG(${CMAKE_TRY_GNU_CC_FLAGS} GNU_CC_FLAGS)
IF(GNU_CC_FLAGS)
SET(HAVE_SSE41 1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
ENDIF(GNU_CC_FLAGS)

ENDIF(HAVE_POSIX_MEMALIGN)
#------------------------
# Not on Cray's machine
#------------------------
IF(NOT $ENV{CRAYPE_VERSION} MATCHES ".")

#check if the user has already specified -march=XXXX option for cross-compiling.
if(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")
# make sure that the user specifies -march= for both CMAKE_CXX_FLAGS and CMAKE_C_FLAGS.
if(CMAKE_CXX_FLAGS MATCHES "-march=" AND CMAKE_C_FLAGS MATCHES "-march=")
else() #(CMAKE_CXX_FLAGS MATCHES "-march=" AND CMAKE_C_FLAGS MATCHES "-march=")
MESSAGE(FATAL_ERROR "if -march=ARCH is specified by the user, it should be added in both CMAKE_CXX_FLAGS and CMAKE_C_FLAGS!")
endif() #(CMAKE_CXX_FLAGS MATCHES "-march=" AND CMAKE_C_FLAGS MATCHES "-march=")
else() #(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")
# use -march=native
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif() #(CMAKE_CXX_FLAGS MATCHES "-march=" OR CMAKE_C_FLAGS MATCHES "-march=")

ENDIF(NOT $ENV{CRAYPE_VERSION} MATCHES ".")

# Add static flags if necessary
IF(QMC_BUILD_STATIC)
SET(CMAKE_CXX_LINK_FLAGS " -static")
ENDIF(QMC_BUILD_STATIC)

# Add enviornmental flags
SET(CMAKE_CXX_FLAGS "$ENV{CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
SET(CMAKE_C_FLAGS "$ENV{CC_FLAGS} ${CMAKE_C_FLAGS}")

# Coverage
IF (ENABLE_GCOV)
SET(GCOV_SUPPORTED TRUE)
Expand Down
Loading

0 comments on commit d531f6b

Please sign in to comment.