Skip to main content

sgnl-cpu-interp

Fast polyphase resampling for multichannel data with multi-architecture SIMD support

pipeline coverage pypi version


Features

  • Multi-Architecture SIMD: Automatic runtime CPU detection with optimized kernels for:
    • x86_64: AVX-512, AVX2+FMA, AVX, SSE4.1, SSE2
    • ARM64: NEON (Apple Silicon, AWS Graviton, etc.)
    • Fallback: Optimized scalar implementation
  • No External Dependencies: Only requires NumPy (removed GSL and FFTW dependencies)
  • High Performance: ~5x faster than GSL-based implementations
  • Multichannel: Optimized for processing many channels simultaneously (tested with 1024+ channels)
  • Quality: Lanczos-windowed sinc interpolation for high-quality upsampling
  • Two Memory Layouts: Supports both (time, channels) and (channels, time) layouts
  • Simple API: Easy-to-use NumPy-based interface

Installation

From PyPI (when available)

pip install sgnl-cpu-interp

Binary wheels are built in CI for:

Platform Architecture Minimum version
Linux x86_64, aarch64 glibc 2.28 / manylinux_2_28 (e.g. RHEL/Rocky 8, Debian 10, Ubuntu 18.10)
macOS x86_64 macOS 13 (Ventura)
macOS arm64 macOS 15 (Sequoia)

From source

git clone https://git.ligo.org/greg/fast-resample-cpu.git
cd fast-resample-cpu
pip install .

No external dependencies are required beyond NumPy and a C compiler; the build backend (scikit-build-core) provisions CMake and Ninja automatically if they are not already installed. The build detects your CPU architecture and compiles the appropriate SIMD kernels; the best implementation is selected at runtime.

Quick Start

import numpy as np
from sgnl_cpu_interp import upsample, get_simd_info

# Check which SIMD implementation is being used
print(get_simd_info())
# {'implementation': 'NEON', 'available': ['NEON', 'Scalar'], 'cpu_features': 'NEON+FMA'}

# Upsample a 50 Hz sine wave from 128 Hz to 2048 Hz
fs_in = 128
fs_out = 2048
factor = fs_out // fs_in  # 16x upsampling

# Generate test signal
t = np.arange(0, 0.5, 1/fs_in)
signal = np.sin(2 * np.pi * 50 * t).astype(np.float32)

# Upsample
upsampled = upsample(signal, factor=factor, half_length=8)
print(f"Input: {len(signal)} samples at {fs_in} Hz")
print(f"Output: {len(upsampled)} samples at {fs_out} Hz")

Usage Examples

Single channel upsampling

import numpy as np
from sgnl_cpu_interp import upsample

# 1D signal (single channel)
signal = np.random.randn(1024).astype(np.float32)
upsampled = upsample(signal, factor=2)

Multichannel upsampling

# 2D array: (n_samples, n_channels)
n_samples, n_channels = 1024, 128
data = np.random.randn(n_samples, n_channels).astype(np.float32)

# Upsample by factor of 2
upsampled = upsample(data, factor=2)
print(upsampled.shape)  # (2016, 128) - note: loses 2*half_length samples

# Upsample by factor of 4 with longer kernel for better quality
upsampled = upsample(data, factor=4, half_length=16)
print(upsampled.shape)  # (3972, 128)

Transposed layout

from sgnl_cpu_interp import upsample_transposed

# Transposed layout: (n_channels, n_samples)
data = np.random.randn(128, 1024).astype(np.float32)
upsampled = upsample_transposed(data, factor=2)
print(upsampled.shape)  # (128, 2016)

API Reference

upsample(data, factor=2, half_length=8)

Upsample multichannel data using polyphase filtering (standard layout).

Parameters:

  • data (ndarray): Input array of shape (n_samples,) for single channel or (n_samples, n_channels) for multichannel. float32, float64, complex64, and complex128 are processed natively and preserved in the output; any other dtype is converted to float32. Complex data is resampled by filtering the real and imaginary parts independently with the same real kernel.
  • factor (int, optional): Upsampling factor (default: 2). Must be >= 2.
  • half_length (int, optional): Half-length of the sinc kernel (default: 8). Larger values provide better quality but are slower. Total kernel length = 2 * half_length + 1.

Returns:

  • output (ndarray): Upsampled array of shape ((n_samples - kernel_len + 1) * factor,) or ((n_samples - kernel_len + 1) * factor, n_channels) where kernel_len = 2 * half_length + 1. Same dtype as the (possibly converted) input.

upsample_transposed(data, factor=2, half_length=8)

Upsample multichannel data using polyphase filtering (transposed layout).

Same as upsample() but expects input in (n_channels, n_samples) layout. Use this when your data is already in channels-first format to avoid transpose overhead.

Parameters:

  • data (ndarray): Input array of shape (n_channels, n_samples). Must be 2D; float32, float64, complex64, and complex128 are processed natively and preserved, other dtypes are converted to float32.
  • factor (int, optional): Upsampling factor (default: 2). Must be >= 2.
  • half_length (int, optional): Half-length of the sinc kernel (default: 8).

Returns:

  • output (ndarray): Upsampled array of shape (n_channels, (n_samples - kernel_len + 1) * factor).

downsample(data, factor=2, half_length=8)

Downsample multichannel data with an anti-aliasing FIR filter (standard layout).

The signal is filtered with a Lanczos-windowed sinc lowpass (cutoff at the output Nyquist, unit DC gain) and decimated in a single pass — only every factor-th output is computed. Any integer factor >= 2 is supported (e.g. factor=1024 for 16384 Hz -> 16 Hz).

Parameters:

  • data (ndarray): Input array of shape (n_samples,) or (n_samples, n_channels). float32, float64, complex64, and complex128 are processed natively and preserved; other dtypes are converted to float32.
  • factor (int, optional): Downsampling factor (default: 2). Must be >= 2.
  • half_length (int, optional): Filter half-length parameter (default: 8). The filter has 2 * half_length * factor + 1 taps.

Returns:

  • output (ndarray): Downsampled array of length (n_samples - kernel_len) // factor + 1 per channel, where kernel_len = 2 * half_length * factor + 1. The group delay is exactly half_length * factor input samples.

downsample_transposed(data, factor=2, half_length=8)

Same as downsample() but expects (n_channels, n_samples) layout.

get_simd_info()

Get information about the current SIMD implementation.

Returns:

  • dict with keys:
    • implementation: Name of current implementation (e.g., 'AVX2+FMA', 'NEON', 'Scalar')
    • available: List of all available implementations for this CPU
    • cpu_features: Detected CPU SIMD features

set_implementation(name)

Manually select a SIMD implementation. Useful for testing and benchmarking.

Parameters:

  • name (str): Implementation name from get_simd_info()['available']

Can also be set via the SGNL_CPU_IMPL environment variable:

SGNL_CPU_IMPL=Scalar python my_script.py

Important Notes

  • Edge loss: The convolution loses kernel_len - 1 samples from the edges. For half_length=8, you lose 16 input samples.
  • Time alignment: The output has a delay of (kernel_len - 1) / 2 samples at the input sample rate.
  • Minimum length: Input must have at least kernel_len samples.
  • Uses Lanczos-windowed sinc kernel: h(x) = sinc(x/factor) * sinc(x/kernel_length)

Performance

Benchmark on 1024 channels, 1024 samples:

Platform Implementation Time Notes
Apple Silicon (M-series) NEON ~0.4 ms Auto-selected
Apple Silicon Scalar ~0.4 ms Compiler auto-vectorizes well
x86_64 (Haswell+) AVX2+FMA ~0.3 ms Expected
x86_64 (older) SSE2 ~0.8 ms Baseline x86_64

Comparison with previous GSL-based implementation:

Implementation Time Speedup
GSL BLAS (old) 9.8 ms 1.0x
This package 0.4 ms ~25x

Architecture

The package automatically detects CPU features at module load time and selects the best available implementation:

┌─────────────────────────────────────────────────────────┐
│                    Python API                           │
│         upsample() / upsample_transposed()              │
└─────────────────────────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────┐
│                  Runtime Dispatch                        │
│         cpu_detect() → select best implementation        │
└─────────────────────────────────────────────────────────┘
                           │
          ┌────────────────┼────────────────┐
          ▼                ▼                ▼
    ┌──────────┐    ┌──────────┐    ┌──────────┐
    │ AVX-512  │    │   NEON   │    │  Scalar  │
    │  AVX2    │    │  (ARM)   │    │(fallback)│
    │   AVX    │    └──────────┘    └──────────┘
    │  SSE4.1  │
    │  SSE2    │
    │  (x86)   │
    └──────────┘

Development

Environment

Any C toolchain and Python >= 3.10 will do:

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Alternatively, a nix flake provides a self-contained development environment (C toolchain, CMake, Ninja, Python, uv):

nix develop
uv venv --seed
uv pip install -e ".[dev]"

Building and testing

make build         # rebuild the C extension and reinstall (editable, incremental)
make test          # run the test suite
make lint          # linter
make format        # code formatter
make type-check    # static type checker
make bench         # downsample benchmark vs scipy (needs pip install ".[bench]")

The C extension is built with scikit-build-core + CMake; per-kernel SIMD flags live in CMakeLists.txt.

Project structure

fast-resample-cpu/
├── csrc/
│   ├── cpu_detect.c      # Runtime CPU feature detection
│   ├── dispatch.c        # Function pointer dispatch table
│   ├── resample_ext_simd.c  # Python extension wrapper
│   └── kernels/
│       ├── convolve_scalar.c   # Baseline implementation
│       ├── convolve_sse2.c     # x86 SSE2
│       ├── convolve_sse4.c     # x86 SSE4.1
│       ├── convolve_avx.c      # x86 AVX
│       ├── convolve_avx2.c     # x86 AVX2+FMA
│       ├── convolve_avx512.c   # x86 AVX-512
│       └── convolve_neon.c     # ARM NEON
├── src/
│   └── sgnl_cpu_interp/  # Python API
├── CMakeLists.txt        # C extension build configuration
├── pyproject.toml        # Package metadata and build backend
└── tests/                # Test suite

Adding a new SIMD implementation

  1. Create csrc/kernels/convolve_<name>.c implementing convolve_<name>() and convolve_transposed_<name>()
  2. Add the implementation to the dispatch table in csrc/dispatch.c
  3. Add per-file compile flags in CMakeLists.txt (see the existing set_source_files_properties calls)
  4. Add CPU feature detection if needed in csrc/cpu_detect.c

Algorithm

This implementation uses polyphase filtering for efficient upsampling:

  1. Kernel generation: Creates a Lanczos-windowed sinc kernel and splits it into factor polyphase components
  2. SIMD convolution: Vectorized dot product across channels (standard layout) or time samples (transposed layout)
  3. Phase-blocked upsampling: Processes all output samples with the same phase together to maximize kernel data reuse in cache

The approach is specifically optimized for:

  • Many channels (100+)
  • Small to moderate upsampling factors (2-16x)
  • Short to medium input lengths (100s to 1000s of samples)

License

MIT License - see LICENSE file for details.

Contributing

Contributions welcome! Please open an issue or merge request on git.ligo.org.

Citation

If you use this in research, please cite:

@software{sgnl_cpu_interp,
  title = {sgnl-cpu-interp: Fast polyphase resampling with multi-architecture SIMD},
  url = {https://git.ligo.org/greg/fast-resample-cpu},
  year = {2025}
}

Metadata

Release files for sgnl-cpu-interp 0.2.0

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

Source distribution (sdist)

Source distribution for sgnl-cpu-interp 0.2.0
File Size Uploaded Provenance Actions
sgnl_cpu_interp-0.2.0.tar.gz 19.1 MB Without provenance Details for sgnl_cpu_interp-0.2.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for sgnl-cpu-interp 0.2.0
File Actions
sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_15_0_arm64.whl CPython 3.14 CPython 3.14 macOS 15.0+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_15_0_arm64.whl
sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_13_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 13.0+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_13_0_x86_64.whl
sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_15_0_arm64.whl CPython 3.13 CPython 3.13 macOS 15.0+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_15_0_arm64.whl
sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_13_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 13.0+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_13_0_x86_64.whl
sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_15_0_arm64.whl
sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_13_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 13.0+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_13_0_x86_64.whl
sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_15_0_arm64.whl CPython 3.11 CPython 3.11 macOS 15.0+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_15_0_arm64.whl
sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_13_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 13.0+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_13_0_x86_64.whl
sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_15_0_arm64.whl CPython 3.10 CPython 3.10 macOS 15.0+ ARM64 Details for sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_15_0_arm64.whl
sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_13_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 13.0+ x86-64 Details for sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_13_0_x86_64.whl

Total release size: 20.3 MB

Release files / sgnl_cpu_interp-0.2.0.tar.gz

Download URL sgnl_cpu_interp-0.2.0.tar.gz
Size 19.1 MB
Tags Source
SHA-256 checksum
How to use checksums
4797d1aad89633a027b186dfe498a9ae4cf976e15f8fbbd1f4ab83108e89900e
BLAKE2b-256 checksum
How to use checksums
143a251995c9b369a836b415b173a8b41fe360661da4533a67164ef6a543f3f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 73.6 kB
Tags CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
97f8b09b482d85d8e6061e965c60e4909d8f39bfb70ff6c5173678b10f2a7903
BLAKE2b-256 checksum
How to use checksums
9fcb452483e81aecedc03dee0d5e2efcfebeffb0c2e9a7d65736a9b69cfbc9cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 41.4 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a24a47300f0b3a164ef77c45c794165717e99f4bae4031b1bfcf7e3f1b911d3d
BLAKE2b-256 checksum
How to use checksums
cee9b8ce8daea4a277b926156c3aaee952493863854d68573bb57b577433c92d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_15_0_arm64.whl

Download URL sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_15_0_arm64.whl
Size 44.4 kB
Tags CPython 3.14 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
c0b58a80e578db2c02fe069e03cd7f1c3ed98fe20332d292e0327ee3e50e0fcc
BLAKE2b-256 checksum
How to use checksums
bd301a11141b04f57624b4b2f4f1c84ee54efc917fd69629cca2c6a95e65b738
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_13_0_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_13_0_x86_64.whl
Size 89.4 kB
Tags CPython 3.14 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
6c1be36374b3d75800f97911b7abeca28812bef76628db9db7763c91c9ccd820
BLAKE2b-256 checksum
How to use checksums
1dd96f0801fedb5782bb42476d962e67c3f85bca8e831b0c7e1298575b95e021
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 73.6 kB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
54a3b2f65b2de32fcacf47895cee464d4593051ed2a29f71f54d2de43248a8fb
BLAKE2b-256 checksum
How to use checksums
dbea65267fa5513f57f54af7bbd81d2e06dfc3f57960f43fe9707380cc9bafa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 41.4 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
328f97dd0baafbc0768fbf06f261b8f70e7d3009a5319f50386bc5a2ae253ec6
BLAKE2b-256 checksum
How to use checksums
9fd5b1e9b8f7974d5c0437b54cfe5bf3dd856a2e51f47fd9e3874fc039b0ce07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_15_0_arm64.whl

Download URL sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_15_0_arm64.whl
Size 44.4 kB
Tags CPython 3.13 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
9deae4e4f23ecb6a22d37f08f47dd4500587f1c4c682af0bc600a8bdc5456735
BLAKE2b-256 checksum
How to use checksums
3e7a4c11163608082eb7e627d8b0538faad8c8439390bbecc50261ca13a2c91c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_13_0_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_13_0_x86_64.whl
Size 89.2 kB
Tags CPython 3.13 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
ef66a863fcc1e2c8c7545d1b0e06eaee78acef3f6b97eaa9a7bf6bd56502b20f
BLAKE2b-256 checksum
How to use checksums
56d22e43b5cd94ce1d458321bbf3f81399b4d1d136ec1886d80567c0e5d5eec2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 73.6 kB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9e6593b11b9a5d6176829a099c8ab05620e50bf15aa00e0f0dec78b41fb3913a
BLAKE2b-256 checksum
How to use checksums
1c1e626625ff20e7a629fe0d82d905efd448bc7a84cc7d944454f656b1dd1f0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 41.4 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
18e55af9492afe8bbdec6e2efffd6575f456e6f58032754dee3324a00aef03df
BLAKE2b-256 checksum
How to use checksums
1d9d62bdf63a2a36a362ec406998e42c405dfbc474e72be32ab1524c65ab790e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_15_0_arm64.whl

Download URL sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_15_0_arm64.whl
Size 44.4 kB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
0f79729fae0c539b649526c3097b18dcc9e8233fb69b1309b7603fa2264114c7
BLAKE2b-256 checksum
How to use checksums
1aec9f67c7839789ffd241aa43f88e23fd27cc2e69aacc41a26bf493aabcc344
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_13_0_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_13_0_x86_64.whl
Size 89.3 kB
Tags CPython 3.12 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
fc3c0bb1f805ef269e81bc6e1b1b3807dffb8c117f952705e17cedf476d06dab
BLAKE2b-256 checksum
How to use checksums
b2165b4aa20f92ab0ec0389f3bb5b33fa15e3210214d7fa439f2b6c66a1d6c1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 73.6 kB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
18c950c808ce4f679351047e5058dcebfb711219b72462c51da376437057124c
BLAKE2b-256 checksum
How to use checksums
5c9a21f9198f87907b3cefa59721ee1a43179dc82d86eae03f3e56e62037fc50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 41.3 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d1ac38a6e449782ff0cf4563d8e0c8b82c30ad611c3a90f0c8639b17ed782d4e
BLAKE2b-256 checksum
How to use checksums
7cbc2abe16d77a17f810176b2617d447609432a1758dd7d71357472b2d310382
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_15_0_arm64.whl

Download URL sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_15_0_arm64.whl
Size 44.3 kB
Tags CPython 3.11 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
077d3fe09cb351ffc89cedf6ea84b424637b5fcee09a7578f8967c46322a3ba4
BLAKE2b-256 checksum
How to use checksums
235366f244920f3ef032d20b4480a442a9a26bf312476dc2112e3ee70b5bbc17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_13_0_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_13_0_x86_64.whl
Size 89.2 kB
Tags CPython 3.11 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
66d6a2db691b641980ea8fd143bca3bc08e7a3a149010c321e8aa8f733afaeb0
BLAKE2b-256 checksum
How to use checksums
0b0c1b85c6c8284a3c67cc08e262f2fb3f49d90c9096c39bbf82edffa2c2ae7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 73.6 kB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6add46d0ccda3b04133910b28c89db1a208b612d9f3ca99c8386a870ce9b7af2
BLAKE2b-256 checksum
How to use checksums
b4fe1895b9dc5768bc1960f0a584d895e299ec6f3a9de90991319b6702e28bed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 41.3 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3825da2d8d5e7d14c5ca775d37ebce1512b281631b037edafc935b32165617c1
BLAKE2b-256 checksum
How to use checksums
a0ab7ce78f80a208c144f673ad1120ae34022605c0aae5a916a7eec971fd4eb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_15_0_arm64.whl

Download URL sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_15_0_arm64.whl
Size 44.3 kB
Tags CPython 3.10 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
8c27ca602654fa91f538314b604375669bf0d935efaa1a2321fa340396fa0ff1
BLAKE2b-256 checksum
How to use checksums
86c9265ec1ab1b417ef43add10bf33bcb108e379f0c69482a32893b09f23b607
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_13_0_x86_64.whl

Download URL sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_13_0_x86_64.whl
Size 89.2 kB
Tags CPython 3.10 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
8187811ffe54ac42742b4bf670f8f9b82a1891f81f945e8ac90e3ec7b51c2705
BLAKE2b-256 checksum
How to use checksums
43ef91fb5ca3872f338e58da2f8a8817964302b2f87dab88984194e8eb35d6f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Security for sgnl-cpu-interp 0.2.0

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.

Release history Release notifications | RSS feed

This release

0.2.0 This release

21 release files No provenance

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