Fast polyphase resampling with multi-architecture SIMD support
Project description
sgnl-cpu-interp
Fast polyphase resampling for multichannel data with multi-architecture SIMD support
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)wherekernel_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 has2 * half_length * factor + 1taps.
Returns:
output(ndarray): Downsampled array of length(n_samples - kernel_len) // factor + 1per channel, wherekernel_len = 2 * half_length * factor + 1. The group delay is exactlyhalf_length * factorinput 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:
dictwith keys:implementation: Name of current implementation (e.g., 'AVX2+FMA', 'NEON', 'Scalar')available: List of all available implementations for this CPUcpu_features: Detected CPU SIMD features
set_implementation(name)
Manually select a SIMD implementation. Useful for testing and benchmarking.
Parameters:
name(str): Implementation name fromget_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 - 1samples from the edges. Forhalf_length=8, you lose 16 input samples. - Time alignment: The output has a delay of
(kernel_len - 1) / 2samples at the input sample rate. - Minimum length: Input must have at least
kernel_lensamples. - 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
- Create
csrc/kernels/convolve_<name>.cimplementingconvolve_<name>()andconvolve_transposed_<name>() - Add the implementation to the dispatch table in
csrc/dispatch.c - Add per-file compile flags in
CMakeLists.txt(see the existingset_source_files_propertiescalls) - Add CPU feature detection if needed in
csrc/cpu_detect.c
Algorithm
This implementation uses polyphase filtering for efficient upsampling:
- Kernel generation: Creates a Lanczos-windowed sinc kernel and splits it into
factorpolyphase components - SIMD convolution: Vectorized dot product across channels (standard layout) or time samples (transposed layout)
- 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}
}
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sgnl_cpu_interp-0.2.0.tar.gz.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0.tar.gz
- Upload date:
- Size: 19.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4797d1aad89633a027b186dfe498a9ae4cf976e15f8fbbd1f4ab83108e89900e
|
|
| MD5 |
569d5e049b8aa631ba60d5fc91eb3501
|
|
| BLAKE2b-256 |
143a251995c9b369a836b415b173a8b41fe360661da4533a67164ef6a543f3f6
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 73.6 kB
- Tags: CPython 3.14, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97f8b09b482d85d8e6061e965c60e4909d8f39bfb70ff6c5173678b10f2a7903
|
|
| MD5 |
d3b4321df3ac926c38e23f12d513c8d8
|
|
| BLAKE2b-256 |
9fcb452483e81aecedc03dee0d5e2efcfebeffb0c2e9a7d65736a9b69cfbc9cb
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 41.4 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a24a47300f0b3a164ef77c45c794165717e99f4bae4031b1bfcf7e3f1b911d3d
|
|
| MD5 |
df2773b0d491d6ba7ea3514de1005141
|
|
| BLAKE2b-256 |
cee9b8ce8daea4a277b926156c3aaee952493863854d68573bb57b577433c92d
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_15_0_arm64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_15_0_arm64.whl
- Upload date:
- Size: 44.4 kB
- Tags: CPython 3.14, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0b58a80e578db2c02fe069e03cd7f1c3ed98fe20332d292e0327ee3e50e0fcc
|
|
| MD5 |
c481205fc318bd0b2d418a9c07d4dde8
|
|
| BLAKE2b-256 |
bd301a11141b04f57624b4b2f4f1c84ee54efc917fd69629cca2c6a95e65b738
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_13_0_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp314-cp314-macosx_13_0_x86_64.whl
- Upload date:
- Size: 89.4 kB
- Tags: CPython 3.14, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c1be36374b3d75800f97911b7abeca28812bef76628db9db7763c91c9ccd820
|
|
| MD5 |
3e79ee2e762f233a92a8ca2ed4c109c2
|
|
| BLAKE2b-256 |
1dd96f0801fedb5782bb42476d962e67c3f85bca8e831b0c7e1298575b95e021
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 73.6 kB
- Tags: CPython 3.13, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54a3b2f65b2de32fcacf47895cee464d4593051ed2a29f71f54d2de43248a8fb
|
|
| MD5 |
498870d56b677f0fd25e79880e5bb1b7
|
|
| BLAKE2b-256 |
dbea65267fa5513f57f54af7bbd81d2e06dfc3f57960f43fe9707380cc9bafa5
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 41.4 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
328f97dd0baafbc0768fbf06f261b8f70e7d3009a5319f50386bc5a2ae253ec6
|
|
| MD5 |
aaac75c932b33723a7e4b6fc0bfee9df
|
|
| BLAKE2b-256 |
9fd5b1e9b8f7974d5c0437b54cfe5bf3dd856a2e51f47fd9e3874fc039b0ce07
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_15_0_arm64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_15_0_arm64.whl
- Upload date:
- Size: 44.4 kB
- Tags: CPython 3.13, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9deae4e4f23ecb6a22d37f08f47dd4500587f1c4c682af0bc600a8bdc5456735
|
|
| MD5 |
b47006b5a649c291230969835eb4e598
|
|
| BLAKE2b-256 |
3e7a4c11163608082eb7e627d8b0538faad8c8439390bbecc50261ca13a2c91c
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_13_0_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp313-cp313-macosx_13_0_x86_64.whl
- Upload date:
- Size: 89.2 kB
- Tags: CPython 3.13, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef66a863fcc1e2c8c7545d1b0e06eaee78acef3f6b97eaa9a7bf6bd56502b20f
|
|
| MD5 |
3a61818fe1c8a93df077fce0a2c5e8f7
|
|
| BLAKE2b-256 |
56d22e43b5cd94ce1d458321bbf3f81399b4d1d136ec1886d80567c0e5d5eec2
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 73.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e6593b11b9a5d6176829a099c8ab05620e50bf15aa00e0f0dec78b41fb3913a
|
|
| MD5 |
466fee7a970ca781c71d026915af3637
|
|
| BLAKE2b-256 |
1c1e626625ff20e7a629fe0d82d905efd448bc7a84cc7d944454f656b1dd1f0c
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 41.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18e55af9492afe8bbdec6e2efffd6575f456e6f58032754dee3324a00aef03df
|
|
| MD5 |
55c947e88266fb71a002175b133ede4d
|
|
| BLAKE2b-256 |
1d9d62bdf63a2a36a362ec406998e42c405dfbc474e72be32ab1524c65ab790e
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_15_0_arm64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_15_0_arm64.whl
- Upload date:
- Size: 44.4 kB
- Tags: CPython 3.12, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f79729fae0c539b649526c3097b18dcc9e8233fb69b1309b7603fa2264114c7
|
|
| MD5 |
b3c63298ed2639fda69478e3366cde30
|
|
| BLAKE2b-256 |
1aec9f67c7839789ffd241aa43f88e23fd27cc2e69aacc41a26bf493aabcc344
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_13_0_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp312-cp312-macosx_13_0_x86_64.whl
- Upload date:
- Size: 89.3 kB
- Tags: CPython 3.12, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc3c0bb1f805ef269e81bc6e1b1b3807dffb8c117f952705e17cedf476d06dab
|
|
| MD5 |
70c3e7d78d919d456e2362bb717d5db0
|
|
| BLAKE2b-256 |
b2165b4aa20f92ab0ec0389f3bb5b33fa15e3210214d7fa439f2b6c66a1d6c1e
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 73.6 kB
- Tags: CPython 3.11, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18c950c808ce4f679351047e5058dcebfb711219b72462c51da376437057124c
|
|
| MD5 |
22aa872d4a1e7305d876cd1e8af77c53
|
|
| BLAKE2b-256 |
5c9a21f9198f87907b3cefa59721ee1a43179dc82d86eae03f3e56e62037fc50
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 41.3 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1ac38a6e449782ff0cf4563d8e0c8b82c30ad611c3a90f0c8639b17ed782d4e
|
|
| MD5 |
c6a23aab7d2ecfa8f394e6ce92618629
|
|
| BLAKE2b-256 |
7cbc2abe16d77a17f810176b2617d447609432a1758dd7d71357472b2d310382
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_15_0_arm64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_15_0_arm64.whl
- Upload date:
- Size: 44.3 kB
- Tags: CPython 3.11, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
077d3fe09cb351ffc89cedf6ea84b424637b5fcee09a7578f8967c46322a3ba4
|
|
| MD5 |
dfd9e4e46e64dffdfc191264b8b9e949
|
|
| BLAKE2b-256 |
235366f244920f3ef032d20b4480a442a9a26bf312476dc2112e3ee70b5bbc17
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_13_0_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp311-cp311-macosx_13_0_x86_64.whl
- Upload date:
- Size: 89.2 kB
- Tags: CPython 3.11, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66d6a2db691b641980ea8fd143bca3bc08e7a3a149010c321e8aa8f733afaeb0
|
|
| MD5 |
acd09bd91f6e71b790749ad9cb196a2a
|
|
| BLAKE2b-256 |
0b0c1b85c6c8284a3c67cc08e262f2fb3f49d90c9096c39bbf82edffa2c2ae7a
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 73.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6add46d0ccda3b04133910b28c89db1a208b612d9f3ca99c8386a870ce9b7af2
|
|
| MD5 |
7a1cbf0c4254e3794ca6b4ea4f3b9342
|
|
| BLAKE2b-256 |
b4fe1895b9dc5768bc1960f0a584d895e299ec6f3a9de90991319b6702e28bed
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 41.3 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3825da2d8d5e7d14c5ca775d37ebce1512b281631b037edafc935b32165617c1
|
|
| MD5 |
bde4b6004376a209884296eb21a01bdb
|
|
| BLAKE2b-256 |
a0ab7ce78f80a208c144f673ad1120ae34022605c0aae5a916a7eec971fd4eb7
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_15_0_arm64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_15_0_arm64.whl
- Upload date:
- Size: 44.3 kB
- Tags: CPython 3.10, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c27ca602654fa91f538314b604375669bf0d935efaa1a2321fa340396fa0ff1
|
|
| MD5 |
e2afcf0323de425fd94e8bdaaa762682
|
|
| BLAKE2b-256 |
86c9265ec1ab1b417ef43add10bf33bcb108e379f0c69482a32893b09f23b607
|
File details
Details for the file sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_13_0_x86_64.whl.
File metadata
- Download URL: sgnl_cpu_interp-0.2.0-cp310-cp310-macosx_13_0_x86_64.whl
- Upload date:
- Size: 89.2 kB
- Tags: CPython 3.10, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8187811ffe54ac42742b4bf670f8f9b82a1891f81f945e8ac90e3ec7b51c2705
|
|
| MD5 |
0eba8355d4edca8c8c03f4353f78b55f
|
|
| BLAKE2b-256 |
43ef91fb5ca3872f338e58da2f8a8817964302b2f87dab88984194e8eb35d6f2
|