Skip to main content

faster-diffbloch

Drop-in Apple Silicon Metal GPU and optimized CPU acceleration for diffBloch electron crystallography structure refinement.

Up to 1.80× faster than PyTorch CPU in measured end-to-end forward-plus-backward benchmarks, with a Metal GPU path for Apple Silicon and an optimized CPU path for macOS and Linux.

Package Documentation Source repository Original project
PyPI · piwheels diffFlow documentation and benchmarks github.com/godofecht/diffFlow diffbloch.com

Operating System and Platform Support

Operating System / Hardware CPU Acceleration (device="cpu") GPU Acceleration (device="gpu") Backend Runtime
macOS Apple Silicon (M1/M2/M3/M4/Max/Ultra) Supported Supported Native Metal Compute Shaders + Apple Accelerate BLAS
macOS Intel (x86_64) Supported Fallback to CPU Apple Accelerate BLAS
Linux (x86_64 / aarch64) Supported Fallback to CPU OpenBLAS / C11 BLAS
Windows PyTorch Reference PyTorch Reference Pure PyTorch Reference Fallback

Runtime platform guards automatically detect your operating system and hardware configuration. When device="gpu" is requested on Linux, faster-diffbloch automatically selects the optimized CPU backend with an informative warning.


Why faster-diffBloch?

faster-diffbloch keeps the diffBloch workflow and public API intact while moving the expensive propagation and gradient work onto an accelerated native backend. You get the same scientific calculation, with a faster path on supported hardware and a safe PyTorch fallback when the native backend is unavailable.

The package is validated against the diffBloch test suite and reference results. It passes all 738 diffBloch tests, 55 additional conformance tests, and reproduces the experimental quartz refinement result.


Performance

End-to-end forward-plus-backward timing on an Apple M4 Max, measured across the same diffBloch workload at different beam counts:

Beams faster-diffBloch PyTorch Speedup
31 0.90 ms 1.62 ms 1.80×
61 1.37 ms 2.24 ms 1.63×
91 2.84 ms 3.99 ms 1.41×
163 7.67 ms 10.98 ms 1.43×
579 89.81 ms 135.77 ms 1.51×

That is 1.41x to 1.80x faster than PyTorch CPU across the measured cases, including the largest 579-beam case. The same benchmark is 1.21× faster than the Mojo reference at 31 beams, remains ahead through 163 beams, and is essentially level at 579 beams.

On Apple Silicon, the Metal GPU path is also available. In the package's M4 Max comparison run at 579 beams, it measured 2.24× faster than PyTorch CPU for the forward pass and 2.63× faster than PyTorch MPS for forward plus backward.

These figures come from one workload on one machine. Other crystals, hardware configurations and beam counts will differ. The CPU table uses single-threaded PyTorch and the same Apple Accelerate environment for a like-for-like comparison.

Package benchmark snapshot

Implementation Forward Forward + Backward Speedup vs PyTorch CPU Speedup vs PyTorch MPS
PyTorch CPU 25.7 ms 130.3 ms 1.00x 1.17x
PyTorch MPS (fallback) 26.2 ms 153.0 ms 0.85x 1.00x
faster-diffBloch CPU 24.4 ms 83.5 ms 1.56x 1.83x
faster-diffBloch Metal GPU 13.1 ms 58.1 ms 2.24x 2.63x

Installation

pip install faster-diffbloch

Usage

1. Drop-in CLI

Use diffbloch-fast or faster-diffbloch anywhere you would use diffbloch:

diffbloch-fast infer examples/Colmey_et_al_2026/data/quartz-no-abs
diffbloch-fast refine examples/Colmey_et_al_2026/data/quartz-no-abs

2. Python API Injection

Enable acceleration inside any existing diffBloch script:

import faster_diffbloch

# Enable Metal GPU acceleration (macOS Apple Silicon)
faster_diffbloch.enable(device="gpu")

# Or CPU acceleration (macOS and Linux)
faster_diffbloch.enable(device="cpu")

# Run standard diffBloch code
import diffBloch
# All propagate and matrix_exp calls now route through faster-diffBloch

Metadata

Release files for faster-diffbloch 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for faster-diffbloch 0.1.3
File Size Uploaded Provenance Actions
faster_diffbloch-0.1.3.tar.gz 24.0 kB Without provenance Details for faster_diffbloch-0.1.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for faster-diffbloch 0.1.3
File Interpreter ABI Platform Actions
faster_diffbloch-0.1.3-py3-none-any.whl Python 3 none any Details for faster_diffbloch-0.1.3-py3-none-any.whl

Total release size: 52.1 kB

Release files / faster_diffbloch-0.1.3.tar.gz

Download URL faster_diffbloch-0.1.3.tar.gz
Size 24.0 kB
Tags Source
SHA-256 checksum
How to use checksums
ef5b122708e216e52b8406490b5f109eff4b1fcaf6485efe5a35d86db049cefa
BLAKE2b-256 checksum
How to use checksums
74f68bfeea1c1a233969fda68a6d8fb82c3f6daafd6d8657a9c96a7ee8058f34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / faster_diffbloch-0.1.3-py3-none-any.whl

Download URL faster_diffbloch-0.1.3-py3-none-any.whl
Size 28.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b2bc5abff65bd9cfc53ab1513747c9230f6043fc05bf9cdb7d21d0dc70bc74d2
BLAKE2b-256 checksum
How to use checksums
8d3aa09b329398871c6774f97673618466b4d1aacc6f7a1bdb13a81633530374
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for faster-diffbloch 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page