Skip to content

Byfl v1.4 for LLVM/Clang v3.6.2

Compare
Choose a tag to compare
@spakin spakin released this 25 Sep 15:44

Byfl has improved a lot since version 1.3. Here are some of the highlights from the long list of changes:

  • -bf-data-structs logs data-structure lifetimes.
  • Applications can invoke bf_enable_counting() explicitly to dynamically enable and disable most Byfl run-time functionality. This can be used, for example, to instrument only a single iteration of a critical loop.
  • Byfl's two application-invocable API functions, bf_enable_counting() and bf_tag_data_region(), can be declared and prototyped with #include <byfl/byfl.h> (a new header file).
  • -bf-reuse-dist, which is now properly documented, writes a Reuse distance table to the .byfl file.
  • A new -bf-strides option tracks data access strides on a per-load/store basis and writes the results to a new Strided accesses table.
  • The compiler wrapper scripts honor the -M, -MD, -MM, -MMD, and -MP preprocessor options.
  • The Functions and Called functions tables include function file names and line numbers.
  • A new bfbin2hpctk postprocessor converts .byfl files (specifically, the Functions table) to an HPCToolkit database directory. The hpcviewer GUI can be used to view the database and show Byfl data side-by-side with hardware performance counter data.
  • A new side effect of the -bf-by-func option is that the Program table will report inferred in addition to observed function returns. The former is defined as the number of calls to non-Byfl-instrumented functions, and the latter is the number of Ret instructions executed by Byfl-instrumented functions.
  • A new bfbin2cgrind postprocessor converts .byfl files (specifically, the Functions table) into Callgrind format, suitable for visualization and interactive exploration with KCachegrind.