From 8f7d05efda5cb2e0381941da0ca57484b34637c0 Mon Sep 17 00:00:00 2001 From: Alejandro Gallo Date: Tue, 6 Dec 2022 13:26:44 +0100 Subject: [PATCH] Add Building information and building for sources on GPU --- README.org | 66 ++++++++++++++++++++++++++++++++++++++ tools/configure-benches.sh | 42 +++++++++++++++++++++--- 2 files changed, 104 insertions(+), 4 deletions(-) diff --git a/README.org b/README.org index 5ce3f4f..294da39 100644 --- a/README.org +++ b/README.org @@ -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: diff --git a/tools/configure-benches.sh b/tools/configure-benches.sh index 28bc856..03b50d4 100755 --- a/tools/configure-benches.sh +++ b/tools/configure-benches.sh @@ -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 < 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 < $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 < $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 < $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: