Cross-vendor GPU FFT for Python: cuFFT (NVIDIA) and VkFFT (AMD/Intel/Apple/NVIDIA) under one API.
Project description
gpufft (Python)
Cross-vendor GPU FFT for Python. One API over two battle-tested libraries:
- cuFFT on NVIDIA (
backend="cuda") - VkFFT on any Vulkan device (
backend="vulkan"): AMD, Intel, Apple Silicon (MoltenVK), NVIDIA
pip install gpufft
import numpy as np
import gpufft
x = (np.random.randn(4096) + 1j * np.random.randn(4096)).astype(np.complex64)
# NVIDIA via cuFFT
X = gpufft.fft.fft_1d_c2c_pow2(x, log_n=12, backend="cuda")
# Same call on any Vulkan GPU via VkFFT
X = gpufft.fft.fft_1d_c2c_pow2(x, log_n=12, backend="vulkan")
# Arbitrary (non-power-of-two) sizes
y = (np.random.randn(1000) + 1j * np.random.randn(1000)).astype(np.complex64)
Y = gpufft.fft.fft_1d_c2c(y, n=1000, backend="cuda")
The fft_1d_c2c_pow2 signature matches
ferrum-gpu's, so code written against
one package runs on the other. ferrum-gpu is the pure-Rust kernel path
(transparent, hackable); gpufft is the vendor-library path (near-parity
performance, cross-vendor today).
Persistent device handles
dev = gpufft.cuda.Device(0) # or gpufft.vulkan.Device(0)
X = gpufft.fft.fft_1d_c2c_pow2(x, log_n=12, device=dev)
Runtime requirements
- NVIDIA path: an NVIDIA driver providing
libcufft.so(CUDA 13.x). - Vulkan path: a Vulkan 1.x loader (
libvulkan.so.1) and an installed ICD.
Neither library is bundled; both are loaded from the system at runtime.
Status
This release ships 1D complex-to-complex transforms on both backends.
2D/3D, real transforms (R2C/C2R), and f64 are on the roadmap.
Apache-2.0.
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 Distributions
Built Distribution
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 gpufft-0.1.3-cp310-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: gpufft-0.1.3-cp310-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.10+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
027a06c6e4c735946cf084a2fd2e23c6231e7ac8a1aab9035caee4ab54574cf6
|
|
| MD5 |
fc480ce76e863860dbaf321a79e9fbec
|
|
| BLAKE2b-256 |
37227cd947c80af1790a2828393d381b9fed08d0ef645c8fb1ebec30a679aa12
|
Provenance
The following attestation bundles were made for gpufft-0.1.3-cp310-abi3-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on alejandro-soto-franco/gpufft
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gpufft-0.1.3-cp310-abi3-manylinux_2_28_x86_64.whl -
Subject digest:
027a06c6e4c735946cf084a2fd2e23c6231e7ac8a1aab9035caee4ab54574cf6 - Sigstore transparency entry: 1686698482
- Sigstore integration time:
-
Permalink:
alejandro-soto-franco/gpufft@2303d8623258bed18e5dfb1b75d6d332f993c704 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/alejandro-soto-franco
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2303d8623258bed18e5dfb1b75d6d332f993c704 -
Trigger Event:
release
-
Statement type: