133 lines
3.2 KiB
Org Mode
133 lines
3.2 KiB
Org Mode
#+title: ATRIP: An MPI-asynchronous implementation of CCSD(T)
|
|
#+PROPERTY: header-args+ :noweb yes :comments noweb :mkdirp t
|
|
|
|
#+begin_export rst
|
|
.. toctree::
|
|
:maxdepth: 2
|
|
|
|
atrip
|
|
#+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_src
|
|
|
|
First 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.
|
|
- 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_src
|
|
|
|
and 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/main= 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/main \
|
|
--no 100 \
|
|
--nv 1000 \
|
|
--mod 1 \
|
|
--% 0 \
|
|
--dist group \
|
|
--nocheckpoint \
|
|
--max-iterations 1000
|
|
#+end_src
|
|
|