elaps'd (say: elapsed) is a tool for analyzing the run-time of your application. It currently supports multi-threaded applications written in C, C++ or FORTRAN. But wait, there is more: it also provides a web-based for visual analysis of the recorded data:
Currently, one has to manually utilize elaps'd in the application. However, the plan is to automate this in future, so the user only has to label functions to be measured.
Definitions: Kernel -> The function you want to measure; Device -> The device the function runs on (e.g. CPU, GPU, CPU + GPU, ...).
- Build with
make
- Have a look at the examples
- Incorporate elaps'd into your application and generate some DB's
- Use the analyzer by issuing
python analyzer.py
and opening http://localhost:8080 in your browser
Large Developer's Request: Please report Bugs/Improvement Wishes at GitHub.
-
For the backend, i.e. the measuring part
- C++ compiler with C++03 support
- SQLite (>= 3.6)
- OpenMP
- A C or FORTRAN compiler if you want to build these APIs
-
For the frontend, i.e. the visualization part
- Python
- apsw for your version of SQLite
- Flask
- HTML5 Browser (best: Google Chrome or Chromium)
- Open
Makefile.include
in your favorite editor and adapt settings as necessary. No changes are needed most of the time. - Type
make
in the root of elaps'd directory. This builds the librarylibelapsd.so
insidelib
and the examples insideexamples
. - If you want to install it, copy headers and library (sorry about the manual step! I'll change this in near future).
This is a short summary on how to use the backend. Please have a look at the provided examples for more details.
- Include
elapsd/elapsd.h
for C++,elapsd/celapsd.h
for C. For FORTRAN, useelapsd/m_elapsd.mod
. All these are in theinclude
directory. - Initialize elaps'd. C++ users simply do e.g.
ENHANCE::elapsd e("elapsd.db", "Experiment Name");
(watch out for the namespace!). C users callelapsdInit
, so do FORTRAN users. - Use
addKernel
andaddDevice
function calls to add kernels and devices. - Use
startTimer
andstopTimer
to start and stop measurements. Please consider thatstartTimer
must be called priorstopTimer
and that to everystartTimer
astopTimer
belongs. - Once you finished all measurements call
std::cout << e << "\n"
for summarized output and/or thecommitToDB()
function to write the data to SQLite for further analysis.
- Copy the generated DB to
static/db
which is inside theanalyzer
directory. This step will be relaxed in near future letting you configure the path to the DB's. - Start the analyzer's integrated Flask-based webserver by calling
python analyzer.py
. - Open your favorite browser (I recommend Google Chrome or Chromium for best user experience) and point it to http://localhost:8080
- Select the DB you want to work with and start analyzing!
- Added prediction library with Lagrange model
- Extended analyzer to visualize predictions
- Added ability to store additional parameters for an experiment
- Initial release
- Author: Sebastian Dreßler
- Company: Zuse Institute Berlin
- Mail: [lastname][at][zib][dot][de]
elaps'd is developed as part of the ENHANCE project (for further info visit http://www.enhance-project.de) which is funded by German ministry for education and reserach (BMBF). BMBF grant no.: 01IH11004A-G
elaps'd an all self-written parts of it is licensed under the 3-clause BSD license. The full license text is provided in the file LICENSE.
This software is currently in a very early stadium. There is no guarantee that measurements are consistently correct and that there are no major bugs.