You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support transforms over odd number. The number of points for FFT direction is limited to be even number (so that the size after transform would be n/2+1) (identity tests on odd numbers #21)
More static assertions. Particularly, we assume that the In and Out Views have same Layout and ranks, which should be checked. (Add more static assertions #26)
Introduce ExecSpace as a template argument as well as DDC. This allows the coexistence of fft helpers for both host and device (Exec space as arg #12):
// As a template parameter
KokkosFFT::fft<Kokkos::OpenMP>(a, out); // a and out are on Host or Device is CPU
KokkosFFT::fft<Kokkos::Cuda>(a, out); // a and out are on Device
// As an argument
KokkosFFT::fft(Kokkos::OpenMP(), a, out); // a and out are on Host or Device is CPU
KokkosFFT::fft(Kokkos::Cuda(), a, out); // a and out are on Device
We can also make a check for memory and exec space consistency by
static_assert(
Kokkos::SpaceAccessibility<ExecSpace, MemorySpace>::accessible,
"MemorySpace has to be accessible for ExecutionSpace."
);
Add capability to reuse plans. This is particularly important for NVIDIA GPUs, which has some overheads to create plans (Reuse plan #19)
Management of default arguments. As well as numpy, I would like to allow the function calls with minimum overloading (Reuse plan #19)
KokkosFFT::fft(execution_space(), a, out);
KokkosFFT::fft(execution_space(), a, out, /*axis=*/-1);
KokkosFFT::fft(execution_space(), a, out, /*n=*/n0);
KokkosFFT::fft(execution_space(), a, out, KokkosFFT::FFT_Normalization::BACKWARD);
KokkosFFT::fft(execution_space(), a, out, KokkosFFT::FFT_Normalization::BACKWARD, /*axis=*/*-1);
KokkosFFT::fft2(execution_space(), a, out, KokkosFFT::FFT_Normalization::BACKWARD, /*axes=*/axes_type{-2, -1});
KokkosFFT::fft(execution_space(), a, out, plan, KokkosFFT::FFT_Normalization::BACKWARD, /*axis=*/-1);
Particularly, it is difficult to distinguish n and axis, where n is a size_t type and axis is an int type.
Introduce the Impl namespace to disallow users to access implementation details (Impl namespace #13)
Add capability to call KokkosFFT APIs from both host and device. This is not quite useful so I will make it optional. (FFT on Host and Device #18)
using execution_space = Kokkos::DefaultExecutionSpace;
using host_execution_space = Kokkos::DefaultHostExecutionSpace;
KokkosFFT::fft(execution_space(), a, out); // Calling FFTs on Device
KokkosFFT::fft(host_execution_space(), h_a, h_out); // Calling FFTs on Host
Here are the current lists from #8 (comment).
__KOKKOSFFT_NORMALIZATION_HPP__
(Cleanup #8)FFT_Normalization
toNormalization
because they are already underKokkosFFT
namespace (Cleanup #8)We can also make a check for memory and exec space consistency by
Particularly, it is difficult to distinguish
n
andaxis
, wheren
is asize_t
type and axis is anint
type.Impl
namespace to disallow users to access implementation details (Impl namespace #13)perf_test
withgooglebenchmark
(Add benchmark #41)Thanks a lot for your help! @pzehner
Kokkos::Threads
support (Looks for FFTW when Kokkos::Threads is enabled #31, Add threads backend #46)The remaining issues which may be important in the future
LayoutRight
are created and the strided Views are copied into these buffers. #58The text was updated successfully, but these errors were encountered: