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.3.tar.gz (15.3 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.3-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hoptorch-0.1.3.tar.gz
  • Upload date:
  • Size: 15.3 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.3.tar.gz
Algorithm Hash digest
SHA256 ad633521b59c26fb04bda635ba86c48c96a956a9f0d70ef72ff8842e8d06ca7f
MD5 97c19d8c0f90985a2e00e6351fdca213
BLAKE2b-256 891e743494add004f708995ebbe8801cd7862cd3975aa675e66d5af91bce8fb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for hoptorch-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: hoptorch-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 12.2 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aac65283d46419d29da19faf8926c64c8f56795cf2b84af1f63c2d46b36067cf
MD5 49eb19797285ed2f20cb91e6037ea2bc
BLAKE2b-256 08fa8bfcfb6ad8a7382446439634ec024fa21235b763e73147659b78db786bb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for hoptorch-0.1.3-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