tritonparse 0.2.1.dev20250915071616__tar.gz → 0.2.1.dev20250917071511__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of tritonparse might be problematic. Click here for more details.

Files changed (105) hide show
  1. tritonparse-0.2.1.dev20250917071511/.ci/install-triton-kernels.sh +87 -0
  2. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.github/workflows/test.yml +7 -1
  3. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.gitignore +1 -0
  4. {tritonparse-0.2.1.dev20250915071616/tritonparse.egg-info → tritonparse-0.2.1.dev20250917071511}/PKG-INFO +10 -2
  5. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/README.md +9 -1
  6. tritonparse-0.2.1.dev20250917071511/tests/example_output/repro/repro_context_20250816192455.json +448 -0
  7. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/test_tritonparse.py +97 -2
  8. tritonparse-0.2.1.dev20250917071511/tritonparse/reproducer/utils.py +147 -0
  9. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/structured_logging.py +103 -14
  10. tritonparse-0.2.1.dev20250917071511/tritonparse/tools/__init__.py +0 -0
  11. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511/tritonparse.egg-info}/PKG-INFO +10 -2
  12. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse.egg-info/SOURCES.txt +4 -0
  13. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.ci/README.md +0 -0
  14. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.ci/install-project.sh +0 -0
  15. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.ci/install-triton.sh +0 -0
  16. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.ci/run-tests.sh +0 -0
  17. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.ci/setup.sh +0 -0
  18. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.github/PAGES_SETUP.md +0 -0
  19. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.github/copilot-instructions.md +0 -0
  20. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.github/workflows/deploy-pages-standalone.yml +0 -0
  21. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.github/workflows/deploy-pages.yml +0 -0
  22. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/.github/workflows/nightly-pypi.yml +0 -0
  23. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/CHANGELOG.md +0 -0
  24. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/CODE_OF_CONDUCT.md +0 -0
  25. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/CONTRIBUTING.md +0 -0
  26. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/LICENSE +0 -0
  27. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/Makefile +0 -0
  28. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/__init__.py +0 -0
  29. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/docs/README.md +0 -0
  30. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/docs/screenshots/code-comparison.png +0 -0
  31. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/docs/screenshots/kernel-overview.png +0 -0
  32. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/pyproject.toml +0 -0
  33. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/run.py +0 -0
  34. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/setup.cfg +0 -0
  35. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/README.md +0 -0
  36. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/__init__.py +0 -0
  37. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/example_output/logs/dedicated_log_triton_trace_findhao_.ndjson +0 -0
  38. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/example_output/parsed_output/dedicated_log_triton_trace_findhao__mapped.ndjson.gz +0 -0
  39. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/example_output/parsed_output/f0_fc0_a0_cai-.ndjson.gz +0 -0
  40. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/example_output/parsed_output/log_file_list.json +0 -0
  41. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/example_output/parsed_output_complex/dedicated_log_triton_trace_findhao__mapped.ndjson.gz +0 -0
  42. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/example_output/parsed_output_complex/log_file_list.json +0 -0
  43. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tests/test_add.py +0 -0
  44. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/__init__.py +0 -0
  45. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/common.py +0 -0
  46. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/event_diff.py +0 -0
  47. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/extract_source_mappings.py +0 -0
  48. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/ir_parser.py +0 -0
  49. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/mapper.py +0 -0
  50. {tritonparse-0.2.1.dev20250915071616/tritonparse/tools → tritonparse-0.2.1.dev20250917071511/tritonparse/reproducer}/__init__.py +0 -0
  51. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/shared_vars.py +0 -0
  52. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/source_type.py +0 -0
  53. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/sourcemap_utils.py +0 -0
  54. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/tools/decompress_bin_ndjson.py +0 -0
  55. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/tools/format_fix.py +0 -0
  56. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/tools/load_tensor.py +0 -0
  57. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/tools/prettify_ndjson.py +0 -0
  58. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/tools/readme.md +0 -0
  59. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/tp_logger.py +0 -0
  60. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/trace_processor.py +0 -0
  61. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse/utils.py +0 -0
  62. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse.egg-info/dependency_links.txt +0 -0
  63. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse.egg-info/requires.txt +0 -0
  64. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/tritonparse.egg-info/top_level.txt +0 -0
  65. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/eslint.config.js +0 -0
  66. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/index.html +0 -0
  67. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/package-lock.json +0 -0
  68. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/package.json +0 -0
  69. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/postcss.config.js +0 -0
  70. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/public/dedicated_log_triton_trace_findhao__mapped.ndjson.gz +0 -0
  71. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/public/f0_fc0_a0_cai-.ndjson +0 -0
  72. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/public/favicon.ico +0 -0
  73. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/public/logo.svg +0 -0
  74. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/scripts/inline-html.js +0 -0
  75. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/App.css +0 -0
  76. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/App.tsx +0 -0
  77. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/assets/react.svg +0 -0
  78. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/ArgumentViewer.tsx +0 -0
  79. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/Callstack.tsx +0 -0
  80. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/CodeComparisonView.tsx +0 -0
  81. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/CodeViewer.tsx +0 -0
  82. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/CompilationInfo.tsx +0 -0
  83. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/CopyCodeButton.tsx +0 -0
  84. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/DataSourceSelector.tsx +0 -0
  85. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/DiffViewer.tsx +0 -0
  86. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/ExternalLink.tsx +0 -0
  87. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/SingleCodeViewer.tsx +0 -0
  88. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/StackDiffViewer.tsx +0 -0
  89. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/ToggleSwitch.tsx +0 -0
  90. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/TritonIRs.tsx +0 -0
  91. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/components/WelcomeScreen.tsx +0 -0
  92. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/index.css +0 -0
  93. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/main.tsx +0 -0
  94. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/pages/CodeView.tsx +0 -0
  95. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/pages/KernelOverview.tsx +0 -0
  96. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/utils/dataLoader.ts +0 -0
  97. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/utils/fbDetection.ts +0 -0
  98. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/utils/safeImport.ts +0 -0
  99. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/utils/tensor.ts +0 -0
  100. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/src/vite-env.d.ts +0 -0
  101. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/tailwind.config.js +0 -0
  102. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/tsconfig.app.json +0 -0
  103. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/tsconfig.json +0 -0
  104. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/tsconfig.node.json +0 -0
  105. {tritonparse-0.2.1.dev20250915071616 → tritonparse-0.2.1.dev20250917071511}/website/vite.config.ts +0 -0
@@ -0,0 +1,87 @@
1
+ #!/bin/bash
2
+
3
+ # Install Triton kernels from triton-lang/triton/python/triton_kernels
4
+
5
+ set -e
6
+
7
+ echo "🚀 Installing Triton kernels from triton-lang/triton/python/triton_kernels..."
8
+ START_TIME=$(date +%s)
9
+
10
+ # Function to show elapsed time
11
+ show_elapsed() {
12
+ CURRENT_TIME=$(date +%s)
13
+ ELAPSED=$((CURRENT_TIME - START_TIME))
14
+ echo "⏱️ Elapsed time: ${ELAPSED}s"
15
+ }
16
+
17
+ # Set Triton version/commit for cache consistency
18
+ TRITON_COMMIT=${TRITON_COMMIT:-"main"}
19
+ echo "🎯 Target Triton commit/branch: $TRITON_COMMIT"
20
+ TRITON_SOURCE_DIR="/tmp/triton"
21
+
22
+ # Ensure we're in the conda environment
23
+ if [ -z "$CONDA_ENV" ]; then
24
+ echo "ERROR: CONDA_ENV is not set"
25
+ exit 1
26
+ fi
27
+
28
+ # Activate conda environment
29
+ source /opt/miniconda3/etc/profile.d/conda.sh
30
+ conda activate "$CONDA_ENV"
31
+
32
+ # Ensure TRITON_SOURCE_DIR contains Triton source; otherwise, clone it
33
+ echo "🔧 Ensuring Triton source exists at $TRITON_SOURCE_DIR..."
34
+
35
+ if [ -d "$TRITON_SOURCE_DIR/.git" ]; then
36
+ REMOTE_URL=$(git -C "$TRITON_SOURCE_DIR" remote get-url origin 2>/dev/null || echo "")
37
+ if [[ "$REMOTE_URL" == *"triton-lang/triton"* ]]; then
38
+ echo "✅ Found existing Triton repository: $REMOTE_URL"
39
+ else
40
+ echo "⚠️ Existing directory is not triton-lang/triton (origin: $REMOTE_URL). Re-cloning..."
41
+ rm -rf "$TRITON_SOURCE_DIR"
42
+ fi
43
+ fi
44
+
45
+ if [ ! -d "$TRITON_SOURCE_DIR/.git" ]; then
46
+ echo "Cloning Triton repository..."
47
+ if ! git clone https://github.com/triton-lang/triton.git "$TRITON_SOURCE_DIR"; then
48
+ echo "❌ ERROR: Failed to clone Triton repository"
49
+ echo "This might be due to network issues or GitHub rate limiting"
50
+ exit 1
51
+ fi
52
+ fi
53
+
54
+ echo "Checking out Triton commit/branch: $TRITON_COMMIT"
55
+ if ! git -C "$TRITON_SOURCE_DIR" checkout "$TRITON_COMMIT"; then
56
+ echo "❌ ERROR: Failed to checkout $TRITON_COMMIT"
57
+ exit 1
58
+ fi
59
+
60
+ # Install triton_kernels in editable mode
61
+ KERNELS_DIR="$TRITON_SOURCE_DIR/python/triton_kernels"
62
+ if [ ! -d "$KERNELS_DIR" ]; then
63
+ echo "❌ ERROR: triton_kernels directory not found at $KERNELS_DIR"
64
+ exit 1
65
+ fi
66
+
67
+ echo "📦 Installing triton_kernels from $KERNELS_DIR (editable)..."
68
+ pip install -e "$KERNELS_DIR"
69
+ show_elapsed
70
+
71
+ # Verify installation with a simple import
72
+ echo "🔎 Verifying triton_kernels installation..."
73
+ set +e
74
+ KERNELS_IMPORT_OUTPUT=$(python -c "import triton_kernels; import os; print('triton_kernels OK'); print(getattr(triton_kernels, '__file__', 'no_file'))" 2>&1)
75
+ KERNELS_IMPORT_EXITCODE=$?
76
+ set -e
77
+
78
+ echo "Import exit code: $KERNELS_IMPORT_EXITCODE"
79
+ echo "Import output: $KERNELS_IMPORT_OUTPUT"
80
+
81
+ if [ $KERNELS_IMPORT_EXITCODE -ne 0 ]; then
82
+ echo "❌ ERROR: Failed to import triton_kernels"
83
+ exit 1
84
+ fi
85
+
86
+ echo "✅ triton_kernels installation verified"
87
+ show_elapsed
@@ -142,7 +142,7 @@ jobs:
142
142
  TRITON_COMMIT: ${{ steps.triton-commit.outputs.commit }}
143
143
  run: |
144
144
  bash .ci/install-triton.sh
145
-
145
+ bash .ci/install-triton-kernels.sh
146
146
  - name: Install project dependencies
147
147
  env:
148
148
  CONDA_ENV: tritonparse
@@ -192,6 +192,12 @@ jobs:
192
192
  run: |
193
193
  bash .ci/setup.sh
194
194
 
195
+ - name: Install Triton kernels
196
+ env:
197
+ CONDA_ENV: tritonparse-pip
198
+ run: |
199
+ bash .ci/install-triton-kernels.sh
200
+
195
201
  - name: Install project dependencies
196
202
  env:
197
203
  CONDA_ENV: tritonparse-pip
@@ -54,6 +54,7 @@ parsed_output/
54
54
  *.ndjson.gz
55
55
  *.json
56
56
  !tests/example_output/
57
+ !tests/example_output/repro/**
57
58
  !tests/example_output/logs/**
58
59
  !tests/example_output/parsed_output/**
59
60
  !tests/example_output/parsed_output_complex/**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tritonparse
3
- Version: 0.2.1.dev20250915071616
3
+ Version: 0.2.1.dev20250917071511
4
4
  Summary: TritonParse: A Compiler Tracer, Visualizer, and mini-Reproducer Generator for Triton Kernels
5
5
  Author-email: Yueming Hao <yhao@meta.com>
6
6
  License-Expression: BSD-3-Clause
@@ -21,7 +21,7 @@ Dynamic: license-file
21
21
  [![License: BSD-3](https://img.shields.io/badge/License-BSD--3-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
22
22
  [![GitHub Pages](https://img.shields.io/badge/GitHub%20Pages-Deploy-brightgreen)](https://meta-pytorch.org/tritonparse/)
23
23
 
24
- **A comprehensive visualization and analysis tool for Triton IR files** — helping developers analyze, debug, and understand Triton kernel compilation processes.
24
+ **A comprehensive visualization and analysis tool for Triton kernel compilation and launch** — helping developers analyze, debug, and understand Triton kernel compilation processes.
25
25
 
26
26
  🌐 **[Try it online →](https://meta-pytorch.org/tritonparse/?json_url=https://meta-pytorch.org/tritonparse/dedicated_log_triton_trace_findhao__mapped.ndjson.gz)**
27
27
 
@@ -81,10 +81,18 @@ INFO:tritonparse:Copying parsed logs from /tmp/tmp1gan7zky to /scratch/findhao/t
81
81
  ## 🛠️ Installation
82
82
 
83
83
  **For basic usage (trace generation):**
84
+ Four options:
84
85
  ```bash
86
+ # install nightly version
87
+ pip install -U --pre tritonparse
88
+ # install stable version
89
+ pip install tritonparse
90
+ # install from source
85
91
  git clone https://github.com/meta-pytorch/tritonparse.git
86
92
  cd tritonparse
87
93
  pip install -e .
94
+ # pip install the latest version from github
95
+ pip install git+https://github.com/meta-pytorch/tritonparse.git
88
96
  ```
89
97
 
90
98
  **Prerequisites:** Python ≥ 3.10, Triton ≥ 3.4.0, GPU required (NVIDIA/AMD)
@@ -3,7 +3,7 @@
3
3
  [![License: BSD-3](https://img.shields.io/badge/License-BSD--3-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
4
4
  [![GitHub Pages](https://img.shields.io/badge/GitHub%20Pages-Deploy-brightgreen)](https://meta-pytorch.org/tritonparse/)
5
5
 
6
- **A comprehensive visualization and analysis tool for Triton IR files** — helping developers analyze, debug, and understand Triton kernel compilation processes.
6
+ **A comprehensive visualization and analysis tool for Triton kernel compilation and launch** — helping developers analyze, debug, and understand Triton kernel compilation processes.
7
7
 
8
8
  🌐 **[Try it online →](https://meta-pytorch.org/tritonparse/?json_url=https://meta-pytorch.org/tritonparse/dedicated_log_triton_trace_findhao__mapped.ndjson.gz)**
9
9
 
@@ -63,10 +63,18 @@ INFO:tritonparse:Copying parsed logs from /tmp/tmp1gan7zky to /scratch/findhao/t
63
63
  ## 🛠️ Installation
64
64
 
65
65
  **For basic usage (trace generation):**
66
+ Four options:
66
67
  ```bash
68
+ # install nightly version
69
+ pip install -U --pre tritonparse
70
+ # install stable version
71
+ pip install tritonparse
72
+ # install from source
67
73
  git clone https://github.com/meta-pytorch/tritonparse.git
68
74
  cd tritonparse
69
75
  pip install -e .
76
+ # pip install the latest version from github
77
+ pip install git+https://github.com/meta-pytorch/tritonparse.git
70
78
  ```
71
79
 
72
80
  **Prerequisites:** Python ≥ 3.10, Triton ≥ 3.4.0, GPU required (NVIDIA/AMD)
@@ -0,0 +1,448 @@
1
+ [
2
+ {
3
+ "compilation_metadata": {
4
+ "allowed_dot_input_precisions": [
5
+ "tf32",
6
+ "tf32x3",
7
+ "ieee"
8
+ ],
9
+ "arch": "sm90",
10
+ "backend_name": "cuda",
11
+ "cluster_dims": [
12
+ 1,
13
+ 1,
14
+ 1
15
+ ],
16
+ "debug": false,
17
+ "default_dot_input_precision": "tf32",
18
+ "deprecated_fp8_dot_operand_dtypes": [
19
+ "fp8e4b15"
20
+ ],
21
+ "enable_fp_fusion": true,
22
+ "extern_libs": [
23
+ [
24
+ "libdevice",
25
+ "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/triton/backends/nvidia/lib/libdevice.10.bc"
26
+ ]
27
+ ],
28
+ "global_scratch_align": 1,
29
+ "global_scratch_size": 0,
30
+ "hash": "3879173b7390886e64802fd88af12f9a7c0dcb6550e23d866dc27e4b5714ae64",
31
+ "ir_override": null,
32
+ "launch_cooperative_grid": false,
33
+ "launch_pdl": false,
34
+ "max_num_imprecise_acc_default": 1073741824,
35
+ "maxnreg": null,
36
+ "name": "_topk_forward",
37
+ "num_ctas": 1,
38
+ "num_stages": 3,
39
+ "num_warps": 4,
40
+ "ptx_options": null,
41
+ "ptx_version": null,
42
+ "sanitize_overflow": true,
43
+ "shared": 528,
44
+ "supported_fp8_dtypes": [
45
+ "fp8e4b15",
46
+ "fp8e4nv",
47
+ "fp8e5"
48
+ ],
49
+ "target": {
50
+ "arch": 90,
51
+ "backend": "cuda",
52
+ "warp_size": 32
53
+ },
54
+ "tensordesc_meta": [],
55
+ "tmem_size": 0,
56
+ "triton_version": "3.4.0"
57
+ },
58
+ "event_type": "launch",
59
+ "extracted_args": {
60
+ "APPLY_SOFTMAX": {
61
+ "type": "bool",
62
+ "value": true
63
+ },
64
+ "BLOCK_M": {
65
+ "type": "int",
66
+ "value": 32
67
+ },
68
+ "BLOCK_N": {
69
+ "type": "int",
70
+ "value": 32
71
+ },
72
+ "BLOCK_S": {
73
+ "type": "int",
74
+ "value": 128
75
+ },
76
+ "Bits": {
77
+ "data_ptr": "0x7eff45fffe00",
78
+ "device": "cuda:0",
79
+ "dtype": "torch.uint32",
80
+ "element_size": 4,
81
+ "is_contiguous": true,
82
+ "memory_usage": 304,
83
+ "numel": 76,
84
+ "shape": [
85
+ 76,
86
+ 1
87
+ ],
88
+ "storage_offset": 0,
89
+ "stride": [
90
+ 1,
91
+ 96
92
+ ],
93
+ "type": "tensor"
94
+ },
95
+ "N_EXPTS_ACT": {
96
+ "type": "int",
97
+ "value": 4
98
+ },
99
+ "N_EXPTS_PAD": {
100
+ "type": "int",
101
+ "value": 32
102
+ },
103
+ "S": {
104
+ "data_ptr": "0x7f000bfffc00",
105
+ "device": "cuda:0",
106
+ "dtype": "torch.int32",
107
+ "element_size": 4,
108
+ "is_contiguous": true,
109
+ "memory_usage": 512,
110
+ "numel": 128,
111
+ "shape": [
112
+ 128
113
+ ],
114
+ "storage_offset": 0,
115
+ "stride": [
116
+ 1
117
+ ],
118
+ "type": "tensor"
119
+ },
120
+ "USE_PROVIDED_INDX": {
121
+ "type": "bool",
122
+ "value": false
123
+ },
124
+ "X": {
125
+ "dtype": "torch.bfloat16",
126
+ "shape": [
127
+ 76,
128
+ 32
129
+ ],
130
+ "shape_max": [
131
+ 76,
132
+ 32
133
+ ],
134
+ "storage": {
135
+ "data": {
136
+ "data_ptr": "0x7eff55e00000",
137
+ "device": "cuda:0",
138
+ "dtype": "torch.bfloat16",
139
+ "element_size": 2,
140
+ "is_contiguous": true,
141
+ "memory_usage": 4864,
142
+ "numel": 2432,
143
+ "shape": [
144
+ 76,
145
+ 32
146
+ ],
147
+ "storage_offset": 0,
148
+ "stride": [
149
+ 32,
150
+ 1
151
+ ],
152
+ "type": "tensor"
153
+ },
154
+ "layout": {
155
+ "initial_shape": [
156
+ 76,
157
+ 32
158
+ ],
159
+ "name": null,
160
+ "type": "StridedLayout"
161
+ },
162
+ "type": "triton_kernels.tensor.Storage"
163
+ },
164
+ "type": "triton_kernels.tensor.Tensor"
165
+ },
166
+ "Yi": {
167
+ "data_ptr": "0x7f000bfff800",
168
+ "device": "cuda:0",
169
+ "dtype": "torch.int16",
170
+ "element_size": 2,
171
+ "is_contiguous": true,
172
+ "memory_usage": 608,
173
+ "numel": 304,
174
+ "shape": [
175
+ 76,
176
+ 4
177
+ ],
178
+ "storage_offset": 0,
179
+ "stride": [
180
+ 4,
181
+ 1
182
+ ],
183
+ "type": "tensor"
184
+ },
185
+ "Yv": {
186
+ "data_ptr": "0x7f000bffc600",
187
+ "device": "cuda:0",
188
+ "dtype": "torch.bfloat16",
189
+ "element_size": 2,
190
+ "is_contiguous": true,
191
+ "memory_usage": 608,
192
+ "numel": 304,
193
+ "shape": [
194
+ 76,
195
+ 4
196
+ ],
197
+ "storage_offset": 0,
198
+ "stride": [
199
+ 4,
200
+ 1
201
+ ],
202
+ "type": "tensor"
203
+ },
204
+ "n_expts_tot": {
205
+ "type": "int",
206
+ "value": 32
207
+ },
208
+ "n_rows": {
209
+ "type": "int",
210
+ "value": 76
211
+ },
212
+ "s_blocks": {
213
+ "type": "int",
214
+ "value": 1
215
+ },
216
+ "stride_rm": {
217
+ "type": "int",
218
+ "value": 1
219
+ },
220
+ "stride_rn": {
221
+ "type": "int",
222
+ "value": 96
223
+ },
224
+ "stride_xm": {
225
+ "type": "int",
226
+ "value": 32
227
+ },
228
+ "stride_ym": {
229
+ "type": "int",
230
+ "value": 4
231
+ }
232
+ },
233
+ "function": null,
234
+ "grid": [
235
+ 3
236
+ ],
237
+ "name": "_topk_forward",
238
+ "pid": 3148601,
239
+ "stack": [
240
+ {
241
+ "filename": "/storage/users/yhao24/ml_scripts/gpt-oss/run.py",
242
+ "line": 23,
243
+ "loc": "result = generator(",
244
+ "name": "<module>"
245
+ },
246
+ {
247
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/pipelines/text_generation.py",
248
+ "line": 314,
249
+ "loc": "return super().__call__(Chat(text_inputs), **kwargs)",
250
+ "name": "__call__"
251
+ },
252
+ {
253
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/pipelines/base.py",
254
+ "line": 1458,
255
+ "loc": "return self.run_single(inputs, preprocess_params, forward_params, postprocess_params)",
256
+ "name": "__call__"
257
+ },
258
+ {
259
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/pipelines/base.py",
260
+ "line": 1465,
261
+ "loc": "model_outputs = self.forward(model_inputs, **forward_params)",
262
+ "name": "run_single"
263
+ },
264
+ {
265
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/pipelines/base.py",
266
+ "line": 1365,
267
+ "loc": "model_outputs = self._forward(model_inputs, **forward_params)",
268
+ "name": "forward"
269
+ },
270
+ {
271
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/pipelines/text_generation.py",
272
+ "line": 419,
273
+ "loc": "output = self.model.generate(input_ids=input_ids, attention_mask=attention_mask, **generate_kwargs)",
274
+ "name": "_forward"
275
+ },
276
+ {
277
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/utils/_contextlib.py",
278
+ "line": 120,
279
+ "loc": "return func(*args, **kwargs)",
280
+ "name": "decorate_context"
281
+ },
282
+ {
283
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/generation/utils.py",
284
+ "line": 2629,
285
+ "loc": "result = self._sample(",
286
+ "name": "generate"
287
+ },
288
+ {
289
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/generation/utils.py",
290
+ "line": 3610,
291
+ "loc": "outputs = self(**model_inputs, return_dict=True)",
292
+ "name": "_sample"
293
+ },
294
+ {
295
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/nn/modules/module.py",
296
+ "line": 1773,
297
+ "loc": "return self._call_impl(*args, **kwargs)",
298
+ "name": "_wrapped_call_impl"
299
+ },
300
+ {
301
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/nn/modules/module.py",
302
+ "line": 1784,
303
+ "loc": "return forward_call(*args, **kwargs)",
304
+ "name": "_call_impl"
305
+ },
306
+ {
307
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/utils/generic.py",
308
+ "line": 959,
309
+ "loc": "output = func(self, *args, **kwargs)",
310
+ "name": "wrapper"
311
+ },
312
+ {
313
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/models/gpt_oss/modeling_gpt_oss.py",
314
+ "line": 658,
315
+ "loc": "outputs: MoeModelOutputWithPast = self.model(",
316
+ "name": "forward"
317
+ },
318
+ {
319
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/nn/modules/module.py",
320
+ "line": 1773,
321
+ "loc": "return self._call_impl(*args, **kwargs)",
322
+ "name": "_wrapped_call_impl"
323
+ },
324
+ {
325
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/nn/modules/module.py",
326
+ "line": 1784,
327
+ "loc": "return forward_call(*args, **kwargs)",
328
+ "name": "_call_impl"
329
+ },
330
+ {
331
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/utils/generic.py",
332
+ "line": 1083,
333
+ "loc": "outputs = func(self, *args, **kwargs)",
334
+ "name": "wrapper"
335
+ },
336
+ {
337
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/models/gpt_oss/modeling_gpt_oss.py",
338
+ "line": 491,
339
+ "loc": "hidden_states = decoder_layer(",
340
+ "name": "forward"
341
+ },
342
+ {
343
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/modeling_layers.py",
344
+ "line": 94,
345
+ "loc": "return super().__call__(*args, **kwargs)",
346
+ "name": "__call__"
347
+ },
348
+ {
349
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/nn/modules/module.py",
350
+ "line": 1773,
351
+ "loc": "return self._call_impl(*args, **kwargs)",
352
+ "name": "_wrapped_call_impl"
353
+ },
354
+ {
355
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/nn/modules/module.py",
356
+ "line": 1784,
357
+ "loc": "return forward_call(*args, **kwargs)",
358
+ "name": "_call_impl"
359
+ },
360
+ {
361
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/models/gpt_oss/modeling_gpt_oss.py",
362
+ "line": 370,
363
+ "loc": "hidden_states, _ = self.mlp(hidden_states) # diff with llama: router scores",
364
+ "name": "forward"
365
+ },
366
+ {
367
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/nn/modules/module.py",
368
+ "line": 1773,
369
+ "loc": "return self._call_impl(*args, **kwargs)",
370
+ "name": "_wrapped_call_impl"
371
+ },
372
+ {
373
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/nn/modules/module.py",
374
+ "line": 1784,
375
+ "loc": "return forward_call(*args, **kwargs)",
376
+ "name": "_call_impl"
377
+ },
378
+ {
379
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/transformers/integrations/mxfp4.py",
380
+ "line": 298,
381
+ "loc": "routing_data, gather_idx, scatter_idx = routing(router_logits, self.router.top_k)",
382
+ "name": "mlp_forward"
383
+ },
384
+ {
385
+ "filename": "/home/users/yhao24/.cache/huggingface/hub/models--kernels-community--triton_kernels/snapshots/1d2e9557ac0d4c651055a209055748d4db0fe65b/build/torch-universal/triton_kernels/routing.py",
386
+ "line": 296,
387
+ "loc": "expt_scal, expt_indx, bitmatrix = topk(logits, n_expts_act, #",
388
+ "name": "routing"
389
+ },
390
+ {
391
+ "filename": "/home/users/yhao24/.cache/huggingface/hub/models--kernels-community--triton_kernels/snapshots/1d2e9557ac0d4c651055a209055748d4db0fe65b/build/torch-universal/triton_kernels/topk.py",
392
+ "line": 87,
393
+ "loc": "ret = TopK.apply(x, k, apply_softmax, dim, return_bitmatrix, y_indx, n_rows)",
394
+ "name": "topk"
395
+ },
396
+ {
397
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/torch/autograd/function.py",
398
+ "line": 576,
399
+ "loc": "return super().apply(*args, **kwargs) # type: ignore[misc]",
400
+ "name": "apply"
401
+ },
402
+ {
403
+ "filename": "/home/users/yhao24/.cache/huggingface/hub/models--kernels-community--triton_kernels/snapshots/1d2e9557ac0d4c651055a209055748d4db0fe65b/build/torch-universal/triton_kernels/topk.py",
404
+ "line": 72,
405
+ "loc": "y_vals, y_indx, bitmatrix = topk_forward(x, k, apply_softmax, dim, return_bitmatrix, y_indx, n_rows)",
406
+ "name": "forward"
407
+ },
408
+ {
409
+ "filename": "/home/users/yhao24/.cache/huggingface/hub/models--kernels-community--triton_kernels/snapshots/1d2e9557ac0d4c651055a209055748d4db0fe65b/build/torch-universal/triton_kernels/topk.py",
410
+ "line": 41,
411
+ "loc": "_topk_forward[(pids, )](",
412
+ "name": "topk_forward"
413
+ },
414
+ {
415
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/triton/runtime/jit.py",
416
+ "line": 390,
417
+ "loc": "return lambda *args, **kwargs: self.run(grid=grid, warmup=False, *args, **kwargs)",
418
+ "name": "<lambda>"
419
+ },
420
+ {
421
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/triton/runtime/jit.py",
422
+ "line": 617,
423
+ "loc": "kernel.run(grid_0, grid_1, grid_2, stream, kernel.function, kernel.packed_metadata, launch_metadata,",
424
+ "name": "run"
425
+ },
426
+ {
427
+ "filename": "/scratch/yhao/miniconda3/envs/ptf/lib/python3.12/site-packages/triton/backends/nvidia/driver.py",
428
+ "line": 708,
429
+ "loc": "self.launch(gridX, gridY, gridZ, stream, function, self.launch_cooperative_grid, self.launch_pdl,",
430
+ "name": "__call__"
431
+ },
432
+ {
433
+ "filename": "/storage/users/yhao24/d/tritonparse/tritonparse/structured_logging.py",
434
+ "line": 1038,
435
+ "loc": "trace_structured_triton(\"launch\", metadata_fn=lambda: convert(trace_data))",
436
+ "name": "__call__"
437
+ },
438
+ {
439
+ "filename": "/storage/users/yhao24/d/tritonparse/tritonparse/structured_logging.py",
440
+ "line": 742,
441
+ "loc": "metadata_dict[\"stack\"] = get_stack_trace()",
442
+ "name": "trace_structured_triton"
443
+ }
444
+ ],
445
+ "stream": 0,
446
+ "timestamp": "2025-08-16T13:54:46.%fZ"
447
+ }
448
+ ]