3 Commits

5 changed files with 53 additions and 10 deletions

View File

@@ -69,10 +69,10 @@ And then you can see the =configure= options
../../configure --help
#+end_src
** Benchmarks
** Benches
The script =tools/configure-benches.sh= can be used to create
a couple of configurations for benchmarks:
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 |
@@ -92,3 +92,41 @@ sed "s/^# //; s/^# *$//; /^$/d"
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

View File

@@ -16,7 +16,7 @@
int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
size_t checkpoint_it;
size_t checkpoint_it, max_iterations;
int no(10), nv(100), itMod(-1), percentageMod(10);
float checkpoint_percentage;
bool
@@ -30,6 +30,9 @@ int main(int argc, char** argv) {
app.add_option("--no", no, "Occupied orbitals");
app.add_option("--nv", nv, "Virtual orbitals");
app.add_option("--mod", itMod, "Iteration modifier");
app.add_option("--max-iterations",
max_iterations,
"Maximum number of iterations to run");
app.add_flag("--keep-vppph", keepVppph, "Do not delete Vppph");
app.add_flag("--nochrono", nochrono, "Do not print chrono");
app.add_flag("--rank-round-robin", rankRoundRobin, "Do rank round robin");
@@ -48,11 +51,11 @@ int main(int argc, char** argv) {
#if defined(HAVE_CUDA)
size_t ooo_threads = 0, ooo_blocks = 0;
app.add_option("--ooo-blocks",
ooo_blocks,
"CUDA: Number of blocks per block for kernels going through ooo tensors");
ooo_blocks,
"CUDA: Number of blocks per block for kernels going through ooo tensors");
app.add_option("--ooo-threads",
ooo_threads,
"CUDA: Number of threads per block for kernels going through ooo tensors");
ooo_threads,
"CUDA: Number of threads per block for kernels going through ooo tensors");
#endif
CLI11_PARSE(app, argc, argv);
@@ -199,6 +202,7 @@ int main(int argc, char** argv) {
.with_iterationMod(itMod)
.with_percentageMod(percentageMod)
.with_tuplesDistribution(tuplesDistribution)
.with_maxIterations(max_iterations)
// checkpoint options
.with_checkpointAtEveryIteration(checkpoint_it)
.with_checkpointAtPercentage(checkpoint_percentage)

View File

@@ -164,8 +164,7 @@ AC_TYPE_SIZE_T
dnl -----------------------------------------------------------------------
dnl CHECK CTF
if test xYES = x${BUILD_CTF}; then
AC_MSG_WARN([Sorry, building CTF not supported yet provide a build path
with --with-ctf=path/to/ctf/installation])
AC_MSG_WARN([You will have to do make ctf before building the project.])
else
CPPFLAGS="$CPPFLAGS -I${LIBCTF_CPATH}"
LDFLAGS="$LDFLAGS -L${LIBCTF_LD_LIBRARY_PATH} -lctf"

View File

@@ -86,7 +86,7 @@ namespace atrip {
ADD_ATTRIBUTE(bool, rankRoundRobin, false)
ADD_ATTRIBUTE(bool, chrono, false)
ADD_ATTRIBUTE(bool, barrier, false)
ADD_ATTRIBUTE(int, maxIterations, 0)
ADD_ATTRIBUTE(size_t, maxIterations, 0)
ADD_ATTRIBUTE(int, iterationMod, -1)
ADD_ATTRIBUTE(int, percentageMod, -1)
ADD_ATTRIBUTE(TuplesDistribution, tuplesDistribution, NAIVE)

View File

@@ -773,6 +773,8 @@ Atrip::Output Atrip::run(Atrip::Input<F> const& in) {
Atrip::chrono["iterations"].stop();
// ITERATION END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%{{{1
if (in.maxIterations != 0 && i >= in.maxIterations) break;
}
// END OF MAIN LOOP