ATRIP: An MPI-asynchronous implementation of CCSD(T)

1 About this document

You can find this project written as a literate program

or if you prefer reading the source code with Doxygen there is also a built of doxygen available:

2 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 this publication and can therefore been cited.

3 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

mkdir -p build/tutorial/
cd build/tutorial

First you have to build the configure script by doing

../../bootstrap.sh

And then you can see the configure options

../../configure --help

3.1 Benches

The script tools/configure-benches.sh can be used to create a couple of configurations for benches:

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.

In order to generate the benches just create a suitable directory for it

mkdir -p build/benches
cd buid/benches
../../tools/configure-benches.sh CXX=g++ ...

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

../../tools/configure-benches.sh --with-ctf=/absolute/path/to/ctf

4 Running benches

4.1 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

bench/atrip \
  --no 100 \
  --nv 1000 \
  --mod 1 \
  --% 0 \
  --dist group \
  --nocheckpoint \
  --max-iterations 1000