[x] define PencilFFTPlan constructor taking an existing PencilArray;
[ ] define planner functions, such as plan_fft, as wrappers of PencilFFTPlan constructor. Also extend r2r plans included in FFTW.jl;
[ ] make sure that fft(A::PencilArray, [dims]) (and similar functions) works as expected, returning another PencilArray;
[ ] define plan inverse as described in the AbstractFFTs docs (this is more difficult...).
Note that in-place transforms are more difficult via this interface, since they can't be performed directly on a PencilArray. This is because, in general, the size of the data held by a MPI process varies from input to output, even for complex-to-complex transforms (where the global size stays the same).
Things to do:
[x] define
PencilFFTPlan
constructor taking an existingPencilArray
;[ ] define planner functions, such as
plan_fft
, as wrappers ofPencilFFTPlan
constructor. Also extend r2r plans included in FFTW.jl;[ ] make sure that
fft(A::PencilArray, [dims])
(and similar functions) works as expected, returning anotherPencilArray
;[ ] define plan inverse as described in the AbstractFFTs docs (this is more difficult...).
Note that in-place transforms are more difficult via this interface, since they can't be performed directly on a
PencilArray
. This is because, in general, the size of the data held by a MPI process varies from input to output, even for complex-to-complex transforms (where the global size stays the same).