https://github.com/llnl/callflow
Visualization tool for analyzing call trees and graphs
Science Score: 33.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
✓DOI references
Found 1 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, ieee.org -
✓Committers with academic emails
12 of 13 committers (92.3%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.7%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Visualization tool for analyzing call trees and graphs
Basic Info
Statistics
- Stars: 34
- Watchers: 8
- Forks: 4
- Open Issues: 8
- Releases: 7
Topics
Metadata Files
README.md
CallFlow 
CallFlow is an interactive visual analysis tool that provides a high-level overview of CCTs together with semantic refinement operations to progressively explore the CCTs.
Installation
CallFlow is structured as three components:
- A Python package
callflowthat provides functionality to load and manipulate callgraphs. - A D3 based
appfor visualization. - A python
serverto support the visualization client.
Installing CallFlow
The callflow (python package) requires python (>= 3.6) and pip (>= 20.1.1). Other dependencies are checked/installed during the installation of callflow using setup.py.
To install with pip, use
pip install CallFlow
To install the latest version on develop branch, use
python3 setup.py install --prefix /PATH/TO/INSTALL
The installation places a binary, called callflow inside the
/PATH/TO/INSTALL/bin, which can be exported to the $PATH environment variable.
Sample Data
Sample data and examples are provided in the data and examples directories.
Using CallFlow
The first step is to process the "raw datasets" (performance profiles) using callflow. The processing step typically entails some filtering and aggregation of data to produce the reduced graphs at desired granularity.
Processing data
For single dataset:
--process argument processes of the datasets in the provided --data_path by
treating each dataset as an independent SuperGraph.
callflow --data_path /PATH/TO/DATA/DIRECTORY --process --profile_format {hpctoolkit,caliper_json,caliper}
For ensemble of datasets:
--ensemble_process argument processes the datasets in the provided
--data_path after unifying the individual SuperGraphs into an Ensemble SuperGraph.
callflow --data_path /PATH/TO/DATA/DIRECTORY --process --ensemble_process --profile_format {hpctoolkit,caliper_json,caliper}
For re-processing the datasets:
Once processed, CallFlow would warn the user that the datasets have been processed already and subsequently load the processed datasets.
To re-process the datasets, use --reset option (which will delete the exisiting .callflow directory and redo the processing).
callflow --data_path /PATH/TO/DATA/DIRECTORY --process --reset --profile_format {hpctoolkit,caliper_json,caliper}
The processed data is placed inside /PATH/TO/DATA/DIRECTORY/.callflow. To modify the location of the processed data, use the --save_path argument.
The parameters of the processing step can be either passed in as arguments to the command line or modified through the config file. To process using the config.json,
callflow --config /PATH/TO/CONFIG_FILE --process
Running the server
via --data_path option,
callflow --data_path /PATH/TO/DATA/DIRECTORY --profile_format {hpctoolkit,caliper_json,caliper}
via --config option,
callflow --config /PATH/TO/CONFIG_FILE --profile_format {hpctoolkit,caliper_json,caliper}
By default, the application runs on port 5000. To use a different port, please set the environment variable.
export CALLFLOW_APP_PORT=<port_number>
Contribution and Development
The callflow app requires node.js (>= 13.7.0) and npm (>= 6.13.7). If there is an older version of node installed, install nvm and use the following command to change version.
nvm use 13.7.0
The app and its dependencies can be installed as follows.
cd app
npm install
To start the app,
npm run serve
To build the app,
npm run build
sh update_build.sh
The basic architecture diagram can be found here.
CallFlow Citations
Any published work that utilizes this software should include the following references:
For Callflow v1.1 that supports comparative visualization (ensembles of callgraphs), cite:
- Suraj P. Kesavan, Harsh Bhatia, Abhinav Bhatele, Todd Gamblin, Peer-Timo Bremer, Kwan-Liu Ma. Scalable Comparative Visualization of Ensembles of Call Graphs. arXiv:2007.01395.
For CallFlow 1.0 that supports a single callgraph, cite:
- Huu Tan Nguyen, Abhinav Bhatele, Nikhil Jain, Suraj P. Kesavan, Harsh Bhatia, Todd Gamblin, Kwan-Liu Ma, Peer-Timo Bremer. Visualizing Hierarchical Performance Profiles of Parallel Codes using CallFlow. IEEE Transactions on Visualization and Computer Graphics, 2019. doi:10.1109/TVCG.2019.2953746.
License and Copyright
CallFlow is released under MIT license. See the LICENSE file for details.
LLNL-CODE-740862.
Developed by Suraj P. Kesavan (spkesavan@ucdavis.edu), with contributions from Harsh Bhatia (hbhatia@llnl.gov).
Copyright (c) 2021, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory. All rights reserved.
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.
GitHub Events
Total
- Watch event: 5
Last Year
- Watch event: 5
Committers
Last synced: 8 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| jarusified | j****1@g****m | 1,059 |
| Harsh Bhatia | b****4@l****v | 150 |
| Abhinav Bhatele | b****e@l****v | 12 |
| Huu Tan Nguyen | h****n@c****u | 6 |
| Huu Tan Nguyen | h****n@c****u | 5 |
| Huu Tan Nguyen | h****n@c****u | 3 |
| Kesavan | k****1@t****v | 2 |
| Huu Tan Nguyen | h****n@H****m | 2 |
| Padmanaban Kesavan | p****1@p****v | 1 |
| Huu Tan Nguyen | h****n@c****u | 1 |
| Huu Tan Nguyen | h****n@c****u | 1 |
| Huu Tan Nguyen | h****n@H****t | 1 |
| Emilio Castillo | c****0@l****v | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 7 months ago
All Time
- Total issues: 7
- Total pull requests: 93
- Average time to close issues: 6 months
- Average time to close pull requests: about 1 month
- Total issue authors: 2
- Total pull request authors: 3
- Average comments per issue: 0.86
- Average comments per pull request: 0.2
- Merged pull requests: 63
- Bot issues: 0
- Bot pull requests: 21
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- jarusified (6)
- adintegra (1)
Pull Request Authors
- jarusified (60)
- dependabot[bot] (21)
- bhatiaharsh (12)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 2
-
Total downloads:
- pypi 27 last-month
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 0
(may contain duplicates) - Total versions: 7
- Total maintainers: 2
pypi.org: callflow
An Interactive Visual Analysis Tool for visualizing Calling Context Trees, Call Graphs from Performance Profiles.
- Homepage: https://github.com/LLNL/CallFlow
- Documentation: https://callflow.readthedocs.io/
- License: MIT
-
Latest release: 1.3.0
published over 4 years ago
Rankings
Maintainers (1)
spack.io: callflow
CallFlow is an interactive visual analysis tool that provides a high- level overview of CCTs together with semantic refinement operations to progressively explore the CCTs.
- Homepage: https://github.com/LLNL/CallFlow
- License: []
-
Latest release: 1.1.2
published almost 4 years ago
Rankings
Maintainers (2)
Dependencies
- 1234 dependencies
- @babel/core ^7.0.0-0 development
- @vue/cli-plugin-babel ~4.5.0 development
- @vue/cli-plugin-eslint ~4.5.0 development
- @vue/cli-service ~4.5.0 development
- babel-eslint ^10.1.0 development
- eslint ^6.8.0 development
- eslint-plugin-vue ^7.0.0-alpha.8 development
- sass ^1.32.0 development
- sass-loader ^10.0.0 development
- vue-cli-plugin-vuetify ~2.1.0 development
- vue-template-compiler ^2.6.11 development
- vuetify-loader ^1.7.0 development
- bootstrap ^4.5.0
- bootstrap-vue ^2.15.0
- chroma-js ^2.0.4
- core-js ^3.6.5
- d3 ^5.16.0
- d3-axis ^1.0.12
- d3-context-menu ^1.1.2
- d3-scale ^3.2.3
- d3-selection-multi ^1.0.1
- dagre-d3 ^0.6.3
- html-entities ^1.3.1
- isarray ^2.0.5
- lib file:src/lib
- material-design-icons-iconfont ^5.0.1
- moment ^2.29.1
- robust-point-in-polygon ^1.0.3
- socket.io-client ^2.3.1
- splitpanes ^1.14.2
- vue ^2.6.12
- vue-material ^1.0.0-beta-14
- vue-router ^3.4.6
- vue-socket.io ^3.0.10
- vue-socket.io-extended ^3.2.1
- vuetify ^2.4.0
- vuex ^3.5.1
- Flask-Cors ==3.0.10
- colorlog ==4.1.0
- hatchet ==1.3.0
- ipython ==7.18.1
- jsonschema ==3.0.2
- matplotlib ==3.1.1
- networkx ==2.5
- numpy ==1.17.2
- pandas ==1.2.2
- psutil ==5.8.0
- scikit_learn ==0.23.2
- scipy ==1.3.1
- actions/cache v2 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite