caliper
Caliper is an instrumentation and performance profiling library
Science Score: 72.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: ieee.org -
✓Committers with academic emails
26 of 46 committers (56.5%) from academic institutions -
✓Institutional organization owner
Organization llnl has institutional domain (software.llnl.gov) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.8%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Caliper is an instrumentation and performance profiling library
Basic Info
- Host: GitHub
- Owner: LLNL
- License: bsd-3-clause
- Language: C++
- Default Branch: master
- Homepage: http://software.llnl.gov/Caliper/
- Size: 8.89 MB
Statistics
- Stars: 386
- Watchers: 21
- Forks: 72
- Open Issues: 39
- Releases: 24
Topics
Metadata Files
README.md
Caliper: A Performance Analysis Toolbox in a Library
Caliper is a performance instrumentation and profiling library for HPC (high-performance computing) programs. It provides source-code annotation APIs for marking regions of interest in C, C++, Fortran, and Python codes, as well as measurement functionality for a wide range of runtime profiling, event tracing, and performance monitoring use cases.
Caliper can generate simple human-readable reports or files for performance data analysis frameworks like Hatchet and Thicket. It can also generate detailed event traces for timeline visualizations with Perfetto and the Google Chrome trace viewer.
Features include:
- Low-overhead source-code annotation API
- Recording program metadata for analyzing collections of runs
- Fully threadsafe implementation
- Support for parallel programming models like MPI, OpenMP, Kokkos, CUDA, ROCm, and RAJA
- Event-based and sample-based performance measurements
- Trace and profile recording
- Connection to third-party tools, e.g. NVidia's NSight tools, AMD ROCProf, or Intel(R) VTune(tm)
Overview
Caliper is primarily a source-code instrumentation library. To use it, insert Caliper instrumentation markers around source-code regions of interest in the target program, like the C++ function and region markers in the example below:
```C++
include
int getanswer() { CALICXXMARKFUNCTION;
CALI_MARK_BEGIN("computing");
int ret = 2 * 3 * 7;
CALI_MARK_END("computing");
return ret;
} ```
There are annotation APIs for C, C++, Fortran, and Python codes.
To take performance measurements, Caliper provides built-in profiling recipes for
a wide range of performance engineering use cases. Available functionality includes
MPI function and message profiling, CUDA and HIP API as well as GPU activity
profiling, loop profiling, call-path sampling, and much more.
As a simple example, the runtime-report recipe prints the time spent in the
annotated regions on screen:
$ CALI_CONFIG=runtime-report ./answer
Path Time (E) Time (I) Time % (E) Time % (I)
main 0.000072 0.000083 17.469875 20.188570
get_answer 0.000008 0.000011 1.864844 2.718695
computing 0.000004 0.000004 0.853851 0.853851
Aside from simple text reports, Caliper can generate machine-readable output in JSON
or its own custom .cali file format, which can be analyzed with the Caliper-provided
cali-query tool and CalQL query language, or imported into Python analysis
scripts with the caliper-reader Python module.
In addition, Caliper can collect data for Thicket,
a Python-based toolkit for Exploratory Data Analysis of parallel performance data.
Documentation
Extensive documentation is available here: https://software.llnl.gov/Caliper/
Usage examples of the C++, C, and Fortran annotation and ConfigManager APIs are provided in the examples directory.
A basic tutorial is available here: https://github.com/daboehme/caliper-tutorial
Building and installing
Caliper can be installed with the spack package manager:
$ spack install caliper
Building Caliper manually requires cmake 3.12+ and a C++11-compatible Compiler. Clone Caliper from github and proceed as follows:
$ git clone https://github.com/LLNL/Caliper.git
$ cd Caliper
$ mkdir build && cd build
$ cmake -DCMAKE_INSTALL_PREFIX=<path to install location> ..
$ make
$ make install
Link Caliper to a program by adding libcaliper:
$ g++ -o app app.o -L<path install location>/lib64 -lcaliper
There are many build flags to enable optional features, such as -DWITH_MPI
for MPI support.
See the "Build and install" section in the documentation for further
information.
Authors
Caliper was created by David Boehme, boehme3@llnl.gov.
A complete list of contributors is available on GitHub.
Major contributors include:
- Alfredo Gimenez (libpfm support, memory allocation tracking)
- David Poliakoff (GOTCHA support)
Citing Caliper
To reference Caliper in a publication, please cite the following paper:
- David Boehme, Todd Gamblin, David Beckingsale, Peer-Timo Bremer, Alfredo Gimenez, Matthew LeGendre, Olga Pearce, and Martin Schulz. Caliper: Performance Introspection for HPC Software Stacks. In Supercomputing 2016 (SC16), Salt Lake City, Utah, November 13-18, 2016. LLNL-CONF-699263.
On GitHub, you can copy this citation in APA or BibTeX format via the "Cite this repository" button. Or, see the comments in CITATION.cff for the raw BibTeX.
Release
Caliper is released under a BSD 3-clause license. See LICENSE for details.
LLNL-CODE-678900
Owner
- Name: Lawrence Livermore National Laboratory
- Login: LLNL
- Kind: organization
- Email: github-admin@llnl.gov
- Location: Livermore, CA, USA
- Website: https://software.llnl.gov
- Twitter: LLNL_OpenSource
- Repositories: 520
- Profile: https://github.com/LLNL
For over 70 years, the Lawrence Livermore National Laboratory has applied science and technology to make the world a safer place.
Citation (CITATION.cff)
# If you are referencing Caliper in a publication, please cite the paper
# described here:
#
# David Boehme, Todd Gamblin, David Beckingsale, Peer-Timo Bremer,
# Alfredo Gimenez, Matthew Legendre, Olga Pearce, and Martin Schulz.
# Caliper: Performance Introspection for HPC Software Stacks.
# In Supercomputing 2016 (SC'16), Salt Lake City, Utah, USA, November 2016.
# LLNL-CONF-699263
#
# Or, in BibTeX:
#
# @inproceedings{boehme:sc2016,
# Articleno = {47},
# Author = {Boehme, David and Gamblin, Todd and Beckingsale, David and Bremer, Peer-Timo and Gimenez, Alfredo and LeGendre, Matthew and Pearce, Olga and Schulz, Martin},
# Booktitle = {Proceedings of the ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis},
# Month = nov,
# Note = {LLNL-CONF-699263},
# Numpages = {11},
# Pages = {47:1--47:11},
# Publisher = {IEEE Computer Society},
# Series = {SC '16},
# Title = {Caliper: Performance Introspection for {HPC} Software Stacks},
# Url = {http://dl.acm.org/citation.cfm?id=3014904.3014967},
# Year = {2016},
# Bdsk-Url-1 = {http://dl.acm.org/citation.cfm?id=3014904.3014967}}
# }
#
# And here is the CITATION.cff format:
cff-version: 1.2.0
message: "If you are referencing Caliper in a publication, please cite the paper below"
title: Caliper
repository-code: https://github.com/LLNL/Caliper
preferred-citation:
type: conference-paper
doi: 10.1109/SC.2016.46
authors:
- family-names: "Boehme"
given-names: "David"
orcid: "https://orcid.org/0000-0002-4159-1519"
- family-names: "Gamblin"
given-names: "Todd"
- family-names: "Beckingsale"
given-names: "David"
orcid: "https://orcid.org/0000-0003-2545-4837"
- family-names: "Bremer"
given-names: "Peer-Timo"
orcid: "https://orcid.org/0000-0003-4107-3831"
- family-names: "Gimenez"
given-names: "Alfredo"
- family-names: "LeGendre"
given-names: "Matthew"
- family-names: "Pearce"
given-names: "Olga"
orcid: "https://orcid.org/0000-0002-1904-9627"
- family-names: "Schulz"
given-names: "Martin"
orcid: "https://orcid.org/0000-0001-9013-435X"
title: "Caliper: Performance Introspection for HPC Software Stacks"
url: "http://dl.acm.org/citation.cfm?id=3014904.3014967"
conference:
name: "International Conference for High Performance Computing, Networking, Storage and Analysis (SC'16)"
city: "Salt Lake City"
region: "Utah"
country: "USA"
date-start: 2016-11-13
date-end: 2016-11-18
year: 2016
notes: LLNL-CONF-699263
GitHub Events
Total
- Create event: 12
- Release event: 4
- Issues event: 11
- Watch event: 36
- Delete event: 4
- Issue comment event: 41
- Push event: 97
- Pull request event: 103
- Fork event: 10
Last Year
- Create event: 12
- Release event: 4
- Issues event: 11
- Watch event: 36
- Delete event: 4
- Issue comment event: 41
- Push event: 97
- Pull request event: 103
- Fork event: 10
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| David Boehme | b****3@l****v | 1,363 |
| Alfredo Gimenez | g****1@l****v | 79 |
| David Poliakoff | d****f@g****m | 74 |
| Srinivasan Ramesh | r****2@c****v | 23 |
| Adrien Bernede | 5****e | 23 |
| Alfredo Adolfo Gimenez | a****z@g****m | 14 |
| David Poliakoff | p****1@l****v | 12 |
| Dan Ibanez | i****d | 9 |
| Kathleen Shoga | s****1@l****v | 8 |
| Srinivasan Ramesh | r****2@c****v | 7 |
| David Beckingsale | d****e@g****m | 7 |
| Srinivasan Ramesh | r****2@l****v | 6 |
| Jonathan R. Madsen | j****n | 6 |
| Srinivasan Ramesh | r****2@c****v | 4 |
| Ian Lumsden | l****n@g****m | 4 |
| Srini | s****h@c****u | 4 |
| Chad Wood | c****w@c****u | 3 |
| PhilipDeegan | p****n@g****m | 2 |
| Jean-Noël Grad | j****d@i****e | 2 |
| Christoph Junghans | j****s@l****v | 2 |
| Stephanie Brink | b****2@l****v | 2 |
| Tom Epperly | t****y@g****m | 2 |
| sylvia4 | s****4@c****v | 2 |
| sylvia4 | s****4@c****v | 2 |
| Udayanga Shaminda Wickramasinghe | u****a@c****v | 1 |
| Srinivasan Ramesh | r****2@r****v | 1 |
| Srinivasan Ramesh | r****2@c****v | 1 |
| Rasmus Wriedt Larsen | l****1@l****v | 1 |
| David Boehme | D****e | 1 |
| Matthew LeGendre | l****1@l****v | 1 |
| and 16 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 53
- Total pull requests: 267
- Average time to close issues: 4 months
- Average time to close pull requests: 21 days
- Total issue authors: 37
- Total pull request authors: 20
- Average comments per issue: 2.74
- Average comments per pull request: 0.6
- Merged pull requests: 241
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 10
- Pull requests: 108
- Average time to close issues: 5 days
- Average time to close pull requests: 2 days
- Issue authors: 10
- Pull request authors: 6
- Average comments per issue: 0.2
- Average comments per pull request: 0.47
- Merged pull requests: 97
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- adayton1 (3)
- adrienbernede (3)
- PhilipDeegan (3)
- ibaned (3)
- aaroncblack (3)
- corbett5 (2)
- yaoyi92 (2)
- KokoFan16 (2)
- adam-sim-dev (2)
- termi-official (2)
- balos1 (2)
- tonycurtis (1)
- kennyweiss (1)
- daboehme (1)
- bertwesarg (1)
Pull Request Authors
- daboehme (265)
- adrienbernede (34)
- ibaned (9)
- ilumsden (9)
- jngrad (4)
- PhilipDeegan (4)
- tjeter (2)
- tpatki (2)
- slabasan (2)
- cdwdirect (2)
- EvelynNamugwanya (2)
- sampollard (2)
- termi-official (2)
- ammarwa (2)
- adayton1 (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 5
-
Total downloads:
- pypi 20,584 last-month
-
Total dependent packages: 11
(may contain duplicates) -
Total dependent repositories: 6
(may contain duplicates) - Total versions: 78
- Total maintainers: 3
pypi.org: caliper-reader
A Python library for reading Caliper .cali files
- Homepage: https://github.com/LLNL/Caliper
- Documentation: https://caliper-reader.readthedocs.io/
- License: Copyright (c) 2015-2021, Lawrence Livermore National Security, LLC. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
Latest release: 0.4.1
published over 1 year ago
Rankings
Maintainers (1)
proxy.golang.org: github.com/LLNL/Caliper
- Documentation: https://pkg.go.dev/github.com/LLNL/Caliper#section-documentation
- License: bsd-3-clause
-
Latest release: v2.13.1+incompatible
published 7 months ago
Rankings
proxy.golang.org: github.com/llnl/caliper
- Documentation: https://pkg.go.dev/github.com/llnl/caliper#section-documentation
- License: bsd-3-clause
-
Latest release: v2.13.1+incompatible
published 7 months ago
Rankings
spack.io: caliper
Caliper is a program instrumentation and performance measurement framework. It is designed as a performance analysis toolbox in a library, allowing one to bake performance analysis capabilities directly into applications and activate them at runtime.
- Homepage: https://github.com/LLNL/Caliper
- License: []
-
Latest release: 2.7.0
published almost 4 years ago
Rankings
Maintainers (2)
spack.io: py-caliper-reader
A Python library for reading Caliper .cali files.
- Homepage: https://github.com/LLNL/Caliper
- License: []
-
Latest release: 0.4.0
published over 1 year ago
Rankings
Dependencies
- actions/checkout v2 composite