Running the Performance Tests¶
Having cloned the repository, start by building, compiling and running a test in a build directory of your choice.
Example: Collisions0d Performance Test in Serial¶
You can build and compile this example from the root of your performance_testing_cleo directory first by building and compiling the exectuable for a build of your choice (serial, openmp, cuda or threads).
E.g. For a serial build of the colls0d example (see also cond0d, motion2d and thermo3d):
Build and compile:
$ mkdir /work/bm1183/m300950/performance_testing_cleo/builds $ ./scripts/bash/builds.sh ./src /work/bm1183/m300950/performance_testing_cleo/builds serial openmp cuda threads $ ./scripts/bash/compiles.sh /work/bm1183/m300950/performance_testing_cleo/builds colls0d serial openmp cuda threads
Note that you might want to change the team_size in the KokkosCleoSettings namespace before compilation.
Setup the example:
$ ./scripts/collisions0d/setup_colls0d.sh \ /work/bm1183/m300950/bin/envs/perftests/bin/python \ /home/m/m300950/CLEO \ /home/m/m300950/performance_testing_cleo \ /work/bm1183/m300950/performance_testing_cleo/builds \ serial openmp cuda threads
(Or) If setting up cond0d:
$ ./scripts/condensation0d/setup_cond0d.sh \ /work/bm1183/m300950/bin/envs/perftests/bin/python \ /home/m/m300950/CLEO \ /home/m/m300950/performance_testing_cleo \ /work/bm1183/m300950/performance_testing_cleo/builds \ serial openmp cuda threads
(Or) If setting up motion2d:
$ ./scripts/motion2d/setup_motion2d.sh \ /work/bm1183/m300950/bin/envs/perftests/bin/python \ /home/m/m300950/CLEO \ /home/m/m300950/performance_testing_cleo \ /work/bm1183/m300950/performance_testing_cleo/builds \ serial openmp cuda threads
(Or) If setting up thermo3d:
$ ./scripts/constthermo3d/setup_thermo3d.sh \ /work/bm1183/m300950/bin/envs/perftests/bin/python \ /home/m/m300950/CLEO \ /home/m/m300950/performance_testing_cleo \ /work/bm1183/m300950/performance_testing_cleo/builds \ serial openmp cuda threads
#. a) Then you could perform one normal run with e.g.
./builds/serial/collisions0d/colls0d ./builds/serial/tmp/colls0d/config_1_128_1_0.yaml
Or e.g. run the example with Kokkos performance tool(s):
$ ./scripts/bash/run_profiling.sh \ /work/bm1183/m300950/bin/envs/perftests/bin/python \ /home/m/m300950/performance_testing_cleo \ /work/bm1183/m300950/performance_testing_cleo/builds \ colls0d \ kerneltimer.spacetimestack.memoryevents.memoryusage \ TRUE \ serial openmp cuda threads $ ./scripts/bash/postproc_profiling.sh \ /work/bm1183/m300950/bin/envs/perftests/bin/python \ /home/m/m300950/performance_testing_cleo \ /work/bm1183/m300950/performance_testing_cleo/builds \ colls0d \ kerneltimer.spacetimestack.memoryevents.memoryusage \ FALSE \ serial openmp cuda threads $ ./scripts/bash/create_grand_datasets.sh \ /work/bm1183/m300950/bin/envs/perftests/bin/python \ /home/m/m300950/performance_testing_cleo \ /work/bm1183/m300950/performance_testing_cleo/builds \ colls0d \ kerneltimer \ FALSE \ serial openmp cuda threads
You can add/remove profilers in the list of profiler names seperated by a ‘.’, e.g.
kerneltimer.spacetimestack.memoryevents.memoryusage
to run profilers sequentially