{"id":19705693,"url":"https://github.com/llnl/callflow","last_synced_at":"2025-07-06T16:39:51.275Z","repository":{"id":37664656,"uuid":"109137702","full_name":"LLNL/CallFlow","owner":"LLNL","description":"Visualization tool for analyzing call trees and graphs","archived":false,"fork":false,"pushed_at":"2023-03-15T06:02:30.000Z","size":31673,"stargazers_count":31,"open_issues_count":8,"forks_count":4,"subscribers_count":9,"default_branch":"develop","last_synced_at":"2025-02-10T17:44:24.822Z","etag":null,"topics":["comparative-analysis","data-analytics","data-viz","graph","hierarchical-data","hpc","performance","performance-analysis","trees","visual-analytics","visualization"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","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":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-11-01T13:54:20.000Z","updated_at":"2024-11-20T02:15:56.000Z","dependencies_parsed_at":"2023-02-06T09:31:50.254Z","dependency_job_id":null,"html_url":"https://github.com/LLNL/CallFlow","commit_stats":{"total_commits":1244,"total_committers":15,"mean_commits":82.93333333333334,"dds":0.2797427652733119,"last_synced_commit":"6bbdabe4b71be369e616e3136d7f0120531c9fc8"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FCallFlow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FCallFlow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FCallFlow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FCallFlow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LLNL","download_url":"https://codeload.github.com/LLNL/CallFlow/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241020605,"owners_count":19895468,"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":["comparative-analysis","data-analytics","data-viz","graph","hierarchical-data","hpc","performance","performance-analysis","trees","visual-analytics","visualization"],"created_at":"2024-11-11T21:29:37.255Z","updated_at":"2025-02-27T13:49:55.493Z","avatar_url":"https://github.com/LLNL.png","language":"Vue","readme":"# CallFlow [![PyPI version](https://badge.fury.io/py/CallFlow.svg)](https://badge.fury.io/py/CallFlow)\n\nCallFlow is an interactive visual analysis tool that provides a high-level overview of CCTs together with semantic refinement operations to progressively explore the CCTs.\n\n## Installation\n\nCallFlow is structured as three components:\n\n1. A Python package `callflow` that provides functionality to load and manipulate callgraphs.\n2. A D3 based `app` for visualization.\n3. A python `server` to support the visualization client.\n\n#### Installing CallFlow\n\nThe `callflow` (python package) requires [python](https://realpython.com/installing-python/) (\u003e= 3.6) and [pip](https://pip.pypa.io/en/stable/news/) (\u003e= 20.1.1). Other dependencies are checked/installed during the installation of `callflow` using `setup.py`.\n\nTo install with `pip`, use\n\n```\npip install CallFlow\n```\n\nTo install the latest version on `develop` branch, use\n\n```\npython3 setup.py install --prefix /PATH/TO/INSTALL\n```\n\nThe installation places a binary, called `callflow` inside the\n`/PATH/TO/INSTALL/bin`, which can be exported to the `$PATH` environment variable.\n\n## Sample Data\n\nSample data and examples are provided in the [`data`](./data) and [`examples`](./examples) directories.\n\n## Using CallFlow\n\nThe 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.\n\n### Processing data\n\n#### For single dataset:\n`--process` argument processes of the datasets in the provided `--data_path` by\ntreating each dataset as an independent SuperGraph.\n\n```\ncallflow --data_path /PATH/TO/DATA/DIRECTORY --process --profile_format {hpctoolkit,caliper_json,caliper}\n```\n\n#### For ensemble of datasets:\n`--ensemble_process` argument processes the datasets in the provided\n`--data_path` after unifying the individual SuperGraphs into an Ensemble SuperGraph.\n```\ncallflow --data_path /PATH/TO/DATA/DIRECTORY --process --ensemble_process --profile_format {hpctoolkit,caliper_json,caliper}\n```\n\n#### For re-processing the datasets:\nOnce processed, CallFlow would warn the user that the datasets have been\nprocessed already and subsequently load the processed datasets. \n\nTo re-process the datasets, use --reset option (which will delete the exisiting\n.callflow directory and redo the processing).\n\n```\ncallflow --data_path /PATH/TO/DATA/DIRECTORY --process --reset --profile_format {hpctoolkit,caliper_json,caliper}\n```\n\nThe processed data is placed inside `/PATH/TO/DATA/DIRECTORY/.callflow`. To modify the location of the processed data, use the `--save_path` argument.\n\nThe 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`,\n\n```\ncallflow --config /PATH/TO/CONFIG_FILE --process\n```\n\n### Running the server\n\n##### via `--data_path` option,\n```\ncallflow --data_path /PATH/TO/DATA/DIRECTORY --profile_format {hpctoolkit,caliper_json,caliper}\n```\n\n##### via `--config` option,\n```\ncallflow --config /PATH/TO/CONFIG_FILE --profile_format {hpctoolkit,caliper_json,caliper}\n```\n\nBy default, the application runs on port `5000`. To use a different port, please set the environment variable.\n```\nexport CALLFLOW_APP_PORT=\u003cport_number\u003e\n```\n\n## Contribution and Development\n\nThe callflow `app` requires [node.js](https://nodejs.org/en/download/) (\u003e= 13.7.0) and `npm` (\u003e= 6.13.7). If there is an older version of `node` installed, install [nvm](https://github.com/nvm-sh/nvm) and use the following command to change version.\n`nvm use 13.7.0`\n\nThe `app` and its dependencies can be installed as follows.\n\n```\ncd app\nnpm install\n```\n\nTo start the `app`,\n\n```\nnpm run serve\n```\n\nTo build the `app`,\n```\nnpm run build\nsh update_build.sh\n```\n\nThe basic architecture diagram can be found [here](/docs/figures/CallFlow-basic-architecture.png).\n\n## CallFlow Citations\n\nAny published work that utilizes this software should include the following references:\n\n\nFor Callflow v1.1 that supports comparative visualization (ensembles of callgraphs), cite:\n\n- 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](https://arxiv.org/abs/2007.01395).\n\nFor CallFlow 1.0 that supports a single callgraph, cite:\n\n- 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](https://ieeexplore.ieee.org/document/8901998).\n\n## License and Copyright\n\nCallFlow is released under MIT license. See the LICENSE file for details.\n`LLNL-CODE-740862`.\n\nDeveloped by Suraj P. Kesavan (\u003cspkesavan@ucdavis.edu\u003e), with contributions from Harsh Bhatia (\u003chbhatia@llnl.gov\u003e).\n\nCopyright (c) 2021, Lawrence Livermore National Security, LLC.\nProduced at the Lawrence Livermore National Laboratory. All rights reserved.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllnl%2Fcallflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fllnl%2Fcallflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllnl%2Fcallflow/lists"}