Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/QMCPACK/qmcpack into gpa…
Browse files Browse the repository at this point in the history
…w_converter
  • Loading branch information
Juha Tiihonen committed Dec 20, 2021
2 parents a6e5c92 + 764306d commit a83be6d
Show file tree
Hide file tree
Showing 319 changed files with 5,823 additions and 22,333 deletions.
100 changes: 100 additions & 0 deletions .github/workflows/ci-github-actions-self-hosted.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,110 @@ on:
types: [created]

jobs:
cpu-intel64:
if: |
github.repository_owner == 'QMCPACK' &&
github.event.issue.pull_request &&
( startsWith(github.event.comment.body, 'Test this please') ||
startsWith(github.event.comment.body, 'Start testing in-house') )
runs-on: [self-hosted, Linux, X64, gpu, cuda]

env:
GH_JOBNAME: ${{matrix.jobname}}
GH_OS: Linux
strategy:
fail-fast: false
matrix:
jobname: [
GCC8-NoMPI-MKL-Real-Mixed, # mixed precision
GCC8-NoMPI-MKL-Complex-Mixed,
GCC8-NoMPI-MKL-Real, # full precision
GCC8-NoMPI-MKL-Complex,
]

steps:
- name: Verify actor
# Only trigger for certain "actors" (those commenting the PR, not the PR originator)
# this is in-line with the current workflow
env:
ACTOR_TOKEN: ${{secrets.TOKENIZER}}${{github.actor}}${{secrets.TOKENIZER}}
SECRET_ACTORS: ${{secrets.CI_GPU_ACTORS}}
if: contains(env.SECRET_ACTORS, env.ACTOR_TOKEN)
id: check
run: |
echo "::set-output name=triggered::true"
# Request repo info, required since issue_comment doesn't point at PR commit, but develop
- name: GitHub API Request
if: steps.check.outputs.triggered == 'true'
id: request
uses: octokit/request-action@v2.0.0
with:
route: ${{github.event.issue.pull_request.url}}
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

# Create a separate PR status pointing at GitHub Actions tab URL
# just like any other third-party service
- name: Create PR status
if: steps.check.outputs.triggered == 'true'
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "GitHub Actions self-hosted CI ${{ matrix.jobname }}"
state: "pending"
sha: ${{fromJson(steps.request.outputs.data).head.sha}}
target_url: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}

- name: Get PR information
if: steps.check.outputs.triggered == 'true'
id: pr_data
run: |
echo "::set-output name=branch::${{ fromJson(steps.request.outputs.data).head.ref }}"
echo "::set-output name=repo_name::${{ fromJson(steps.request.outputs.data).head.repo.full_name }}"
echo "::set-output name=repo_clone_url::${{ fromJson(steps.request.outputs.data).head.repo.clone_url }}"
echo "::set-output name=repo_ssh_url::${{ fromJson(steps.request.outputs.data).head.repo.ssh_url }}"
- name: Checkout PR branch
if: steps.check.outputs.triggered == 'true'
uses: actions/checkout@v2
with:
token: ${{secrets.GITHUB_TOKEN}}
repository: ${{fromJson(steps.request.outputs.data).head.repo.full_name}}
ref: ${{steps.pr_data.outputs.branch}}

- name: Configure
if: steps.check.outputs.triggered == 'true'
run: tests/test_automation/github-actions/ci/run_step.sh configure

- name: Build
if: steps.check.outputs.triggered == 'true'
run: tests/test_automation/github-actions/ci/run_step.sh build

- name: Test
if: steps.check.outputs.triggered == 'true'
run: tests/test_automation/github-actions/ci/run_step.sh test

- name: Report PR status
if: always() && steps.check.outputs.triggered == 'true'
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "GitHub Actions self-hosted CI ${{matrix.jobname}}"
state: ${{job.status}}
sha: ${{fromJson(steps.request.outputs.data).head.sha}}
target_url: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}

gpu-cuda:
if: |
github.repository_owner == 'QMCPACK' &&
github.event.issue.pull_request &&
( startsWith(github.event.comment.body, 'Test this please') ||
startsWith(github.event.comment.body, 'Start testing in-house') )
needs: cpu-intel64

runs-on: [self-hosted, Linux, X64, gpu, cuda]

env:
Expand All @@ -31,6 +128,9 @@ jobs:
GCC8-MPI-CUDA-AFQMC-Complex,
Clang14Dev-MPI-CUDA-AFQMC-Offload-Real-Mixed, # auxiliary field, offload requires development llvm14
Clang14Dev-MPI-CUDA-AFQMC-Offload-Real,
Intel19-MPI-CUDA-AFQMC-Real-Mixed, # auxiliary field, requires MPI
Intel19-MPI-CUDA-AFQMC-Complex-Mixed,
Intel19-MPI-CUDA-AFQMC-Real,
]

steps:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/ci-github-actions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,14 +84,14 @@ jobs:
run: tests/test_automation/github-actions/ci/run_step.sh test

- name: Coverage
if: contains(matrix.jobname, 'coverage')
if: contains(matrix.jobname, 'Gcov')
run: tests/test_automation/github-actions/ci/run_step.sh coverage

- name: Upload Coverage
if: contains(matrix.jobname, 'coverage') && github.repository_owner == 'QMCPACK'
uses: codecov/codecov-action@v1
if: contains(matrix.jobname, 'Gcov') && github.repository_owner == 'QMCPACK'
uses: codecov/codecov-action@v2
with:
file: ../qmcpack-build/coverage.xml
files: ../qmcpack-build/coverage.xml
flags: tests-deterministic # optional
name: codecov-QMCPACK # optional
fail_ci_if_error: true # optional (default = false)
Expand Down
66 changes: 63 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,71 @@

Notable changes to QMCPACK are documented in this file.

## [Unreleased]
## [3.12.0] - 2021-12-08

### Notes

This release incorporates several hundred changes to QMCPACK and the supporting
ecosystem. It is a recommended release for all users. Note that compilers
supporting C++17 and CMake version 3.15 or newer are now required. Changes
include newly added support for the DIRAC quantum chemistry code, the RMG-DFT
code, and updates for the latest version of Quantum ESPRESSO. Through DIRAC it
is now possible to perform highly accurate molecular calculations incorporating
spin-orbit with multideterminant trial wavefunctions. Behind the scenes updates
include increased checking of inputs, fixes to many edge case bugs, and removal
of memory leaks in both QMCPACK and the various converters. In readiness for
transition to the new batched drivers that support both CPU and GPU execution,
more features are supported and performance improved. Test coverage and
robustness is improved in all areas. For developers, tests, sanitizers, and code
coverage are now run on Pull Requests using GitHub Actions.

* C++17 is required [\#3348](https://github.com/QMCPACK/qmcpack/pull/3348).
* Quantum ESPRESSO (QE) v6.8 support. [\#3301](https://github.com/QMCPACK/qmcpack/pull/3301).
* To aid coexistence of real and complex builds, the qmcpack executable is now named qmcpack_complex for builds with QMC_COMPLEX=1
* Added DIRAC converter and support for MSD wave functions [\#3510](https://github.com/QMCPACK/qmcpack/pull/3510)
* Spin-Orbit implementation completed [\#1770](https://github.com/QMCPACK/qmcpack/issues/1770)
* Quantum ESPRESSO (QE) v6.8 support [\#3301](https://github.com/QMCPACK/qmcpack/pull/3301)
* Support for RMG DFT code [\#3351](https://github.com/QMCPACK/qmcpack/pull/3351)
* CMake 3.15 minimum required [\#3492](https://github.com/QMCPACK/qmcpack/pull/3492)
* C++17 is required [\#3348](https://github.com/QMCPACK/qmcpack/pull/3348)
* CMake CUDA support uses modern FindCUDAToolkit [\#3460](https://github.com/QMCPACK/qmcpack/issues/3460)
* Support latest Sphinx-contrib BibTeX 2.x [\#3176](https://github.com/QMCPACK/qmcpack/issues/3176)
* One Body Density Matrices supported in batched drivers [\#3622](https://github.com/QMCPACK/qmcpack/pull/3622)
* Batched performant Slater matrix inverses [\#3470](https://github.com/QMCPACK/qmcpack/pull/3470)
* Safeguards for requesting more orbitals than the input h5 provide [\#2341](https://github.com/QMCPACK/qmcpack/issues/2341)
* Implemented One-body spin-dependent Jastrow [\#3257](https://github.com/QMCPACK/qmcpack/pull/3257)
* Fixes for low particle counts, such as using a two body Jastrow with more than 2 particle types but only one particle of each type [\#3137](https://github.com/QMCPACK/qmcpack/issues/3137)
* ppconvert is built by default [\#3143](https://github.com/QMCPACK/qmcpack/pull/3143)
* Documentation on revised input format where SPO sets are created outside the determinant [\#3456](https://github.com/QMCPACK/qmcpack/issues/3456)

### NEXUS

* Add Density functionality to qdens tool [\#3541](https://github.com/QMCPACK/qmcpack/pull/3541)
* Add new qdens-radial tool for radial analysis of densities [\#3587](https://github.com/QMCPACK/qmcpack/pull/3587)
* Radial density of requested species only [\#3099](https://github.com/QMCPACK/qmcpack/pull/3099)
* Extend structure plotting capabilities for 2D materials [\#3220](https://github.com/QMCPACK/qmcpack/pull/3220)
* Support grand-canonical twist averaging [\#3153](https://github.com/QMCPACK/qmcpack/pull/3153)
* Extend excitations to allow 'lowest' gap [\#3628](https://github.com/QMCPACK/qmcpack/pull/3628)
* Allow singlet/triplet excitation types [\#2290](https://github.com/QMCPACK/qmcpack/pull/2290)
* Allow bandstructure plotting with custom k-path [\#3293](https://github.com/QMCPACK/qmcpack/pull/3293)
* Generate PySCF inputs without a template [\#3550](https://github.com/QMCPACK/qmcpack/pull/3550)
* Add punch extension for GAMESS analysis [\#3433](https://github.com/QMCPACK/qmcpack/pull/3433)
* Read pseduopotentials in numhf format (Eric Shirley's numerical HF code) [\#3097](https://github.com/QMCPACK/qmcpack/pull/3097)
* Add L2 generation functionality [\#3079](https://github.com/QMCPACK/qmcpack/pull/3079)
* Support QMCPACK batched drivers [\#2901](https://github.com/QMCPACK/qmcpack/pull/2901)
* Make qdens test more informative [\#3593](https://github.com/QMCPACK/qmcpack/pull/3593)
* Resource lock Nexus examples for reliable parallel execution [\#3585](https://github.com/QMCPACK/qmcpack/pull/3585)
* Support running tests without mpirun available [\#3584](https://github.com/QMCPACK/qmcpack/pull/3584)
* Small fix for custom band plotting [\#3566](https://github.com/QMCPACK/qmcpack/pull/3566)
* Improve error handling for bad Jastrow requests [\#3554](https://github.com/QMCPACK/qmcpack/pull/3554)
* Fix sizing problem in some single atom workflows [\#3553](https://github.com/QMCPACK/qmcpack/pull/3553)
* Fix syntax warnings [\#3497](https://github.com/QMCPACK/qmcpack/pull/3497)
* Fix convert4qmc usage [\#3495](https://github.com/QMCPACK/qmcpack/pull/3495)
* Verify cif2cell is available before running ntest\_nexus\_structure [\#3511](https://github.com/QMCPACK/qmcpack/pull/3511)
* Fix to add\_L2 function in pseudopotential.py [\#3386](https://github.com/QMCPACK/qmcpack/pull/3386)
* Expand eshdf features [\#3334](https://github.com/QMCPACK/qmcpack/pull/3334)
* Add delay\_rank input [\#3218](https://github.com/QMCPACK/qmcpack/pull/3218)
* Add max\_seconds input [\#3159](https://github.com/QMCPACK/qmcpack/pull/3159)
* Add Tref \(initial tilematrix\) argument to optimal\_tilematrix [\#3141](https://github.com/QMCPACK/qmcpack/pull/3141)
* Use OS environment by default [\#3108](https://github.com/QMCPACK/qmcpack/pull/3108)

## [3.11.0] - 2021-04-09

Expand Down
2 changes: 1 addition & 1 deletion CMake/ClangCompilers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ endif()
# Enable OpenMP
if(QMC_OMP)
set(ENABLE_OPENMP 1)
if(ENABLE_OFFLOAD AND NOT CMAKE_SYSTEM_NAME STREQUAL "CrayLinuxEnvironment")
if(ENABLE_OFFLOAD)
if (QMC_CUDA2HIP)
set(OFFLOAD_TARGET_DEFAULT "amdgcn-amd-amdhsa")
else()
Expand Down
2 changes: 1 addition & 1 deletion CMake/GNUCompilers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ if(QMC_OMP)
set(ENABLE_OPENMP 1)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
if(ENABLE_OFFLOAD AND NOT CMAKE_SYSTEM_NAME STREQUAL "CrayLinuxEnvironment")
if(ENABLE_OFFLOAD)
set(OFFLOAD_TARGET
"nvptx-none"
CACHE STRING "Offload target architecture")
Expand Down
2 changes: 1 addition & 1 deletion CMake/NVHPCCompilers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
if(QMC_OMP)
set(ENABLE_OPENMP 1)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mp=allcores")
if(ENABLE_OFFLOAD AND NOT CMAKE_SYSTEM_NAME STREQUAL "CrayLinuxEnvironment")
if(ENABLE_OFFLOAD)
message(WARNING "QMCPACK OpenMP offload is not ready for NVIDIA HPC compiler.")
if(NOT DEFINED OFFLOAD_ARCH AND DEFINED CMAKE_CUDA_ARCHITECTURES)
list(LENGTH CMAKE_CUDA_ARCHITECTURES NUMBER_CUDA_ARCHITECTURES)
Expand Down
2 changes: 1 addition & 1 deletion CMake/python.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
function(TEST_PYTHON_MODULE MODULE_NAME MODULE_PRESENT)
message(VERBOSE "Checking import python module ${MODULE_NAME}")
execute_process(
COMMAND ${qmcpack_SOURCE_DIR}/tests/scripts/test_import.py ${MODULE_NAME}
COMMAND ${Python3_EXECUTABLE} ${qmcpack_SOURCE_DIR}/tests/scripts/test_import.py ${MODULE_NAME}
OUTPUT_VARIABLE TMP_OUTPUT_VAR
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(${MODULE_PRESENT}
Expand Down
28 changes: 15 additions & 13 deletions CMake/test_labels.cmake
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
function(ADD_TEST_LABELS TEST_NAME TEST_LABELS)
set(SUCCESS FALSE)
set(TEST_LABELS_TEMP "")
execute_process(
COMMAND ${qmcpack_SOURCE_DIR}/tests/scripts/test_labels.py ${TEST_NAME} ${QMC_CUDA} ${QMC_COMPLEX}
${QMC_MIXED_PRECISION}
OUTPUT_VARIABLE TEST_LABELS_TEMP
RESULT_VARIABLE SUCCESS)
#MESSAGE(" Label script return value: ${SUCCESS}")
if(NOT ${SUCCESS} STREQUAL "0")
message("Warning: test labeling failed. Test labeling error output:\n${TEST_LABELS_TEMP}")
set(TEST_LABELS_TEMP "")
#ELSE()
# MESSAGE(" Test: ${TEST_NAME}")
# MESSAGE(" ${TEST_LABELS_TEMP}")
if (DEFINED TEST_LABELS_${TEST_NAME}_${QMC_CUDA}_${QMC_COMPLEX}_${QMC_MIXED_PRECISION})
set(TEST_LABELS_TEMP TEST_LABELS_${${TEST_NAME}_${QMC_CUDA}_${QMC_COMPLEX}_${QMC_MIXED_PRECISION}})
else()
set(SUCCESS FALSE)
execute_process(
COMMAND ${qmcpack_SOURCE_DIR}/tests/scripts/test_labels.py ${TEST_NAME} ${QMC_CUDA} ${QMC_COMPLEX}
${QMC_MIXED_PRECISION}
OUTPUT_VARIABLE TEST_LABELS_TEMP
RESULT_VARIABLE SUCCESS)
if(${SUCCESS} STREQUAL "0")
set(TEST_LABELS_${TEST_NAME}_${QMC_CUDA}_${QMC_COMPLEX}_${QMC_MIXED_PRECISION} ${TEST_LABELS_TEMP} CACHE INTERNAL "for internal use only; do not modify")
else()
message("Warning: test labeling failed. Test labeling error output:\n${TEST_LABELS_TEMP}")
set(TEST_LABELS_TEMP "")
endif()
endif()
# Remove unstable label from direct execution.
# It will still be added to statistical child tests.
Expand Down
7 changes: 6 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ cmake_policy(SET CMP0075 NEW)
######################################################################
project(
qmcpack
VERSION 3.11.9
VERSION 3.12.9
LANGUAGES C CXX)

#--------------------------------------------------------------------
Expand Down Expand Up @@ -730,6 +730,11 @@ if(QMC_CUDA OR ENABLE_CUDA)
set(CMAKE_CUDA_EXTENSIONS OFF)
enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)
if(NOT TARGET CUDA::cublas)
message(FATAL_ERROR "Found an incomplete CUDA toolkit installation. "
"This often happens when CMake failed in recognizing the NVHPC internal CUDA toolkit. "
"Set CMAKE_CUDA_COMPILER to the full path of nvcc from a complete CUDA toolkit installation.")
endif()
# Automatically set the default NVCC flags
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Drestrict=__restrict__ -DNO_CUDA_MAIN")
if(QMC_COMPLEX)
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ encouraged for highest performance and easiest configuration.
Nightly testing currently includes the following software versions on x86:

* Compilers
* GCC 11.2.0, 9.1.0
* Clang/LLVM 12.0.1
* GCC 11.2.0, 9.2.0
* Clang/LLVM 13.0.0
* Intel 19.1.1.217 configured to use C++ library from GCC 9.1.0
* NVIDIA HPC SDK 21.5 configured to use C++ library from GCC 9.1.0
* Boost 1.77.0, 1.68.0
* HDF5 1.12.1, 1.8.19
* FFTW 3.3.9, 3.3.4
* HDF5 1.12.1
* FFTW 3.3.10, 3.3.8
* CMake 3.21.1, 3.15.0
* MPI
* OpenMPI 4.1.1, 3.1.6
Expand Down
2 changes: 1 addition & 1 deletion docs/additional_tools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ Periodic boundary conditions with Gaussian orbitals from PySCF is fully supporte

convert4qmc -gamess Myrun.out -hdf5

This option is only used/usefull with the gamess code as it is the onlycode not providing an HDF5 output
This option is only used/useful with the gamess code as it is the only code not providing an HDF5 output
The result will create QMCPACK input files but will also store all key data in the HDF5 format.

- **Mixing orbitals and multideterminants**
Expand Down
4 changes: 2 additions & 2 deletions docs/developing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ Naming
The balance between description and ease of implementation should be balanced such that the code remains self-documenting within a
single terminal window. If an extremely short variable name is used, its scope must be shorter than :math:`\sim 40` lines. An
exception is made for template parameters, which must be in all CAPS. Legacy code contains a great variety of hard to read code
style, read this section and do not immitate existing code that violates it.
style, read this section and do not imitate existing code that violates it.

Namespace names
~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -1696,7 +1696,7 @@ zeroed at the beginning of each step and accumulated upon call to
unload, and collect. In the evaluate stage,
``QMCHamiltonian::Observables`` is populated by a list of
``OperatorBase``. In the load stage, ``QMCHamiltonian::Observables``
is transfered to ``Properties`` by ``QMCDriver``. In the unload stage,
is transferred to ``Properties`` by ``QMCDriver``. In the unload stage,
``Properties`` is copied to ``LocalEnergyEstimator::scalars``. In the
collect stage, ``LocalEnergyEstimator::scalars`` is block-averaged to
``EstimatorManagerBase``
Expand Down
Loading

0 comments on commit a83be6d

Please sign in to comment.