Skip to content

Profiling

Philipp Gschwandtner edited this page Apr 25, 2017 · 2 revisions

Profiling

The AllScale API comes with its own small shared memory reference runtime to be used for the standard toolchain. This runtime supports the generation of profile logs that provide insights into the performance (bottlenecks) of AllScale applications.

Compiling with Profiling Capabilities

To enable profiling, the flag ENABLE_PROFILING needs to be set when running cmake:

cmake -DENABLE_PROFILING=ON path-to-source

For performance debugging only, it might be useful to also disable assertions when conducting measurements:

cmake -DENABLE_PROFILING=ON -DUSE_ASSERT=OFF path-to-source

Generating Profile Logs

To generate profile logs, simply run an application that uses the reference runtime (and that was compiled with profiling support), for example a 2D heat stencil

NUM_WORKERS=8 ./heat_2d_api_pfor_collapsed_allscale

and it will generate profile log files

profile_log.0000
profile_log.0001
profile_log.0002
profile_log.0003
profile_log.0004
profile_log.0005
profile_log.0006
profile_log.0007

Visualizing Profile Logs

The log files previously generated can be parsed by the allscale-perf tool (to be found at api/allscale-perf in your build folder) which creates a JavaScript-based visualization of the data. Simply run

api/allscale-perf

in the directory that holds the profile logs, and it will generate a report.html.

AllScale shared memory performance visualization

The example visualization shows a two-dimensional heat stencil with ten time loop iterations.

Clone this wiki locally