|
@@ -9,10 +9,10 @@
|
|
|
StarPU provides @code{libstarpufft}, a library whose design is very similar to
|
|
|
both fftw and cufft, the difference being that it takes benefit from both CPUs
|
|
|
and GPUs. It should however be noted that GPUs do not have the same precision as
|
|
|
-CPUs, so the results may different by a negligible amount
|
|
|
+CPUs, so the results may different by a negligible amount.
|
|
|
|
|
|
-float, double and long double precisions are available, with the fftw naming
|
|
|
-convention:
|
|
|
+Different precisions are available, namely float, double and long
|
|
|
+double precisions, with the following fftw naming conventions:
|
|
|
|
|
|
@enumerate
|
|
|
@item double precision structures and functions are named e.g. @code{starpufft_execute}
|
|
@@ -20,7 +20,7 @@ convention:
|
|
|
@item long double precision structures and functions are named e.g. @code{starpufftl_execute}
|
|
|
@end enumerate
|
|
|
|
|
|
-The documentation below uses names for double precision, replace
|
|
|
+The documentation below is given with names for double precision, replace
|
|
|
@code{starpufft_} with @code{starpufftf_} or @code{starpufftl_} as appropriate.
|
|
|
|
|
|
Only complex numbers are supported at the moment.
|
|
@@ -42,6 +42,8 @@ plan. @code{starpufft_start_handle} is preferrable since it does not wait for
|
|
|
the task completion, and thus permits to enqueue a series of tasks.
|
|
|
@end enumerate
|
|
|
|
|
|
+All functions are defined in @ref{FFT Support}.
|
|
|
+
|
|
|
@section Compilation
|
|
|
|
|
|
The flags required to compile or link against the FFT library are accessible
|
|
@@ -54,54 +56,3 @@ $ pkg-config --libs starpufft-1.0 # options for the linker
|
|
|
|
|
|
Also pass the @code{--static} option if the application is to be linked statically.
|
|
|
|
|
|
-@section Initialisation
|
|
|
-
|
|
|
-@deftypefun {void *} starpufft_malloc (size_t @var{n})
|
|
|
-Allocates memory for @var{n} bytes. This is preferred over @code{malloc}, since
|
|
|
-it allocates pinned memory, which allows overlapped transfers.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun {void *} starpufft_free (void *@var{p})
|
|
|
-Release memory previously allocated.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun {struct starpufft_plan *} starpufft_plan_dft_1d (int @var{n}, int @var{sign}, unsigned @var{flags})
|
|
|
-Initializes a plan for 1D FFT of size @var{n}. @var{sign} can be
|
|
|
-@code{STARPUFFT_FORWARD} or @code{STARPUFFT_INVERSE}. @var{flags} must be 0.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun {struct starpufft_plan *} starpufft_plan_dft_2d (int @var{n}, int @var{m}, int @var{sign}, unsigned @var{flags})
|
|
|
-Initializes a plan for 2D FFT of size (@var{n}, @var{m}). @var{sign} can be
|
|
|
-@code{STARPUFFT_FORWARD} or @code{STARPUFFT_INVERSE}. @var{flags} must be 0.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun {struct starpu_task *} starpufft_start (starpufft_plan @var{p}, void *@var{in}, void *@var{out})
|
|
|
-Start an FFT previously planned as @var{p}, using @var{in} and @var{out} as
|
|
|
-input and output. This only submits the task and does not wait for it.
|
|
|
-The application should call @code{starpufft_cleanup} to unregister the data.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun {struct starpu_task *} starpufft_start_handle (starpufft_plan @var{p}, starpu_data_handle_t @var{in}, starpu_data_handle_t @var{out})
|
|
|
-Start an FFT previously planned as @var{p}, using data handles @var{in} and
|
|
|
-@var{out} as input and output (assumed to be vectors of elements of the expected
|
|
|
-types). This only submits the task and does not wait for it.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun void starpufft_execute (starpufft_plan @var{p}, void *@var{in}, void *@var{out})
|
|
|
-Execute an FFT previously planned as @var{p}, using @var{in} and @var{out} as
|
|
|
-input and output. This submits and waits for the task.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun void starpufft_execute_handle (starpufft_plan @var{p}, starpu_data_handle_t @var{in}, starpu_data_handle_t @var{out})
|
|
|
-Execute an FFT previously planned as @var{p}, using data handles @var{in} and
|
|
|
-@var{out} as input and output (assumed to be vectors of elements of the expected
|
|
|
-types). This submits and waits for the task.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun void starpufft_cleanup (starpufft_plan @var{p})
|
|
|
-Releases data for plan @var{p}, in the @code{starpufft_start} case.
|
|
|
-@end deftypefun
|
|
|
-
|
|
|
-@deftypefun void starpufft_destroy_plan (starpufft_plan @var{p})
|
|
|
-Destroys plan @var{p}, i.e. release all CPU (fftw) and GPU (cufft) resources.
|
|
|
-@end deftypefun
|