VkFFTCUDA.jl

Julia bindings for VkFFT
Author PaulVirally
Popularity
3 Stars
Updated Last
10 Months Ago
Started In
January 2024

VkFFTCUDA.jl

Julia bindings for VkFFT.

⚠️ WARNING: These bindings are very barebones and do not fully implement all the functionality exposed by VkFFT. These bindings only expose multidimensional C2C FFTs so far.

Installation

using Pkg
Pkg.add("VkFFTCUDA")
Pkg.build("VkFFTCUDA")

For now, note that you must build VkFFTCUDA. You will also need to install the CUDA toolkit.

Purpose

This package allows you to do FFTs on CuArrays using VkFFT instead of cuFFT. This can result in significant speed-ups: Benchmark Results

Example

using CUDA, AbstractFFTs, VkFFTCUDA

x = CuArray(ComplexF32.(collect(reshape(1:60, 3, 4, 5))))
ifft(fft(x))  x # Should return true

⚠️ It is very important that you load VkFFTCUDA after CUDA because VkFFTCUDA.jl overwrites some methods provided by CUDA.jl

Documentation

For further documentation, refer to the documentation for AbstractFFTs.jl as VkFFTCUDA.jl uses this API.

Known issues

For arrays with more than 4 dimensions, doing FFTs on more than one of the axes will lead to erroneous results. This is not a problem with VkFFT, but rather with the bindings that will be fixed soon™.

Used By Packages

No packages found.