libqqc
library for high performance evaluation of quantum chemistry methods through quadrature schemes
|
Contributing Authors: Benjamin Thomitzni
Code | |
---|---|
Meta | |
Documentation |
libqqc is a library for high performance evaluation of quantum chemistry methods through quadrature schemes.
Continious Integration and documentation deployment action workflows for github.
We provide H2O human-readable data which can be used for testing and a script to download larger test systems (H3COH, Anthracene, Porphyrin).
Provides the doxygen documentation which is automatically build and deploys through GitHub pages to !.
MPI and no-MPI example on how to setup and run calculation.
Please be aware: For Hybrid (MPI+OpenMP) usage follow the example given and setup the correct MPI_Init_thread
call
Location of library header and body files.
Scripts used to run the library and process the data. Runs were done on BwForCluster JUSTUS 2.
Template files to speed up development.
Testing suit set-up per module for both OpenMP, MPI and MPI+OpenMP versions.
Packages needed
cmake, gcc
doxygen
mpich
Eigen
Setup is handled by configure
script, see
for help. Current options:
gcc
: Default, Build with the GNU compilernoOpenMP
: Deactivate OpenMPwMPI
: compile with MPI wrappers to enable MPIwEigen
: compile Eigen
library versions of calculations, needs EIGEN3_INCLUDE_DIR
set, e.g. wGPU
: enables GPU versions of calculations, NOT SUPPORTED YETafter configure
, change to build directory, and compile with make
make install
installs library and exe into upper /lib
and /exe
folder.
You then can compile the host program, for example with /host_example/
or
The library has been tested with GNU gcc/g++ 10.1.0
To run a calculation you have to set up three distinct parts.
1) Loader_*
Loaders are method and host program specific and are used to setup the routins for the loading of the necessary data. MPI and no-MPI versions differ in these loading methods.
2) Vault_*
Vaults are method specific and hold only the necessary data for the calculation. They are given the Loader_*
object through their constructor, from which they call the loading methods. Therefore the constructor is specific to the Loader_*
object.
3) Do_*
These objects do the set-up for the calculation and then execute it. Results are printed into a output stream. They are given the Vault_*
data holder object and acces the data through them.
See /host_example/main.cpp
for an example on how to call the library.
tba
finished ToDos