Skip to main content

An Interactive Visual Analysis Tool for visualizing Calling Context Trees, Call Graphs from Performance Profiles.

Project description

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:

  1. A Python package callflow that provides functionality to load and manipulate callgraphs.
  2. A D3 based app for visualization.
  3. A python server to 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 --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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

CallFlow-1.3.0.tar.gz (10.9 MB view details)

Uploaded Source

File details

Details for the file CallFlow-1.3.0.tar.gz.

File metadata

  • Download URL: CallFlow-1.3.0.tar.gz
  • Upload date:
  • Size: 10.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

File hashes

Hashes for CallFlow-1.3.0.tar.gz
Algorithm Hash digest
SHA256 689edefda0b76b4cab3dd66f3dc836b9e31d262efe81bc86eace657d5347c5df
MD5 8561d045c2badf561a74292089c98393
BLAKE2b-256 ce48b373c30684bcef5b913efac5c652a50cf62f2e8eebdf922b492ad254a719

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page