Skip to content

Cube logo

The Cube Framework is a toolset for displaying, analyzing, and processing performance data from parallel application runs. It consists of the components CubeGUI (the visual interface), CubeLib (the core data library and command-line utilities), CubeW (the C writer library), and jCubeR (the Java reader library). A key feature is its three-dimensional, hierarchical data model, which combines performance metrics, call paths, and system resources. This data layout allows examining performance data on different levels of detail to identify performance bottlenecks. Custom analyses are supported by user-defined metrics and GUI plugins.

Recommended reading

Overview article

To learn more about the general analysis approach and architecture of Cube, please see:

P. Saviankou, M. Knobloch, A. Visser, and B. Mohr.
Cube v4: From Performance Report Explorer to Performance Analysis Tool.
Procedia Computer Science 51, pp. 1343–1352. 2015.
DOI: 10.1016/j.procs.2015.05.320

Core features

The Cube Framework focuses on performance profiles generated by measurement systems like Score-P or automatic trace analyzers such as the Scalasca Trace Tools. It provides the following core features:

  • Three-dimensional, hierarchical data model
    Cube structures performance data across three dimensions: metrics, call paths, and system locations. The elements of each dimension can further be organized hierarchically. This allows users to map recorded performance issues precisely to their origin, which CubeGUI then visualizes interactively.
  • Multi-dimensional performance exploration
    Users can navigate through complex execution profiles and inspect performance behavior across all three dimensions simultaneously.
  • Derived metrics and CubePL
    Using a domain-specific language called CubePL, users can define and calculate custom performance metrics.
  • Extensible GUI plugin architecture
    CubeGUI includes a plugin interface that allows developers to add new visualizations, loop-level analysis tools, or graph renderers without changing the core codebase.
  • Profile manipulation tools
    A set of command-line tools enables operations on performance profiles, such as combining, comparing, scaling, or merging reports from multiple runs.
  • Remote data access
    Through a client-server approach, users can connect to remote performance archives over the network using CubeGUI, enabling direct analysis without the need to copy large data files.
  • Browser & JupyterLab integration
    Using WebAssembly support, Cube can be integrated into JupyterLab environments, allowing users to access and analyze performance measurements directly within a web browser.

Analysis workflow

The Cube Framework uses CUBE4 performance report archives (.cubex) as input. These profiles are created directly during execution by the Score-P measurement system or generated as enriched output by the Scalasca Trace Tools analyzer.

A typical performance evaluation workflow consists of the following steps:

  1. Initial profiling and overhead estimation
    After running an application instrumented by Score-P to generate an initial summary profile (profile.cubex), use scorep-score to analyze the profile. This estimates trace buffer requirements and helps create filter files to exclude small, frequently called routines to reduce measurement overhead and the size of collected traces.
  2. Sanity checking and textual inspection
    Use cube_sanity to check that stored metric data is valid. You can then use cube_regioninfo to inspect flat profiles, examine routine classifications, and view specific metrics directly from the command line.
  3. Metric remapping and heuristics
    Apply cube_remap to reorganize and refine measured execution timings, enabling a fine-grained separation of metrics and calculating additional useful performance heuristics.
  4. Algebraic post-processing
    When comparing runs or combining data across configurations, use the profile algebra tools:
    • cube_merge to combine performance data or overlapping metric dimensions from multiple files.
    • cube_diff to calculate differences between a baseline and an optimized run, showing where execution time changed.
  5. Interactive report exploration
    Load .cubex files into CubeGUI (cube) to interactively explore the three-dimensional performance tree, evaluate user-defined CubePL metrics, and use custom plugins to isolate bottlenecks.

CubeGUI main window screenshot

Example of a performance measurement result in CubeGUI

If you find the Cube Framework helpful for your research, please reference it in your publications. To cite the Cube Framework in general, please use the following publication:

  • Saviankou, P. et al. (2015).
    Cube v4: From Performance Report Explorer to Performance Analysis Tool.
    Procedia Computer Science 51, pp. 1343–1352.
    DOI: 10.1016/j.procs.2015.05.320

When referring to specific topics or components, please use one (or more) of the following:

  • Cube architecture & CubePL:
    Saviankou, P. et al. (2015).
    Cube v4: From Performance Report Explorer to Performance Analysis Tool.
    Procedia Computer Science 51, pp. 1343–1352.
    DOI: 10.1016/j.procs.2015.05.320

  • Cube plugins:
    Knobloch, M., Saviankou, P., Schlütter, M., Visser, A., and Mohr, B. (2021).
    A Picture Is Worth a Thousand Numbers—Enhancing Cube’s Analysis Capabilities with Plugins.
    In: Mix, H., Niethammer, C., Zhou, H., Nagel, W.E., Resch, M.M. (eds) Tools for High Performance Computing 2018 / 2019, pp. 237–259. Springer, Cham.
    DOI: 10.1007/978-3-030-66057-4_13