{"id":13730833,"url":"https://github.com/LLNL/Caliper","last_synced_at":"2025-05-08T03:31:59.777Z","repository":{"id":2205570,"uuid":"45953649","full_name":"LLNL/Caliper","owner":"LLNL","description":"Caliper is an instrumentation and performance profiling library","archived":false,"fork":false,"pushed_at":"2024-10-28T18:17:50.000Z","size":8893,"stargazers_count":349,"open_issues_count":41,"forks_count":65,"subscribers_count":21,"default_branch":"master","last_synced_at":"2024-10-29T09:06:50.086Z","etag":null,"topics":["annotation-apis","caliper","cpp","hpc","instrumentation","performance","performance-analysis","performance-monitoring","radiuss","trace"],"latest_commit_sha":null,"homepage":"http://software.llnl.gov/Caliper/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LLNL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-11T02:02:00.000Z","updated_at":"2024-10-28T18:17:54.000Z","dependencies_parsed_at":"2023-07-05T18:48:34.732Z","dependency_job_id":"ebba225f-e636-4859-83bb-afe511d55666","html_url":"https://github.com/LLNL/Caliper","commit_stats":{"total_commits":1627,"total_committers":47,"mean_commits":34.61702127659574,"dds":"0.18930547019053467","last_synced_commit":"af4157d7ca4c30d93697907b5b4dea3a2dc560b2"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FCaliper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FCaliper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FCaliper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FCaliper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LLNL","download_url":"https://codeload.github.com/LLNL/Caliper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224695726,"owners_count":17354470,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["annotation-apis","caliper","cpp","hpc","instrumentation","performance","performance-analysis","performance-monitoring","radiuss","trace"],"created_at":"2024-08-03T02:01:20.077Z","updated_at":"2025-05-08T03:31:59.771Z","avatar_url":"https://github.com/LLNL.png","language":"C++","readme":"Caliper: A Performance Analysis Toolbox in a Library\n==========================================\n\n[![Github Actions](https://github.com/LLNL/Caliper/actions/workflows/cmake.yml/badge.svg)](https://github.com/LLNL/Caliper/actions)\n[![Build Status](https://travis-ci.org/LLNL/Caliper.svg)](https://travis-ci.org/LLNL/Caliper)\n[![Coverage](https://img.shields.io/codecov/c/github/LLNL/Caliper/master.svg)](https://codecov.io/gh/LLNL/Caliper)\n\nCaliper is a performance instrumentation and profiling library for HPC\n(high-performance computing) programs. It provides source-code annotation\nAPIs for marking regions of interest in C, C++, Fortran, and Python codes,\nas well as measurement functionality for a wide range of runtime profiling,\nevent tracing, and performance monitoring use cases.\n\nCaliper can generate simple human-readable reports or files for\nperformance data analysis frameworks like\n[Hatchet](https://github.com/LLNL/hatchet)\nand [Thicket](https://github.com/LLNL/thicket).\nIt can also generate detailed event traces for timeline visualizations with\n[Perfetto](https://perfetto.dev) and the Google Chrome trace viewer.\n\nFeatures include:\n\n* Low-overhead source-code annotation API\n* Recording program metadata for analyzing collections of runs\n* Fully threadsafe implementation\n* Support for parallel programming models like MPI, OpenMP, Kokkos, CUDA, ROCm, and RAJA\n* Event-based and sample-based performance measurements\n* Trace and profile recording\n* Connection to third-party tools, e.g. NVidia's NSight tools, AMD\n  ROCProf, or Intel(R) VTune(tm)\n\nOverview\n------------------------------------------\n\nCaliper is primarily a source-code instrumentation library. To use it, insert\nCaliper instrumentation markers around source-code regions of interest in the\ntarget program, like the C++ function and region markers in the example below:\n\n```C++\n#include \u003ccaliper/cali.h\u003e\n\nint get_answer() {\n    CALI_CXX_MARK_FUNCTION;\n\n    CALI_MARK_BEGIN(\"computing\");\n    int ret = 2 * 3 * 7;\n    CALI_MARK_END(\"computing\");\n    return ret;\n}\n```\n\nThere are annotation APIs for C, C++, Fortran, and Python codes.\nTo take performance measurements, Caliper provides built-in profiling recipes for\na wide range of performance engineering use cases. Available functionality includes\nMPI function and message profiling, CUDA and HIP API as well as GPU activity\nprofiling, loop profiling, call-path sampling, and much more.\nAs a simple example, the ``runtime-report`` recipe prints the time spent in the\nannotated regions on screen:\n\n    $ CALI_CONFIG=runtime-report ./answer\n    Path          Time (E) Time (I) Time % (E) Time % (I)\n    main          0.000072 0.000083  17.469875  20.188570\n      get_answer  0.000008 0.000011   1.864844   2.718695\n        computing 0.000004 0.000004   0.853851   0.853851\n\nAside from simple text reports, Caliper can generate machine-readable output in JSON\nor its own custom .cali file format, which can be analyzed with the Caliper-provided\n``cali-query`` tool and CalQL query language, or imported into Python analysis\nscripts with the [caliper-reader](python/caliper-reader/) Python module.\nIn addition, Caliper can collect data for [Thicket](https://github.com/LLNL/thicket),\na Python-based toolkit for Exploratory Data Analysis of parallel performance data.\n\nDocumentation\n------------------------------------------\n\nExtensive documentation is available here:\nhttps://software.llnl.gov/Caliper/\n\nUsage examples of the C++, C, and Fortran annotation and ConfigManager\nAPIs are provided in the [examples](examples/apps) directory.\n\nA basic tutorial is available here:\nhttps://github.com/daboehme/caliper-tutorial\n\nBuilding and installing\n------------------------------------------\n\nCaliper can be installed with the [spack](https://github.com/spack/spack)\npackage manager:\n\n    $ spack install caliper\n\nBuilding Caliper manually requires cmake 3.12+ and a C++11-compatible\nCompiler. Clone Caliper from github and proceed as follows:\n\n    $ git clone https://github.com/LLNL/Caliper.git\n    $ cd Caliper\n    $ mkdir build \u0026\u0026 cd build\n    $ cmake -DCMAKE_INSTALL_PREFIX=\u003cpath to install location\u003e ..\n    $ make\n    $ make install\n\nLink Caliper to a program by adding `libcaliper`:\n\n    $ g++ -o app app.o -L\u003cpath install location\u003e/lib64 -lcaliper\n\nThere are many build flags to enable optional features, such as `-DWITH_MPI`\nfor MPI support.\nSee the \"Build and install\" section in the documentation for further\ninformation.\n\nAuthors\n------------------------------------------\n\nCaliper was created by [David Boehme](https://github.com/daboehme), boehme3@llnl.gov.\n\nA complete [list of contributors](https://github.com/LLNL/Caliper/graphs/contributors) is available on GitHub.\n\nMajor contributors include:\n\n* [Alfredo Gimenez](https://github.com/alfredo-gimenez) (libpfm support, memory allocation tracking)\n* [David Poliakoff](https://github.com/DavidPoliakoff) (GOTCHA support)\n\n### Citing Caliper\n\nTo reference Caliper in a publication, please cite the following paper:\n\n* David Boehme, Todd Gamblin, David Beckingsale, Peer-Timo Bremer,\n  Alfredo Gimenez, Matthew LeGendre, Olga Pearce, and Martin\n  Schulz.\n  [**Caliper: Performance Introspection for HPC Software Stacks.**](http://ieeexplore.ieee.org/abstract/document/7877125/)\n  In *Supercomputing 2016 (SC16)*, Salt Lake City, Utah,\n  November 13-18, 2016. LLNL-CONF-699263.\n\nOn GitHub, you can copy this citation in APA or BibTeX format via the\n\"Cite this repository\" button. Or, see the comments in CITATION.cff\nfor the raw BibTeX.\n\nRelease\n------------------------------------------\n\nCaliper is released under a BSD 3-clause license. See [LICENSE](LICENSE) for details.\n\n``LLNL-CODE-678900``\n","funding_links":[],"categories":["Software","C++"],"sub_categories":["Trends"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLLNL%2FCaliper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLLNL%2FCaliper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLLNL%2FCaliper/lists"}