Add Building information and building for sources on GPU

This commit is contained in:
Alejandro Gallo 2022-12-06 13:26:44 +01:00
parent ad542fe856
commit 8f7d05efda
2 changed files with 104 additions and 4 deletions

View File

@ -26,3 +26,69 @@ 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
** Benchmarks
The script =tools/configure-benches.sh= can be used to create
a couple of configurations for benchmarks:
#+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:

View File

@ -6,6 +6,7 @@ set -eu
flags=("${@}")
PROJECTS=()
############################################################
#
## Check root directory
#
@ -35,6 +36,7 @@ EOF
exit 1
}
############################################################
#
## Create configuration function
#
@ -48,7 +50,8 @@ create_config () {
echo "> creating: $name"
cat <<SH > configure
#!/usr/bin/env bash
# created by $0 on $(date)
# creator: $0
# date: $(date)
$root_project/configure $(cat $file | paste -s) \\
$(for word in "${flags[@]}"; do
@ -62,9 +65,14 @@ SH
cd - > /dev/null
}
############################################################
# begin doc
#
## default configuration
# - default ::
# This configuration uses a CPU code with dgemm
# and without computing slices.
#
# end doc
tmp=`mktemp`
cat <<EOF > $tmp
@ -74,9 +82,12 @@ EOF
create_config $tmp default
rm $tmp
# begin doc
#
## only-dgemm configuration
# - only-dgemm ::
# This only runs the computation part that involves dgemms.
#
# end doc
tmp=`mktemp`
cat <<EOF > $tmp
@ -87,6 +98,29 @@ EOF
create_config $tmp only-dgemm
rm $tmp
#
# begin doc
#
# - 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 doc
tmp=`mktemp`
cat <<EOF > $tmp
--enable-cuda
--enable-sources-in-gpu
--enable-cuda-aware-mpi
--enable-only-dgemm
--disable-slice
EOF
create_config $tmp sources-in-gpu
rm $tmp
############################################################
#
## Create makefile
#
@ -128,5 +162,5 @@ EOF
## Emacs stuff
# Local Variables:
# eval: (outline-minor-mode)
# outline-regexp: "## "
# outline-regexp: "############################################################"
# End: