Skip to content

static instrumentation for measuring runtime of programs compiled with LLVM

Notifications You must be signed in to change notification settings

mlab-upenn/Checkpoint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Checkpoint

This is a pass for LLVM that instruments LLVM code with checkpoints for measuring runtime. The goal is to provide on-line profiling for runtime analysis of the client.

Checkpoint uses a simple API to notify the runtime analyzer when the client program has entered or exited a function, and to allow the runtime to do basic initialization and cleanup.

Build and Use

Consult the LLVM docs to get up and running with compiling LLVM passes. This pass compiles using the same steps presented in the "Hello World" example, with some modifications detailed here. Detailed build instructions are available in the INSTALL.md file. Finished client programs need to implement the checkpoint API, which is constantly evolving to provide more information to the runtime library. Currently, the checkpoint API consists of three callbacks:

void initialize()
void checkpoint(const char *, const char *)
void print_results()

checkpoint is currently called with either "Entering " or "Exiting " and the name of the current function, in that order. In this way, a runtime can trace the execution of the program in realtime. Runtimes should make sure the checkpoint call is reletively fast so program performance is not adversely impacted.

Contact

gland at seas dot upenn dot edu

feel free to contact me with questions.

About

static instrumentation for measuring runtime of programs compiled with LLVM

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages