# gpufft-cuda-sys
Raw FFI bindings to [cuFFT](https://docs.nvidia.com/cuda/cufft/) and the CUDA
Runtime API, generated by `bindgen` against the system CUDA Toolkit. This is
internal plumbing for [`gpufft`](https://crates.io/crates/gpufft); you almost
certainly want that crate, not this one.
[](https://crates.io/crates/gpufft-cuda-sys)
[](https://docs.rs/gpufft-cuda-sys)
[](https://github.com/alejandro-soto-franco/gpufft/blob/main/LICENSE-APACHE)
## What this crate is
- `bindgen`-generated declarations for cuFFT (`cufft.h`) and the subset of
the CUDA Runtime API (`cuda_runtime.h`) that `gpufft` needs for device
allocation, host-device memcpy, and plan dispatch.
- A build script that links `cudart` and `cufft` from the system CUDA
Toolkit.
## What this crate is not
- A safe Rust API. All symbols are `unsafe`. Use `gpufft` for the typed
trait surface.
- A vendored CUDA distribution. This crate requires the CUDA Toolkit and
a matching NVIDIA driver on the build and run hosts.
## Build prerequisites
- CUDA Toolkit 12.x or later, with `cufft.h` and `cuda_runtime.h`
reachable.
- A libclang installation that `bindgen` can load (`libclang.so`).
- NVIDIA driver matching the CUDA runtime at execution time.
The build script searches `CUDA_PATH`, `CUDA_HOME`, then `/usr/local/cuda`.
Set one of the first two to point at a non-default install.
## Licensing
`gpufft-cuda-sys` itself is Apache-2.0. cuFFT and the CUDA Runtime ship
under NVIDIA's CUDA Toolkit EULA and are not redistributed by this crate.
Repository: <https://github.com/alejandro-soto-franco/gpufft>