-
Notifications
You must be signed in to change notification settings - Fork 8
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
FIR_FFT_Benchmarking.ino KISS FFT memory failure #1
Comments
Hey, thanks for giving it a try! Fantastic! Regarding the "Not Enough Temp Memory", yes, I saw that behavior as well. The KISS routine was originally written for desktop machines and was filled with malloc() calls. I think that I removed most of those, but I'm not sure that got them all. Also, the algorithm uses recursion which causes the stack to grow as local arrays are allocated with each call. While they should be correctly released as the recursion is unwound, I fear that there is memory fragmentation happening that may prevent the biggest arrays from getting allocated the second time through. Since I'm not going to use the KISS routines for my projects (I'll use the CMSIS library), I wasn't too concerned about fixing it. Thanks for the additional results on the other platforms! I'm hoping to do a trial with the STM32 (F4?) 180 MHz part when the Arduino-STM collaboration is released. |
Oh, since the CMSIS FFT is so good, do you think that there's any value in trying to fix the KISS memory issue? If not, I might close the issue as one of those "Not Going to Fix" issues... |
Well, if it's an easy fix for KISS, maybe yes ... otherwise no. here are ARMf/float numbers for mbed Nucleo-F446RE STM32F446RET6 @180MHz |
Not a big deal, since the first iteration of KISS_FFT benchmark works, but 2nd and 3rd iteration report
KISS FFT: N = 1024 in *** NOT ENOUGH TEMP MEMORY ***
Is there a memory leak?
FYI, I ran the benchmark on Teensy 3.2/3.5/3.6 and confirmed your results. Also ran it on dragonfly (STM32L4 @80mhz) and mbed K64F @120mhz, speed up to T3.2@96mhz for float 128:
dragonfly 7.7
mbed k64 12.97
the mbed k64 is faster than the teensy 3.5 probably because mbed uses ARM gcc with -O3
The text was updated successfully, but these errors were encountered: