10
1
mirror of https://gitlab.com/scemama/qmcchem.git synced 2024-12-22 12:23:30 +01:00
Quantum Monte Carlo program http://qmcchem.ups-tlse.fr
Go to file
Francois Coppens 9d7c73ace4 First attempt at replacing SM-calls to QMCKL/SMW calls.
- Doing QMCkl/SM_slagels splitting of a single SM update works.

TODO:
- Make it more efficient in terms of array handling
- Restructure calling routing above so all updates can be sent to QMCKL/SMW in one go.
2021-10-11 15:38:12 +02:00
bin Merge branch 'master' of gitlab.com:scemama/qmcchem 2021-08-26 11:41:45 +02:00
ezfio_config Integrated Jastrow Mu 2021-07-31 11:33:20 +02:00
install Installation OK now 2020-11-02 22:50:11 +01:00
ocaml Integrated Jastrow Mu 2021-07-31 11:33:20 +02:00
promela Promela model 2016-12-29 01:43:34 +01:00
scripts Added QMCkl to QMC=CHEM as a submodule. 2021-09-23 15:28:33 +02:00
src First attempt at replacing SM-calls to QMCKL/SMW calls. 2021-10-11 15:38:12 +02:00
.gitignore Fixed Makefiles 2019-10-01 09:36:29 +02:00
.gitmodules Added QMCkl to QMC=CHEM as a submodule. 2021-09-23 15:28:33 +02:00
configure.sh DMC dressing 2021-08-24 17:45:47 +02:00
LICENSE Initial commit 2015-12-18 21:23:12 +01:00
make.config.gfortran First attempt at replacing SM-calls to QMCKL/SMW calls. 2021-10-11 15:38:12 +02:00
make.config.ifort Swaps in determinants 2021-06-07 23:41:37 +02:00
Makefile Installation OK now 2020-11-02 22:50:11 +01:00
README.md Update README.md 2020-11-02 17:07:04 +00:00

QMC=Chem : Quantum Monte Carlo for Chemistry

QMC=Chem is the quantum Monte Carlo program of the Toulouse (France) group. It is meant to be used in the post-Full-CI context : a quasi-Full-CI calculation is done with the quantum package, and this wave function is used as a trial wave function for the fixed-node diffusion Monte Carlo algorithm.

  • Parallel efficiency of 98.3% on 16_000 cores
  • The load balancing is optimal: the workers always work 100% of the time, independently of their respective CPU speeds
  • Efficient: 0.96 Pflops/s on 76_800 cores of Curie in 2011
  • All network communications are non-blocking, with the ZeroMQ library
  • All the implemented algorithms are CPU-bound : the only limit is the available CPU time
  • The number of simultaneous worker nodes can be variable during a calculation
  • Fully fault-tolerant (crashing nodes dont stop the running calculation)
  • QMC=Chem has been used in grid environments (EGI european grid) and in Cloud environments (France Grilles) coupled to supercomputers

Warnings: * QMC=Chem is under the GPLv2 license. Any modifications to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build & install instructions.

Requirements

Most of the dependencies are open-source can be downloaded automatically by going into the install directory and running make. It will first download into the install/Downloads directory everything that needs to be installed. The building of the dependencies takes place in the install/_build directory, and the packages that are being installed can be followed by looking at the log files in this directory. When a package was successfully installed, a *.ok file is created and the log file is deleted.

If you dont have an internet connection available, you can execute the downloading step on another computer and transfer all the downloaded files into the Downloads directory. The Fortran and C++ compilers, Python and Bash interpreters and the Lapack library need to be installed manually by the user.

Installation

The make.config file contains compiler specific parameters. You should change them to match your hardware. You can copy the make.config.ifort or make.config.gfortran as a starting point.

Before using or compiling QMC=Chem, environment variables need to be loaded. The environment variables are located in the qmcchemrc file:

$ source qmcchemrc

The QMCCHEM_NIC environment variable should be set to the proper network interface, usually ib0 on HPC machines.

To compile the program, run

$ make

Example of a QMC=Chem calculation

1.Calculation with the quantum package

Create the xyz file containing the nuclear coordinates of the system

$ cat > h2o.xyz << EOF
3
Water molecule
O 0. 0. 0.
H 0.9572 0. 0.
H -0.239987 0.926627 0.
EOF

Choose a suitable basis set and create the EZFIO database

$ qp_create_ezfio -b cc-pvdz h2o.xyz -o h2o

Run the SCF calculation

$ qp_run scf h2o

Run the CIPSI calculation

$ qp_run fci h2o

Transform the input for use in QMC=Chem

$ qp_run save_for_qmcchem h2o

2.FN-DMC calculation with QMC=Chem

Before using QMC=Chem, you need to load the environment variables:

$ source qmcchemrc

In QMC=Chem, everything goes through the use of the qmcchem command. When a command is run with no arguments, it prints a help message. This is mainly the manual of QMC=Chem. For example:

$ qmcchem 
QMC=Chem command

  qmcchem SUBCOMMAND

=== subcommands ===

  debug    Debug ZeroMQ communications
  edit     Edit input data
  md5      Manipulate input MD5 keys
  result   Displays the results computed in an EZFIO directory.
  run      Run a calculation
  stop     Stop a running calculation
  version  print version information
  help     explain a given subcommand (perhaps recursively)

missing subcommand for command qmcchem

$ qmcchem edit
Run a calculation

  qmcchem run EZFIO_FILE


Run QMC=Chem
      

=== flags ===

  [-a]                    Add more resources to a running calculation.
  [-d]                    Start a dataserver process on the local host.
  [-q <dataserver_addr>]  Start a qmc process on the local host.
  [-s <host>]             Start a qmc process on <host>.
  [-help]                 print this help text and exit
                          (alias: -?)

missing anonymous argument: EZFIO_FILE
  1. Set the parameters for a VMC calculation to create initial walker positions
$ qmcchem edit -h
Edit input data

  qmcchem edit EZFIO_FILE [INPUT]


Edit input data
      

=== flags ===

  [-c]                Clear blocks
  [-e energy]         Fixed reference energy to normalize DMC weights
  [-f 0|1]            Correct wave function to verify electron-nucleus cusp
                      condition
  [-j jastrow_type]   Type of Jastrow factor [ None | Core | Simple ]
  [-l seconds]        Length (seconds) of a block
  [-m method]         QMC Method : [ VMC | DMC ]
  [-n norm]           Truncation t of the wave function : Remove determinants
                      with a
                      contribution to the norm less than t
  [-s sampling]       Sampling algorithm : [ Langevin | Brownian ]
  [-t seconds]        Requested simulation time (seconds)
  [-ts time_step]     Simulation time step
  [-w walk_num]       Number of walkers per CPU core
  [-wt walk_num_tot]  Total number of stored walkers for restart
  [-help]             print this help text and exit
                      (alias: -?)

$ qmcchem edit h2o -f 1 -m VMC -n 1.e-5 -s Langevin -t 300 -l 10
  1. Get info on the wave function
$ qmcchem info h2o
  1. Run the VMC calculation
$ qmcchem run h2o
  1. Set the correct parameters for FN-DMC
$ qmcchem edit h2o -e -76.438 -m DMC -s Brownian -ts 3.e-4 -t 3600 -l 30
  1. Run the FN-DMC calculation
$ qmcchem run h2o
  1. Print the result
$ qmcchem result h2o

References

Quantum Monte Carlo for large chemical systems: Implementing efficient strategies for petascale platforms and beyond > Anthony Scemama , Michel Caffarel , Emmanuel Oseret and William Jalby (2013), in: Journal of Computational Chemistry, 34:11(938951)

Quantum Monte Carlo with very large multideterminant wavefunctions > Anthony Scemama , Thomas Applencourt , Emmanuel Giner and Michel Caffarel (2015), in: ArXiv ePrints:arXiv:1510.00730v2 [physics.chem-ph]