Compare commits
3 Commits
newtuples
...
895cd02778
| Author | SHA1 | Date | |
|---|---|---|---|
| 895cd02778 | |||
| 8efa3d911e | |||
| 0fa24404e5 |
42
README.org
42
README.org
@@ -69,10 +69,10 @@ And then you can see the =configure= options
|
|||||||
../../configure --help
|
../../configure --help
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Benchmarks
|
** Benches
|
||||||
|
|
||||||
The script =tools/configure-benches.sh= can be used to create
|
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
|
#+begin_src sh :exports results :results verbatim org :results verbatim drawer replace output
|
||||||
awk '/begin +doc/,/end +doc/ { print $NL }' tools/configure-benches.sh |
|
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.
|
and it should use a CUDA aware MPI implementation.
|
||||||
It also only uses the routines that involve dgemm.
|
It also only uses the routines that involve dgemm.
|
||||||
:end:
|
: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
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
MPI_Init(&argc, &argv);
|
MPI_Init(&argc, &argv);
|
||||||
|
|
||||||
size_t checkpoint_it;
|
size_t checkpoint_it, max_iterations;
|
||||||
int no(10), nv(100), itMod(-1), percentageMod(10);
|
int no(10), nv(100), itMod(-1), percentageMod(10);
|
||||||
float checkpoint_percentage;
|
float checkpoint_percentage;
|
||||||
bool
|
bool
|
||||||
@@ -30,6 +30,9 @@ int main(int argc, char** argv) {
|
|||||||
app.add_option("--no", no, "Occupied orbitals");
|
app.add_option("--no", no, "Occupied orbitals");
|
||||||
app.add_option("--nv", nv, "Virtual orbitals");
|
app.add_option("--nv", nv, "Virtual orbitals");
|
||||||
app.add_option("--mod", itMod, "Iteration modifier");
|
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("--keep-vppph", keepVppph, "Do not delete Vppph");
|
||||||
app.add_flag("--nochrono", nochrono, "Do not print chrono");
|
app.add_flag("--nochrono", nochrono, "Do not print chrono");
|
||||||
app.add_flag("--rank-round-robin", rankRoundRobin, "Do rank round robin");
|
app.add_flag("--rank-round-robin", rankRoundRobin, "Do rank round robin");
|
||||||
@@ -199,6 +202,7 @@ int main(int argc, char** argv) {
|
|||||||
.with_iterationMod(itMod)
|
.with_iterationMod(itMod)
|
||||||
.with_percentageMod(percentageMod)
|
.with_percentageMod(percentageMod)
|
||||||
.with_tuplesDistribution(tuplesDistribution)
|
.with_tuplesDistribution(tuplesDistribution)
|
||||||
|
.with_maxIterations(max_iterations)
|
||||||
// checkpoint options
|
// checkpoint options
|
||||||
.with_checkpointAtEveryIteration(checkpoint_it)
|
.with_checkpointAtEveryIteration(checkpoint_it)
|
||||||
.with_checkpointAtPercentage(checkpoint_percentage)
|
.with_checkpointAtPercentage(checkpoint_percentage)
|
||||||
|
|||||||
@@ -164,8 +164,7 @@ AC_TYPE_SIZE_T
|
|||||||
dnl -----------------------------------------------------------------------
|
dnl -----------------------------------------------------------------------
|
||||||
dnl CHECK CTF
|
dnl CHECK CTF
|
||||||
if test xYES = x${BUILD_CTF}; then
|
if test xYES = x${BUILD_CTF}; then
|
||||||
AC_MSG_WARN([Sorry, building CTF not supported yet provide a build path
|
AC_MSG_WARN([You will have to do make ctf before building the project.])
|
||||||
with --with-ctf=path/to/ctf/installation])
|
|
||||||
else
|
else
|
||||||
CPPFLAGS="$CPPFLAGS -I${LIBCTF_CPATH}"
|
CPPFLAGS="$CPPFLAGS -I${LIBCTF_CPATH}"
|
||||||
LDFLAGS="$LDFLAGS -L${LIBCTF_LD_LIBRARY_PATH} -lctf"
|
LDFLAGS="$LDFLAGS -L${LIBCTF_LD_LIBRARY_PATH} -lctf"
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ namespace atrip {
|
|||||||
ADD_ATTRIBUTE(bool, rankRoundRobin, false)
|
ADD_ATTRIBUTE(bool, rankRoundRobin, false)
|
||||||
ADD_ATTRIBUTE(bool, chrono, false)
|
ADD_ATTRIBUTE(bool, chrono, false)
|
||||||
ADD_ATTRIBUTE(bool, barrier, 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, iterationMod, -1)
|
||||||
ADD_ATTRIBUTE(int, percentageMod, -1)
|
ADD_ATTRIBUTE(int, percentageMod, -1)
|
||||||
ADD_ATTRIBUTE(TuplesDistribution, tuplesDistribution, NAIVE)
|
ADD_ATTRIBUTE(TuplesDistribution, tuplesDistribution, NAIVE)
|
||||||
|
|||||||
@@ -773,6 +773,8 @@ Atrip::Output Atrip::run(Atrip::Input<F> const& in) {
|
|||||||
Atrip::chrono["iterations"].stop();
|
Atrip::chrono["iterations"].stop();
|
||||||
// ITERATION END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%{{{1
|
// ITERATION END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%{{{1
|
||||||
|
|
||||||
|
if (in.maxIterations != 0 && i >= in.maxIterations) break;
|
||||||
|
|
||||||
}
|
}
|
||||||
// END OF MAIN LOOP
|
// END OF MAIN LOOP
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user