qmcpack
qmcpack copied to clipboard
Momentum distribution n(k) implementation is missing in the batched VMC/DMC
When working on a Fermi surface of a delafossite, I noticed that it requires quite a lot of n(k) samples. Currently, the CPU version works but having the GPU version would be greatly beneficial for extra resources.
After discussing with Peter, he pointed out that this is implemented in the batched code in https://github.com/QMCPACK/qmcpack/pull/3447 . More optimization may be needed to fully use the multiwalker infrastructure and gain further speedups, but it is worth kicking the tires. Jaron did significant testing in that PR.
@aannabe let us know what you find. I am not sure if, e.g. NEXUS will drive this batched observable or if a small update is needed.
Using Nexus with driver = 'batched', currently puts the momentum estimator in the hamiltonian section. This will run but silently not accumulate the n(k):
h5ls vmc_gc.s000.stat.h5
ElecElec Group
IonIon Group
KEcorr Group
Kinetic Group
LocalECP Group
LocalEnergy Group
LocalEnergy_sq Group
LocalPotential Group
MPC Group
NonLocalECP Group
I was told that it needs to go to qmc section. Doing so results in a crash with the following error:
Fatal Error. Aborting at EstimatorManager input:unparsable <estimator> node, name: momentum type: momentum in Estimators input.
The above were run on Summit, and inputs are attached. Any ideas?
@aannabe please can you retry your problem case by basing your input off of the following example:
https://github.com/QMCPACK/qmcpack/blob/develop/nexus/examples/qmcpack/rsqmc_quantum_espresso/01_diamond_dft_vmc/diamond_lda_vmc_batched_estimators.py
The momentum distribution was given a different name for the batched drivers.
Thank you, a quick calculation of Gamma point using the above Nexus example runs successfully:
h5ls vmc_batched.s000.stat.h5
ElecElec Group
IonIon Group
Kinetic Group
LocalECP Group
LocalEnergy Group
LocalEnergy_sq Group
LocalPotential Group
MPC Group
NonLocalECP Group
nofk Group
Closing the issue.