Skip to content
/ prism Public

Modular, flexible, cross-platform workload profiling and characterization

License

Notifications You must be signed in to change notification settings

VANDAL/prism

Repository files navigation

Prism

BSD licensed Build Status Docs Status Experimental

The intuitive, event-driven application profiling and characterization framework.

Prism Overview


Install

💥 C++14 compiler support is required 💥
💥 cmake v3 required 💥
See CentOS 7 Support

git clone https://github.com/vandal/prism
cd prism
mkdir build && cd build
cmake ..
make -j

The executable will be put in build/bin. It can be run in place, or the folder can be moved to an install location.

What is it?

Uses a straight-forward intermediate representation (IR) for system architecture and application behavior studies.
Prism provides the dynamic behavior of an application with 4 event primitives:

  • Compute - IOPs & FLOPs
  • Memory - data access
  • Synchronization - task-level create, join, sync, et al
  • Context - markers for basic blocks, subroutines, instructions, etc
  • Control Flow support is pending community demand

Each event has specific attributes that are accessible via the Prism API

Example Usage

  • Valgrind is the default frontend for generating events, if no option is specified
  • SynchroTraceGen backend processing events into a special event trace

$ bin/prism --backend=stgen --executable=./myprogram -with --args

Users supply at least 2 arguments to Prism:

  • the backend analysis tool used to process events
  • the application

A third frontend argument can be supplied

  • --frontend=FRONTEND
  • --frontend=dynamorio is experimental

Platform support

Linux OSX/macOS Windows
64-bit CentOS 7 on x86_64 untested not supported
YMMV: ARM

CentOS 7 Support

sudo yum install epel-release
sudo yum install centos-release-scl
sudo yum install cmake3 devtoolset-7
scl enable devtoolset-7 bash
# use cmake3 and build and usual

See Software Collections for details.

Documentation

Read the docs