Search code examples
profilingcraygasnetchapel

Gathering info about GASNet communicative operations in Cray Chapel


Working on a basic profiler which will gather start and finish time of GASNet communicative operations in Cray Chapel. Only idea which came in mind was to insert instructions in Chapel comm functions to get function call time. Is there any way to do it without messing with language source code?


Solution

  • GASNet has a powerful built-in tracing infrastructure that can be used to gather communication traces of any GASNet client. It is enabled by configuring GASNet with --enable-trace. There is also a statistical collection feature available via --enable-stats. For more information on these see the 'GASNet tracing & statistical collection' section of the README here:

    https://bitbucket.org/berkeleylab/gasnet/overview

    Note that these tracing and stat features are written primarily for debugging GASNet and language runtime systems, and can impose a noticeable execution time overhead (CPU and File I/O in the case of tracing). Also all the information will be at the level of GASNet operations and memory locations, rather than at the high-level language. So it works without changes and will give you plenty of information, but it might not be a perfect match for your Chapel profiling needs.