-
Notifications
You must be signed in to change notification settings - Fork 15
Home
- NuT: Monte Carlo neutrino-transport code
- SNAP: SN (discrete ordinates) application proxy
These all contain pretty much the same information. Take your pick.
-
bf-clangwraps the Clang C compiler. -
bf-clang++wraps the Clang C++ compiler. -
bf-flangwraps the Flang Fortran compiler.
In addition to the above, Byfl also provides more manual control of instrumentation via the following script:
-
bf-instinstruments LLVM bitcode produced by any compiler.
The idea is that you generate LLVM bitcode (e.g., the -emit-llvm option in Clang), pass it to bf-inst, and bf-inst instruments the code using Byfl, and writes a new LLVM bitcode file.
Byfl programs generate a binary .byfl file as output. The following programs convert .byfl files to various other formats:
-
bfbin2xmlssconverts a.byflfile to a formatted XML Spreadsheet spreadsheet that can be imported into LibreOffice Calc, Microsoft Excel 2003+, and Numbers for Mac. -
bfbin2csvoutputs a.byflfile in comma-separated value format for ease of parsing -
bfbin2sqlite3converts a.byflfile to a SQLite 3 database. SQLite 3 databases are standalone files that can be used as is or imported into a heavyweight database management system. -
bfbin2hdf5recodes a.byflfile in HDF5 format, a format often used for scientific data. -
bfbin2hpctkgenerates an HPCToolkit database from a.byflfile's Functions table. These databases can be loaded into the hpcviewer GUI and compared side-by-side with non-Byfl-produced HPCToolkit databases.
-
bfbin2cgrindgenerates a Callgrind file from a.byflfile's Functions table. Callgrind files can be loaded into the KCachegrind GUI for visualization and analysis.
All of the above are implemented using a callback-based API that Byfl provides. The API includes a single C function that parses a .byfl file and calls user-defined functions for each table, column header, and data value it encounters. You can use the API to write your own .byfl output postprocessors:
SWIG wrappers are installed if SWIG is available. These let you write .byfl postprocessors in a variety of scripting languages. The SWIG version of the Byfl API is not based on callbacks because SWIG doesn't currently support callback functions. The following example shows how to process a .byfl file from Python:
-
bfbin2pyinstallation instructions and Python script
For now, this is the best paper to cite in research publications that refer to Byfl:
- Scott Pakin and Patrick McCormick, "Hardware-independent application characterization". 2013 IEEE International Symposium on Workload Characterization (IISWC), Portland, Oregon, USA, 22-24 Sept. 2013, pp. 111–112. ISBN: 978-1-4799-0553-9, DOI: 10.1109/IISWC.2013.6704676.
More Byfl-related publications can be found on the Byfl publications page.
Byfl uses Travis CI for a third-party check that the code builds cleanly. The following is Byfl's current build status:
| Byfl branch | Build status |
|---|---|
| master |