Skip to content
Visualization tool for Calling Context Trees
Jupyter Notebook JavaScript Python HTML CSS Vue
Branch: master
Clone or download
Latest commit 3208ef8 Oct 9, 2019

CallFlow v2.0b

The hpctoolkit-parser has been replaced by Hatchet to support a standard API and work with many formats (like hpctoolkit, caliper, etc.). Hatchet analyzes performance data that is organized in a tree hierarchy (such as calling context trees, call graphs, nested regions' timers etc.).

For MacOS, create a .dot directory.

    cd src/server/
    mkdir .callflow
    mkdir ./callflow/dataset


Callflow currently, supports two formats, hpctoolkit and caliper.

	hpctoolkit format
	caliper format:

Contents of JSON file

To load multiiple datasets into Callflow, you need to provide a json file as input. For examples, refer $CALLFLOW_PATH/config_files

    "datasets": [
            "name": "Dataset1",
            "path": "./data/dataset/run1",
            "format": "hpctoolkit",
            "props": {
            "nop": "128"
            "name": "Dataset2",
            "path": "./data/dataset/run2",
            "format": "hpctoolkit",
            "props": {
            "nop": "128"
            "name": "Dataset3",
            "path": "./data/dataset/run3",
            "format": "hpctoolkit",
            "props": {
            "nop": "128"


	cd src
	npm install
	bower install
	python install (TODO)


In order to use Callflow, you need to clone Hatchet into the src directory.

	git clone

Callflow uses the hatchet API to obtain the graphframe (which contains a graph and dataframe).

	Graphframe : {
		graph: Linked list of nodes.
		dataframe: pandas dataframe that contains the performance metrics.


To run the client,

	cd src/public
	npm run dev

To run the server,

	export PYTHONPATH=$CALLFLOW_PATH/src/hatchet
    cd src/server
	python3 --config "Config file" --filter

--filter - filters the dataset by --filtertheta - threshold by which the dataframes must be filtered. --filterBy - filter by an attirbute (or column) in the dataframe

Filtering the dataset reduces the number of nodes both hatchet and callflow has to process, and thereby increasing the response times. We suggest filtering by 0.01 percent of the inclusive/exclusive time of a node.

The filtered dataset can also be stored to avoid the filter step on each run. (TODO: Find an intermediate format for interfacing hatchet and callflow)

Client side of Callflow uses Vue.js and is in ES6.


Any published work that utilizes this software should include the following reference:

Huu Tan Nguyen, Abhinav Bhatele, Peer-Timo Bremer, Todd Gamblin, Martin Schulz,
Lai Wei, David Böhme, and Kwan-Liu Ma. VIPACT: A visualization interface for
analyzing calling context trees. In Proceedings of the 3rd Workshop on Visual
Performance Analysis, VPA '16, November 2016. LLNL-CONF-704659.


Copyright (c) 2018-2019, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory.

Written by:

    Huu Tan Nguyen <>
    Suraj Kesavan <>.

LLNL-CODE-740862. All rights reserved.

You can’t perform that action at this time.