CharacteristicMappingMethod / cmm-turbulence

CMM Turbulence code
GNU General Public License v3.0
1 stars 0 forks source link

FFT in Real space #12

Closed Arcadia197 closed 2 years ago

Arcadia197 commented 3 years ago

in theory, the FFT is done from Real -> Complex -> Real. This could be looked over and maybe changed, as it may change some space (and maybe time?)

Arcadia197 commented 2 years ago

2D CuFFT for Complex to Real only seems to work on one dimension to reduce the array by two. However, since both directions are affected, maybe it cannot be implemented for two-dimensional arrays.

Arcadia197 commented 2 years ago

I read about cuFFT callbacks, this could be used to implement own input and output functions with automatic conversion

Arcadia197 commented 2 years ago

cuFFT callbacks are an experimental feature, this does therefore not work for the implementation.

However, as the temporary variables take up a huge amount of space (2x2xN_fine), reducing this further with make room for a lot of storage. I should look into this at some point again.

For this I have to:

Arcadia197 commented 2 years ago

I'm working on this. It looks very fine. Transformed already for translate_initial_condition and evaluate_stream_hermite.

Still have to check where we use temporary variables, nevertheless this should possibly reduce in a nice reduction. Due to the fact, that we do not need comp_to_real and real_to_comp anymore, maybe we can free more space than i actually imagined (i mean, everything that counts is actually the fine and psi size, so maybe just that is already enough great).

Arcadia197 commented 2 years ago

I implemented this and it works very well on my computer. However, I face some issues at anthycithere which I believe are linked to this change.

This has to be checked.

Arcadia197 commented 2 years ago

It was pretty dirty, but everything was solved and it is working properly now.