Difference between revisions of "QMCChem"

From Qmcchem
Jump to navigation Jump to search
Line 17: Line 17:
 
* All workers are totally independent
 
* All workers are totally independent
 
* The load balancing is optimal: the workers always work 100% of the time, independently of their respective CPU speeds
 
* The load balancing is optimal: the workers always work 100% of the time, independently of their respective CPU speeds
* The code was written to be as portable as possible: the manager is written in standard Python and the worker is written in standard Fortran90 with MPI.
+
* The code was written to be as portable as possible: the manager is written in standard Python and the worker is written in standard Fortran.
 
* The network traffic is minimal and the amount of data transferred over the network can even be adjusted by the user
 
* The network traffic is minimal and the amount of data transferred over the network can even be adjusted by the user
 
* The number of simultaneous worker nodes can be variable during a calculation
 
* The number of simultaneous worker nodes can be variable during a calculation
* Fault-tolerance can be easily implemented
+
* Fault-tolerance is implemented
 
* The input and output data are not presented as traditional input files and output files. All the input and output data are stored in a database and an API is provided to access the data. This allows different forms of interaction of the user: scripts, graphical user interfaces, command-line tools, web interfaces, etc.
 
* The input and output data are not presented as traditional input files and output files. All the input and output data are stored in a database and an API is provided to access the data. This allows different forms of interaction of the user: scripts, graphical user interfaces, command-line tools, web interfaces, etc.
  
Line 27: Line 27:
 
=== Methods ===
 
=== Methods ===
 
* VMC
 
* VMC
* DMC
+
* DMC with stochastic reconfiguration
 
* Jastrow factor optimization
 
* Jastrow factor optimization
 
* CI coefficients optimization
 
* CI coefficients optimization
Line 34: Line 34:
 
* Single determinant
 
* Single determinant
 
* Multi-determinant
 
* Multi-determinant
* Multi-Jastrow
 
 
* Nuclear cusp correction
 
* Nuclear cusp correction
 
=== Properties ===
 
* [[The Electron Pair Localization Function]]
 
  
 
=== Links ===
 
=== Links ===
Line 58: Line 54:
 
* Moments (dipole, quadrupole,...)
 
* Moments (dipole, quadrupole,...)
 
* Electron density
 
* Electron density
* ZV-ZB EPLF estimator
 
  
 
=== Practical aspects ===
 
=== Practical aspects ===
Line 69: Line 64:
 
== Papers related to the QMC=Chem code ==
 
== Papers related to the QMC=Chem code ==
  
* [[Large-scale quantum Monte Carlo electronic structure calculations on the EGEE grid]]
+
* [http://dx.doi.org/10.1002/jcc.23216 Quantum Monte Carlo for large chemical systems: Implementing efficient strategies for petascale platforms and beyond]
* [{{SERVER}}/files/scemama/Curie.pdf Benchmarks realized on the Curie (TGCC) machine]
+
* [http://link.springer.com/chapter/10.1007/978-1-4614-0508-5_13 QMC=Chem: a quantum Monte Carlo program for large-scale simulations in chemistry at the petascale level and beyond]
 +
* [http://link.springer.com/chapter/10.1007/978-1-4614-0508-5_13 Large-scale quantum Monte Carlo electronic structure calculations on the EGEE grid]

Revision as of 14:55, 30 January 2013

During the last years we have been actively developing the QMC=Chem quantum Monte Carlo code. This code was initially designed for massively parallel simulations, and uses the manager/worker model.

Manager worker.png

When the program starts its execution, the manager runs on the master node and spawns two other processes: a worker process and a data server. The worker is an efficient Fortran executable with minimal memory and disk space requirements (typically a few megabytes for each), where the only MPI communication is the broadcast of the input data (wave function parameters, initial positions in the 3N-space and random seed). The outline of the task of a worker is the following:

 while ( Running )
 {
    compute_a_block_of_data();
    Running = send_the_results_to_the_data_server();
 }

The data server is a socket server implemented in Python. When it receives the computed data of a worker, it replies to the worker the order given by the manager to compute another block or to stop. The received data is then stored in a database using an asynchronous I/O mechanism. The manager is always aware of the results computed by all the workers and controls the running/stopping state of the workers and the interaction of the user during the simulation.

QMC=Chem is very well suited to massive parallelism and cloud computing:

  • All the implemented algorithms are CPU-bound
  • All workers are totally independent
  • The load balancing is optimal: the workers always work 100% of the time, independently of their respective CPU speeds
  • The code was written to be as portable as possible: the manager is written in standard Python and the worker is written in standard Fortran.
  • The network traffic is minimal and the amount of data transferred over the network can even be adjusted by the user
  • The number of simultaneous worker nodes can be variable during a calculation
  • Fault-tolerance is implemented
  • The input and output data are not presented as traditional input files and output files. All the input and output data are stored in a database and an API is provided to access the data. This allows different forms of interaction of the user: scripts, graphical user interfaces, command-line tools, web interfaces, etc.

Current Features

Methods

  • VMC
  • DMC with stochastic reconfiguration
  • Jastrow factor optimization
  • CI coefficients optimization

Wave functions

  • Single determinant
  • Multi-determinant
  • Nuclear cusp correction

Links

Parallel speed-up curve

Qmcchem speedup.png

Number of computed blocks for the CuCl2 molecule. The simulation stops when the wall-time has reached 5 minutes. Each block is composed of 10 walkers realizing 2,000 VMC steps.


Features under development

Properties

  • Molecular Forces
  • Moments (dipole, quadrupole,...)
  • Electron density

Practical aspects

  • Web interface for input and output

Input file creation

The QMC=Chem input file can be created using the web interface. Upload a Q5Cost file or an output file from GAMESS, Gaussian or Molpro, and you will download the QMC=Chem input directory.

Papers related to the QMC=Chem code