Make transforms work on CUDA arrays #48
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR allows performing FFTs on
CuArray
s.Concretely, it's now possible to create and apply
PencilFFTPlan
s on CUDA arrays.Here is a short example:
For now this has only been tested on a few CPU processes and single GPU using CUDA.
I'm not yet sure if this actually gives correct results, but it's a start.For correct results, this also needs jipolanco/PencilArrays.jl#65, which will be included in PencilArrays v0.17.5.It would be great if this could be tested on multi-GPU configurations.
Note that an explicit dependency on CUDA.jl is not needed, since functions like
plan_rfft(::CuArray, args...)
automatically dispatch to CuFFT functions. The only minor issue is that those functions don't support keyword arguments (such asflags = FFTW.MEASURE
, which may be passed to FFTW plans), which is one of the reasons why creating plans onCuArrays
used to fail before this PR.This should hopefully close #3.