ulab Samples - FFT benchmark with OpenMV H7 in 1st place

ulab Sample is a repository with links, examples, benchmarks, etc, about ulab module, a NumPy-like array manipulation library for MicroPython and CircuitPython.

ulab is included in OpenMV Cam firmware >= v3.5.0 (20191104), currently OpenMV fw v3.6.7 has ulab v0.50.2.

See the ulab FFT benchmark for 1024 points, where the OpenMV H7 board with OpenMV firmare is a clear winner in single precision FFT, taking only 0.397 ms !

The OpenMV H7 board with ARM Cortex-M7 STM32H743VI has dual precision hardware support (FP64), but the OpenMV firmware currently supports only single precision (FP32). Note in the benchmark that CircuitPython for OpenMV H7 is not well optimized.

Even though it is older, from 2017, OpenMV M7 with ARM Cortex-M7 STM32F765VI, which has FP64 hardware support, obtained the 2nd place in single precision FFT, with 0.780 ms.

It would be very useful to have OpenMV firmwares in two versions, one in single precision (FP32) and another in double precision (FP64), so the STM32H743VI and STM32F765VI microcontrollers can show all their performance.

What would that require?

About OpenMV firmwares with optional single precision (FP32) and double precision (FP64) support using ‘MICROPY_FLOAT_IMPL’ make option :

Maybe the OpenMV main developers or OpenMV community can implement this feature.

Mmm, this is a huge global change. It’s probably going to be a no.

If ulab has a private float64 type then that’s different.

I understood, even so, the results in FP32 were very good (0.397 ms) for the calculation.

In addition, thanks for clarifying.