-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix max fft size fiasco #281
Conversation
fix max fft size fiasco2
The ubuntu CI is failing because one of the tests won't build. Seems like GCC has decided that in that test I'm trying to copy a move only object, but not at all clear why it's decided that now because this was always the case. |
oh ubuntu is bailing at the tests (any idea why?), but I ran the SC unit tests and they all run fine... and nothing crashes now with the large fft size. |
otherwise I should test on ubuntu and windows as this is potentially 'big' right? |
I mean, running the UTs on locally compiled things? |
Yes, whenever you're able! |
doing it now as I practice this hard bass line I can't play to save my life :D |
ok it refuses to build on Ubuntu 20. I get loads of similar errors to this: /home/pa/Documents/source/flucoma-core/include/clients/rt/../common/../../algorithms/public/STFT.hpp:27:7: error: use of deleted function ‘fluid::algorithm::FFT& fluid::algorithm::FFT::operator=(fluid::algorithm::FFT&&)’ |
'it' is the tests, or a build for a cce? (and – what? – that function isn't deleted 😭 ) |
I've pulled the tip of main in SC, and the PR 281 in core, and building in ninja. I can send the full error stack but there are a lot. |
e-mail it to me if you can. sounds horrible |
Ok, received, thanks. That does give me a clue, now off to cppreference to see if I can figure out what exactly I've done to make gcc so sad (it's definitely this change, to do with adding a |
in case this helps explaining why MacOS doesn't bail but Ubuntu20 does: on the latter I have gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2) |
Maybe this is why gcc is sad
Ok, think I figured it out. Can you check a full build again? |
It builds in all 3 OSes, I am running the UTs in SC now in all 3 |
it all works perfect, you can merge |
What is the road to where paved with?
This hopefully fixes #258
FFT
had been altered some time ago to use a globalsetup
object in order to cut down on these expensive things being redundantly created all over the place (quite possibly on the heap? Can't remember...). Instead an assumed hard limit of 2^16 Became A Thing. Unfortunately, nobody (i.e. me) told the rest of the codebase, which happily assumed that anything was possible. Moreover, (a)FFT::resize()
is assumed by calling code not to fail (!?) and (b) itsassert
was useless becauseFFT
was still cheerfully accepting fft sizes > 2^16, even if itssetup
object could never honour that.(Seems like now would be a good time to have more unit tests)
So. I still like the idea of 'normal' FFT usage not spraying lots of these
setup
objects out into the world, but have attempted to accommodate the adventurous by allowing a localsetup
object in astd::optional
when a chunkier size is requested.So far, this is tested only to the extent of seeing if I could run NMF in Max with a FFT of 217. I will at least confirm that when fft size is <= 216, it continues to use the default path, but more dedicated tyre kicking by @tremblap will be helpful.