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.
python3 setup.py install
Installing Visualization Client
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
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 to use with CallFlow. This preprocessing typically entails some filtering and aggregation of data to produce the reduced graphs at desired granularity. The parameters of the preprocessing are provided through a config file (see examples of config files in the sample data directories).
Processing profiles with --data_dir mode
For --data-dir processing, make sure --profile_format is passed.
python3 callflow/server/callflow_server.py --data_dir {path_to_data} --profile_format {hpctoolkit|caliper_json|caliper}--process
Processing profiles with --config mode
Using a callflow.config.json file to process and run the application provides added control to the user in how
python3 callflow/server/callflow_server.py --config {config_file_path} --process
The processing of profiles generates a .callflow directory in the ${save_path}, which is provided either in the callflow.config.json or --save_path attribute. If not provided, the .callflow directory will be placed in the data folder.
Running the server with --data-dir mode
python3 callflow/server/callflow_server.py --data_dir {path_to_data} --profile_format {hpctoolkit|caliper_json|caliper}
Running the server with --config mode
python3 callflow/server/callflow_server.py --config {config_file_path}
Start the client app
cd app
npm run dev
The basic architecture diagram can be found here.
CallFlow Citations
Any published work that utilizes this software should include the following references:
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.
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.
License and Copyright
CallFlow is released under MIT license. See the LICENSE file for details.
LLNL-CODE-740862.
Written by Suraj P. Kesavan (spkesavan@ucdavis.edu) and Huu Tan Nguyen (htpnguyen@ucdavis.edu).
Copyright (c) 2020, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory. All rights reserved.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
