Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alejandrogallo/atrip
High Performance library for the CCSD(T) algorithm in quantum chemistry
https://github.com/alejandrogallo/atrip
asynchronous-programming coupled-cluster cuda literate-programming mpi quantum-chemistry
Last synced: 2 months ago
JSON representation
High Performance library for the CCSD(T) algorithm in quantum chemistry
- Host: GitHub
- URL: https://github.com/alejandrogallo/atrip
- Owner: alejandrogallo
- License: apache-2.0
- Created: 2021-08-27T14:28:16.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-07-26T07:57:08.000Z (6 months ago)
- Last Synced: 2024-07-26T09:16:57.777Z (6 months ago)
- Topics: asynchronous-programming, coupled-cluster, cuda, literate-programming, mpi, quantum-chemistry
- Language: C++
- Homepage: https://alejandrogallo.github.io/atrip
- Size: 11.9 MB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.org
- License: LICENSE
Awesome Lists containing this project
README
#+title: ATRIP: An MPI-asynchronous implementation of CCSD(T)
#+PROPERTY: header-args+ :noweb yes :comments noweb :mkdirp t#+begin_export rst
.. toctree::
:maxdepth: 2atrip
#+end_export* About this document
You can find this project written as a literate program
- [[https://alejandrogallo.github.io/atrip/atrip.html][Literate program]]
or if you prefer reading the source code with Doxygen there is also a built
of doxygen available:- [[https://alejandrogallo.github.io/atrip/doxygen/html/index.html][Doxygen]]
* How to cite
If you need to cite this algorithm
before the proper paper is released please contact me.In the mean time the code has been used in
[[https://aip.scitation.org/doi/10.1063/5.0074936][this publication]] and can therefore been cited.* Building
Atrip uses autotools to build the system.
Autotools works by first creating a =configure= script from
a =configure.ac= file.Atrip should be built out of source, this means that
you have to create a build directory other that the root
directory, for instance in the =build/tutorial= directory#+begin_src sh :exports code
mkdir -p build/tutorial/
cd build/tutorial
#+end_srcFirst you have to build the =configure= script by doing
#+begin_src sh :dir build/tutorial :exports code :results raw drawer
../../bootstrap.sh
#+end_src#+RESULTS:
:results:Creating configure script
Now you can build by doing
mkdir build
cd build
../configure
make extern
make all:end:
And then you can see the =configure= options
#+begin_src sh :dir build/tutorial :results raw drawer :eval no
../../configure --help
#+end_src** Benches
The script =tools/configure-benches.sh= can be used to create
a couple of configurations for benches:#+begin_src sh :exports results :results verbatim org :results verbatim drawer replace output
awk '/begin +doc/,/end +doc/ { print $NL }' tools/configure-benches.sh |
grep -v -e "begin \+doc" -e "end \+doc" |
sed "s/^# //; s/^# *$//; /^$/d"
#+end_src#+RESULTS:
:results:
- default ::
This configuration uses a CPU code with dgemm
and without computing slices.
- only-dgemm ::
This only runs the computation part that involves dgemms.
- cuda-only-dgemm ::
This is the naive CUDA implementation compiling only the dgemm parts
of the compute.
- cuda-slices-on-gpu-only-dgemm ::
This configuration tests that slices reside completely on the gpu
and it should use a CUDA aware MPI implementation.
It also only uses the routines that involve dgemm.
:end:In order to generate the benches just create a suitable directory for it
#+begin_src sh :eval no
mkdir -p build/benches
cd buid/benches
../../tools/configure-benches.sh CXX=g++ ...
#+end_srcand you will get a Makefile together with several project folders.
You can either configure all projects with =make all= or
then go in each folder.Notice that you can give a path for ctf for all of them by doing
#+begin_src sh :eval no
../../tools/configure-benches.sh --with-ctf=/absolute/path/to/ctf
#+end_src* Running benches
** Main benchmark
The main benchmark gets built in =bench/atrip= and is used to run an
atrip run with random tensors.A common run of this script will be the following
#+begin_src sh
bench/atrip \
--no 100 \
--nv 1000 \
--mod 1 \
--% 0 \
--dist group \
--nocheckpoint \
--max-iterations 1000
#+end_src