tornadovmpulse

A quick analyzer for TornadoVM's profilling logs

https://github.com/mikepapadim/tornadovmpulse

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary
Last synced: 8 months ago · JSON representation ·

Repository

A quick analyzer for TornadoVM's profilling logs

Basic Info
  • Host: GitHub
  • Owner: mikepapadim
  • Language: Python
  • Default Branch: main
  • Size: 2.3 MB
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 12 months ago · Last pushed 11 months ago
Metadata Files
Readme Citation

README.md

TornadoVMPulse Logo TornadoVMPulse

TornadoVMPulse is an interactive profilling tool for visualizing and analyzing profiling data from TornadoVM. It provides deep insights into kernel execution, data transfer, memory, and power usage, with a modern, user-friendly interface.

TornadoVMPulse Main Screenshot


Features

  • Upload and Analyze Logs: Supports TornadoVM profiler logs in JSON, log, or CSV format.
  • Automatic Conversion: Raw logs are automatically converted to CSV for analysis.
  • Interactive Visualizations:
    • Task Time Distribution (color-coded by task graph)
    • Memory Usage
    • Power Usage
    • Copy-In/Copy-Out Analysis
    • Total Execution Time Analysis (table, stacked bar, and sunburst chart)
    • Task Graph Analysis (per-task breakdown for a selected task graph)
  • Sidebar Configuration: Select which metrics to display and the time unit (ns, ms, sec).
  • Downloadable Results: Download generated CSVs after processing.
  • Modern UI: Custom logo, collapsible info panels, and beautiful charts.

Usage

  1. Install dependencies: bash pip install -r requirements.txt

  2. Run the dashboard: bash streamlit run src/app.py

  3. Upload a profiling log file:

    • Drag and drop a raw JSON/log or CSV file into the uploader.
    • If a raw file is uploaded, it will be converted to CSV and available for download.
  4. Explore the dashboard:

    • Use the sidebar to select which metrics to display and the time unit.
    • Review the visualizations and download the generated CSV if needed.

Visualizations & Metrics

Task Time Distribution

  • Bar chart showing the sum of kernel execution times for each task, color-coded by task graph.
  • Pie chart for overall distribution.

Example: Task Time Distribution as a Pie Chart (proportion of total kernel time per task): Task Time Distribution Pie Chart

Example: Task Time Distribution as a Bar Chart (kernel time per task, color-coded by task graph): Task Time Distribution Bar Chart

Memory Usage

  • Bar chart of total and average memory usage (copy-in bytes) for each task graph.

Power Usage

  • Bar chart of average power usage for each task graph.

Copy-In/Copy-Out Analysis

  • Table and bar chart showing time and number of data transfer operations, and their contribution to total execution time.

Total Execution Time Analysis

  • Table breaking down total execution time by task graph and action (kernel, dispatch, copy-in, copy-out), with percentages.
  • Stacked bar chart for visual comparison.
  • Sunburst chart: Hierarchical breakdown of total execution time by task graph and component, with interactive tooltips.

Example Table, Stacked Bar, and Sunburst Chart: Total Execution Time Analysis

Task Graph Analysis

  • Dropdown to select a specific task graph.
  • Stacked bar chart showing how time is spent (kernel, copy-in, copy-out, dispatch) for each task in the selected graph.
  • Memory usage per task (if available).

Summary Statistics

  • Statistical summary of the selected metrics.

Raw Data

  • View the raw input data as a DataFrame.

Sidebar Controls

  • Metrics Configuration: Select which visualizations to display.
  • Select time unit: Choose between nanoseconds, milliseconds, or seconds.
  • Status: See CSV generation status and download the generated CSV.

About the TornadoVM Profiler

  • Official Documentation
  • Enable the profiler with --enableProfiler console or silent or via the ExecutionPlan API.
  • Profiler output includes kernel, dispatch, copy-in/out, and power metrics.
  • Supported power metrics: NVIDIA NVML (OpenCL/PTX) and oneAPI Level Zero SYSMAN (SPIRV).
  • Save profiler output with --dumpProfiler <FILENAME>.

Customization

  • The dashboard uses a custom logo (static/pulse-logo.png).
  • You can further customize the UI and add new visualizations as needed.

License

MIT License


Owner

  • Name: Michalis Papadimitriou
  • Login: mikepapadim
  • Kind: user
  • Location: Remote
  • Company: University of Manchester

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this dashboard in your research, please cite it as below."
title: "TornadoVMPulse"
authors:
  - family-names: Papadimitriou
    given-names: Michail
    orcid: "https://orcid.org/0000-0000-0000-0000"
    affiliation: "[Your Institution or Organization]"
    email: "mpapadimitriou92@gmail.com"
version: "1.0"
date-released: "2024-04-27"
repository-code: "https://github.com/mikepapadim/TornadoVMPulse"
license: "MIT"
keywords:
  - TornadoVM
  - Profiler
  - Visualization
  - Performance Analysis
doi: "10.5281/zenodo.XXXXXXX"  # Replace with your Zenodo DOI if available
url: "https://tornadovm.readthedocs.io/en/latest/profiler.html"
abstract: |
  The TornadoVMPulse is an interactive web application for visualizing and analyzing profiling data from TornadoVM. It supports both raw JSON/log files and pre-processed CSV files, providing deep insights into kernel execution, data transfer, memory, and power usage. If you use this tool in your research, please cite this repository. 

GitHub Events

Total
  • Watch event: 1
  • Member event: 4
  • Push event: 7
  • Create event: 2
Last Year
  • Watch event: 1
  • Member event: 4
  • Push event: 7
  • Create event: 2

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 14
  • Total Committers: 1
  • Avg Commits per committer: 14.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 14
  • Committers: 1
  • Avg Commits per committer: 14.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
mikepapadim m****m@h****m 14

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

requirements.txt pypi
  • json5 ==0.9.14
  • numpy ==1.26.0
  • pandas ==2.2.0
  • plotly ==5.18.0
  • streamlit ==1.32.0