DTolm / VkFFT

Vulkan/CUDA/HIP/OpenCL/Level Zero/Metal Fast Fourier Transform library
MIT License
1.48k stars 88 forks source link

Improve user's `tempBuffer` allocation workflow #178

Open DejvBayer opened 3 weeks ago

DejvBayer commented 3 weeks ago

Hi,

as I understand it, right now VkFFT supports two ways of allocating tempBuffer:

  1. auto allocation - the user does not set the userTempBuffer flag, does not supply both the tempBufferSize and tempBuffer arrays, everything is managed by the plan
  2. user allocation - the user sets the userTempBuffer flag, passes the temp buffer sizes via tempBufferSize (config) and the temp buffers tempBuffer (config or launch) in arrays of size tempBufferNum.

I think it would be a nice feature to allow the user to do his own allocation, while supplying the required temporary buffer count and sizes. I would suggest to add a third way:

The main advantage of this approach is that the user needn't to calculate the proper buffer sizes and counts himself. This behaviour is more similar to what other libraries offer.

What do you think about it?

Thanks.

David

DTolm commented 2 weeks ago

Hello,

as far as I know, no one has reported using the manual tempBuffer submission before you (which is why none of the vendor libraries even try doing it), but this suggestion is reasonable and not hard to implement, I will add it soon. Thank you!

Best regards, Dmitrii

DejvBayer commented 2 weeks ago

Great! Actually all of the GPU FFT libraries I know about allow user's tembuffer allocation, they just call it a workspace or work area. For example here is the link to cuFFT work area API.

David

DTolm commented 2 weeks ago

Ah, ok, guess I somehow missed that.

Best regards, Dmitrii