Skip to main content

Compatibility helpers for PyTorch higher-order operators.

Project description

hoptorch

hoptorch is a small compatibility package for PyTorch higher-order operators. Its first helper is a safe wrapper around torch._higher_order_ops.scan that checks whether scan backward is healthy on the requested device and lazily installs version-specific compatibility patches for affected PyTorch internals. For PyTorch 2.7, where scan backward is not implemented, hoptorch backports a small eager scan implementation with ordinary autograd support.

Install

pip install hoptorch

Runtime dependency:

torch>=2.7
pyvers>=0.2.2

Usage

import torch
from hoptorch import scan
from hoptorch.scan import ensure_scan_backward, scan_unavailable_reason

if ensure_scan_backward("cpu"):
    xs = torch.arange(4.0)

    def step(carry, x):
        next_carry = carry + x
        return next_carry, next_carry.clone()

    carry, ys = scan(step, torch.zeros(()), xs)
else:
    print(scan_unavailable_reason("cpu"))

For compiled code, warm the health check before entering torch.compile:

from hoptorch.scan import ensure_scan_backward

ensure_scan_backward("cpu")
compiled_fn = torch.compile(fn)

If a wrapper call happens during Dynamo tracing before the health result is cached, hoptorch fails closed instead of tracing the probe.

Public API

from hoptorch import scan
from hoptorch.scan import (
    ensure_scan_backward,
    has_scan,
    patch_scan_backward,
    scan_unavailable_reason,
)
  • scan(fn, init, xs, *, dim=0, **kwargs): calls PyTorch scan only when scan backward is known to be healthy for the inferred device.
  • has_scan(): reports whether torch._higher_order_ops.scan.scan exists.
  • ensure_scan_backward(device=None): runs or reads the cached health check, patching lazily if needed, and returns True only after a passing probe.
  • scan_unavailable_reason(device=None): returns None when scan backward is usable, otherwise a stable human-readable reason.
  • patch_scan_backward(): attempts to install the compatibility patch and is intended mainly for diagnostics.

Tests

python -m unittest discover -s tests

Project details


Download files

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

Source Distribution

hoptorch-0.1.4.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

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

hoptorch-0.1.4-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file hoptorch-0.1.4.tar.gz.

File metadata

  • Download URL: hoptorch-0.1.4.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hoptorch-0.1.4.tar.gz
Algorithm Hash digest
SHA256 958e22455460342f195c63f989543da6fcc66337b2f8fca1980454209d36d450
MD5 36f796c09f61197b36f2fab3c7206678
BLAKE2b-256 5fe46b4a08168cd3c9dd804df68131e1dcd7ea9507ad78d548f63d3979a34e5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for hoptorch-0.1.4.tar.gz:

Publisher: publish.yml on vmoens/hoptorch

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

File details

Details for the file hoptorch-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: hoptorch-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hoptorch-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fc0b49e5a8b2370db8b47185fedaf91b3c6cf7f6e726079bb02aca6dbf8bb04f
MD5 755ee972e2e3810d7b1f5311e26a042c
BLAKE2b-256 9743c038f118b0ce03385de7dcabfa64281e3387681f64668b1ee44f6b555cac

See more details on using hashes here.

Provenance

The following attestation bundles were made for hoptorch-0.1.4-py3-none-any.whl:

Publisher: publish.yml on vmoens/hoptorch

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