What is the intention of cufftXtSetWorkAreaPolicy?

I could not tell the actual use case for cufftXtSetWorkAreaPolicy call. How it is different from cufftSetAutoAllocation?
Appreciate any one can shed some light.


depending on the chosen FFT algorithm, cuFFT needs to allocate a workspace for temporary data. By using cufftXtSetWorkAreaPolicy, you can constrain its size. It can also influence the algorithm choice. Currently there are 3 policies you can apply:

  1. CUFFT_WORKAREA_PERFORMANCE - default, no workspace size restrictions,
  2. CUFFT_WORKAREA_USER - the user specifies maximum workspace size by workSize parameter,
  3. CUFFT_WORKAREA_MINIMAL - the plan will be recreated without workspace memory, but it has to be a single GPU C2C (up to 4096 in any dimension), Z2Z (up to 2048 in any dimension) transformation.

Hope it helps.