Skip to main content

Python tools for CUTracer trace validation and analysis

Project description

CUTracer Python Module

Python tools for CUTracer trace validation, parsing, and analysis.

Overview

The cutracer Python package provides a comprehensive framework for working with CUTracer trace files. This module is designed to be:

  • Reusable: Import and use in your own Python scripts
  • Testable: Full unittest suite with real trace data
  • Type-safe: Type hints and mypy compatibility
  • Extensible: Plugin architecture for future enhancements

Installation

For Development

cd /path/to/CUTracer/python
pip install -e ".[dev]"

For Production Use

cd /path/to/CUTracer/python
pip install .

Features

Trace Validation (Current)

  • JSON Validation: Validate NDJSON trace files (mode 2) for syntax and schema compliance
  • Text Validation: Validate text-format trace files (mode 0) for format compliance
  • Cross-Format Consistency: Compare different trace formats for data consistency

Planned Features

  • Trace Parsing: Parse trace files into structured Python objects
  • Analysis Tools: Instruction histograms, performance metrics, trace comparison
  • Format Conversion: Convert between different trace formats
  • Compression Support: Handle zstd-compressed traces (mode 1)

Usage

Python API

from cutracer.validation import (
    validate_json_trace,
    validate_text_trace,
    compare_trace_formats,
)

# Validate JSON trace
result = validate_json_trace("kernel_trace.ndjson")
if result["valid"]:
    print(f"✓ Valid JSON trace with {result['record_count']} records")
else:
    print(f"✗ Validation failed: {result['errors']}")

# Validate text trace
result = validate_text_trace("kernel_trace.log")
if result["valid"]:
    print(f"✓ Valid text trace")
else:
    print(f"✗ Validation failed: {result['errors']}")

# Compare two formats
result = compare_trace_formats("kernel_trace.log", "kernel_trace.ndjson")
if result["consistent"]:
    print("✓ Formats are consistent")
else:
    print(f"✗ Inconsistencies found: {result['differences']}")

Module Structure

python/
├── cutracer/                        # Main package
│   ├── __init__.py                  # Package entry point with version
│   └── validation/                  # Validation framework
│       ├── __init__.py              # Validation API exports
│       ├── schema_loader.py         # JSON Schema loader
│       ├── json_validator.py        # JSON syntax & schema validation
│       ├── text_validator.py        # Text format validation
│       ├── consistency.py           # Cross-format consistency checks
│       └── schemas/                 # JSON Schema definitions
│           ├── __init__.py
│           ├── reg_trace.schema.json
│           ├── mem_trace.schema.json
│           ├── opcode_only.schema.json
│           └── delay_config.schema.json
├── tests/                           # Unit tests
│   ├── __init__.py
│   ├── test_base.py                 # Base test class and utilities
│   ├── test_schemas.py              # Schema loading tests
│   ├── test_json_validator.py       # JSON validation tests
│   ├── test_text_validator.py       # Text validation tests
│   ├── test_consistency.py          # Consistency check tests
│   └── example_inputs/              # Real trace data for tests
│       ├── reg_trace_sample.ndjson
│       ├── reg_trace_sample.log
│       ├── invalid_syntax.ndjson
│       └── invalid_schema.ndjson
├── pyproject.toml                   # Modern Python project config
└── README.md                        # This file

Development

Running Tests

cd python/

# Run all tests
python -m unittest discover -s tests -v

# Run specific test file
python -m unittest tests.test_json_validator -v

Type Checking

cd python/
mypy cutracer/

Code Formatting

# From project root directory
./format.sh format

# Or manually with ufmt
ufmt format python/
usort format python/

Running All Checks

# Format code
./format.sh format

# Type check
mypy cutracer/

# Run tests
python -m unittest discover -s tests -v

Validation Details

JSON Trace Validation

The JSON validator checks:

  • Syntax: Valid JSON format on each line (NDJSON)
  • Schema: Correct field types and structure per JSON Schema
  • Required Fields: message_type, ctx, kernel_launch_id, trace_index, timestamp, sass, etc.
  • Register Values: Arrays of integers with proper format
  • CTA/Warp IDs: Valid integer ranges

Text Trace Validation

The text validator checks:

  • Format Patterns: Correct CTX/CTA/warp header patterns
  • Register Output: Proper hex format (e.g., Reg0_T00: 0x...)
  • Memory Access: Valid memory address patterns

Consistency Validation

The consistency validator compares:

  • Record Counts: Same number of records in both formats
  • Content Matching: Same kernel IDs, trace indices, SASS strings
  • Timestamp Order: Consistent ordering between formats

Trace Format Reference

JSON Format (NDJSON - Mode 2)

Each line is a JSON object with the following structure:

{
  "message_type": "reg_trace",
  "ctx": "0x58a0c0",
  "kernel_launch_id": 0,
  "trace_index": 0,
  "timestamp": 1762026820167834792,
  "sass": "LDC R1, c[0x0][0x28] ;",
  "pc": 0,
  "opcode_id": 0,
  "warp": 0,
  "cta": [0, 0, 0],
  "regs": [[0, 0, 0, ...]]
}

Text Format (Mode 0)

Human-readable format with CTX headers and register values:

CTX 0x58a0c0 - CTA 0,0,0 - warp 0 - LDC R1, c[0x0][0x28] ;:
    * Reg0_T00: 0x0000000000000000  Reg0_T01: 0x0000000000000000 ...

Contributing

  1. Install development dependencies: pip install -e ".[dev]"
  2. Make your changes
  3. Run tests: python -m unittest discover -s tests -v
  4. Run type checker: mypy cutracer/
  5. Format code: ./format.sh format
  6. Submit a pull request

License

MIT License - See LICENSE file for details.

Support

For issues and questions, please open an issue on the CUTracer GitHub repository.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cutracer-0.1.1.dev20260210074110.tar.gz (43.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cutracer-0.1.1.dev20260210074110-py3-none-any.whl (33.5 kB view details)

Uploaded Python 3

File details

Details for the file cutracer-0.1.1.dev20260210074110.tar.gz.

File metadata

File hashes

Hashes for cutracer-0.1.1.dev20260210074110.tar.gz
Algorithm Hash digest
SHA256 76472bf636047431ee5a7f78eee4b8635d1474c3d14c703074ce0b0608075f2a
MD5 119ab9c48b3755e9082c4c12eba0ab46
BLAKE2b-256 3b68595e5836e4906de7a3da06900b19b0caa4a1f4793abc6f4c1af95845628f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cutracer-0.1.1.dev20260210074110.tar.gz:

Publisher: nightly-pypi.yml on facebookresearch/CUTracer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cutracer-0.1.1.dev20260210074110-py3-none-any.whl.

File metadata

File hashes

Hashes for cutracer-0.1.1.dev20260210074110-py3-none-any.whl
Algorithm Hash digest
SHA256 39d745280c9d1c764f21ba4c8b90f533fe94ac7bd3b863975ac7a41bcef07e95
MD5 e81871b854b4874a53188ec3afe5ab50
BLAKE2b-256 8f5422b026b26ac309cda1e05cf42a559abfdcd6c73e9f638f7e92cd55b06eb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cutracer-0.1.1.dev20260210074110-py3-none-any.whl:

Publisher: nightly-pypi.yml on facebookresearch/CUTracer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page