-
Notifications
You must be signed in to change notification settings - Fork 5
04. Developer Guide
This guide is for developers who want to contribute to TritonParse, understand its architecture, or extend its functionality.
TritonParse consists of three main components:
βββββββββββββββββββββββ βββββββββββββββββββββββ βββββββββββββββββββββββ
β Python Backend β β Processing β β Frontend UI β
β β β β β β
β β’ Structured LoggingββββΆβ β’ Log Parsing ββββΆβ β’ React Interface β
β β’ Triton Hooks β β β’ Source Mapping β β β’ IR Visualization β
β β’ Trace Generation β β β’ Data Compression β β β’ Code Comparison β
βββββββββββββββββββββββ βββββββββββββββββββββββ βββββββββββββββββββββββ
- Purpose: Capture Triton compilation events and generate structured logs
-
Key Files:
-
structured_logging.py
- Main logging infrastructure -
utils.py
- Parsing and processing utilities -
extract_source_mappings.py
- IR stage correlation -
source_type.py
- Source type definitions
-
- Purpose: Transform raw logs into structured, analyzable format
-
Key Functions:
- Parse NDJSON logs
- Extract source mappings between IR stages
- Compress and package data
- Purpose: Interactive visualization and analysis interface
-
Key Technologies:
- React 19 with TypeScript
- Vite build system
- Tailwind CSS for styling
- Monaco Editor for code display
tritonparse/
βββ tritonparse/ # Python package
β βββ __init__.py
β βββ structured_logging.py # Core logging infrastructure
β βββ utils.py # CLI and parsing utilities
β βββ extract_source_mappings.py # Source mapping extraction
β βββ source_type.py # Source type definitions
β βββ common.py # Common utilities
β βββ tp_logger.py # Logger configuration
β βββ shared_vars.py # Shared variables
βββ website/ # React web application
β βββ src/
β β βββ components/ # React components
β β β βββ CodeViewer.tsx # Code display component
β β β βββ CodeComparisonView.tsx # Side-by-side view
β β β βββ WelcomeScreen.tsx # Landing page
β β β βββ ...
β β βββ pages/ # Main page components
β β β βββ CodeView.tsx # Single IR view
β β β βββ KernelOverview.tsx # Kernel overview
β β βββ utils/ # Utility functions
β β β βββ dataLoader.ts # Data loading and processing
β β β βββ fbDetection.ts # Internal detection
β β βββ App.tsx # Main application component
β β βββ main.tsx # Entry point
β βββ public/ # Static assets
β βββ scripts/ # Build scripts
β βββ package.json # Dependencies
βββ tests/ # Test suite
βββ docs/ # Documentation
βββ .github/ # GitHub Actions
βββ .ci/ # CI scripts
βββ pyproject.toml # Python project configuration
βββ Makefile # Development commands
βββ README.md # Project overview
- Python >= 3.9
- Node.js >= 18.0.0
- Triton > 3.3.1 (compiled from source)
- Git for version control
# Clone repository
git clone https://github.com/pytorch-labs/tritonparse.git
cd tritonparse
# Install Python dependencies
make install-dev
# Install website dependencies
cd website
npm install
# Check formatting and linting
make format-check
make lint-check
# Check Python setup
make format-check
make lint-check
python -m unittest tests.test_tritonparse.TestTritonparseCPU -v
# Check website setup
cd website
npm run dev
We use a comprehensive formatting pipeline:
Tool | Purpose | Configuration |
---|---|---|
Black | Code formatting | pyproject.toml |
usort | Import sorting | pyproject.toml |
Ruff | Linting | Built-in rules |
# Format code
make format
# Check formatting
make format-check
# Run linting
make lint-check
# Run tests
python -m unittest tests.test_tritonparse -v
# Website development
cd website && npm run dev
Before committing, ensure:
-
Code is formatted:
make format
-
Linting passes:
make lint-check
-
Tests pass:
python -m unittest tests.test_tritonparse -v
-
Website builds:
cd website && npm run build
Purpose: Capture Triton compilation and launch events in structured format
Key Functions:
-
init(log_path)
- Initialize logging system - TODO:
Integration Points:
- Triton compilation hooks
- PyTorch TorchInductor integration
- Stack trace extraction
Purpose: Transform raw logs into analyzable format
Key Functions:
-
unified_parse()
- Main parsing interface -
oss_run()
- OSS-specific parsing logic -
parse_logs()
- Core log processing
Processing Pipeline:
- Read raw NDJSON logs from input directory
- Parse and validate log entries
- Extract source mappings between IR stages
- Compress and save processed data
Purpose: Correlate lines between different IR stages
Key Functions:
-
extract_source_mappings()
- Main extraction logic -
process_kernel_logs()
- Process individual kernel logs -
map_ir_stages()
- Map lines between IR formats
TODO
# Run CPU tests (no GPU required)
python -m unittest tests.test_tritonparse.TestTritonparseCPU -v
# Run GPU tests (requires CUDA)
python -m unittest tests.test_tritonparse.TestTritonparseCUDA -v
# Run specific test
python -m unittest tests.test_tritonparse.TestTritonparseCUDA.test_whole_workflow -v
# Test with real kernel
cd tests
TORCHINDUCTOR_FX_GRAPH_CACHE=0 python test_add.py
- React 19 - UI framework
- TypeScript - Type safety
- Vite - Build tool and dev server
- Tailwind CSS - Styling
- Monaco Editor - Code display
Purpose: Load and process trace files
Key Functions:
-
loadLogData()
- Load from URL -
loadLogDataFromFile()
- Load from file -
processKernelData()
- Process raw data
Purpose: Display IR code with syntax highlighting
Features:
- Language-specific syntax highlighting
- Line number display
- Interactive line selection
- Source mapping visualization
Purpose: Side-by-side IR comparison
Features:
- Synchronized scrolling
- Line mapping visualization
- Interactive highlighting
- Dropdown IR selection
TODO
cd website
# Development server
npm run dev
# Type checking
npm run build
# Linting
npm run lint
# Test with sample data
# Load ./public/f0_fc0_a0_cai-.ndjson in browser
Python Code
β
βΌ
Triton Compilation
β
βΌ
Structured Logging βββββββ
β β
βΌ βΌ
Raw NDJSON Logs Hook Events
β β
βΌ βΌ
Log Processing Source Mapping
β β
βΌ βΌ
Compressed Data βββββββββ
β
βΌ
Web Interface
β
βΌ
Interactive Visualization
{
"event_type": "compilation_start",
"timestamp": 1234567890,
"kernel_name": "add_kernel",
"metadata": {...}
}
{
"kernels": [
{
"hash": "abc123",
"name": "add_kernel",
"metadata": {...},
"irFiles": {
"ttgir": "...",
"ptx": "..."
},
"sourceMappings": {
"ttgir": {...},
"ptx": {...}
}
}
]
}
# Enable debug logging
export TRITONPARSE_DEBUG=1
# Run with debug output
python your_script.py
# Check log file contents
head -n 10 ./logs/*.ndjson
# Inspect compressed data
zcat ./parsed_output/*.gz | head -n 20
# Test parsing pipeline
python -c "
import tritonparse.utils
tritonparse.utils.unified_parse('./logs/', './test_output/', verbose=True)
"
// Enable frontend debug logging
localStorage.setItem('tritonparse-debug', 'true');
// Inspect loaded data
console.log(window.tritonparseData);
// Test data processing
import { processKernelData } from './utils/dataLoader';
console.log(processKernelData(rawData));
tests/
βββ test_tritonparse.py # Main test suite
βββ test_add.py # Manual test example
βββ unit_tests.py # Unit tests
βββ example_output/ # Sample data
# All tests
python -m unittest tests.test_tritonparse -v
# CPU-only tests
python -m unittest tests.test_tritonparse.TestTritonparseCPU -v
# GPU tests (requires CUDA)
python -m unittest tests.test_tritonparse.TestTritonparseCUDA -v
# Manual test
cd tests
TORCHINDUCTOR_FX_GRAPH_CACHE=0 python test_add.py
# tests/test_new_feature.py
import unittest
from tritonparse.new_feature import new_function
class TestNewFeature(unittest.TestCase):
def test_new_function(self):
result = new_function(input_data)
self.assertEqual(result, expected_output)
def setUp(self):
# Test setup
pass
def tearDown(self):
# Test cleanup
pass
Versions are managed in:
-
pyproject.toml
- Python package version -
website/package.json
- Frontend version
- Update version numbers
- Update CHANGELOG.md
- Run full test suite
- Build and test website
- Create GitHub release
- Deploy to GitHub Pages
CI/CD pipeline includes:
- Format checking - Code style validation
- Linting - Code quality checks
- Testing - Python and frontend tests
- Website deployment - Automatic GitHub Pages deployment
- Fork the repository
-
Create feature branch:
git checkout -b feature-name
- Make changes following coding standards
- Add tests for new functionality
-
Run formatting:
make format
-
Run tests:
make lint-check && python -m unittest tests.test_tritonparse -v
- Submit pull request
- All PRs require review by core maintainers
- CI checks must pass before merge
- Documentation updates required for new features
- Tests required for new functionality
When reporting issues:
- Use issue templates provided
- Include system information
- Provide reproduction steps
- Include error messages and logs
- Code Formatting Guide - Detailed formatting standards
- API Reference - Complete API documentation
- Architecture Deep Dive - Detailed architecture
- GitHub Discussions - Community Q&A
- GitHub Issues - Bug reports and feature requests
- Triton Documentation - Official Triton docs
- React Documentation - React development guide
- TypeScript Documentation - TypeScript reference
For new developers:
- Complete the Installation Guide
- Read the Usage Guide to understand the tool
- Explore the codebase starting with simple components
- Run the test suite to verify your setup
- Join GitHub Discussions for community support
For experienced contributors:
- Check GitHub Issues for open tasks
- Review the Architecture Deep Dive for advanced topics
- Contribute to documentation improvements
- Propose new features through GitHub Discussions