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):

  1. 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.

  1. 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
    
  2. (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
    
  3. (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
    
  4. (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

    1. 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
    
    1. You can add/remove profilers in the list of profiler names seperated by a ‘.’, e.g. kerneltimer.spacetimestack.memoryevents.memoryusage to run profilers sequentially