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

General discussion about topics related to OpenMV.
EduardoDestefani
Posts: 3
Joined: Tue Aug 11, 2020 10:21 pm

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

Postby EduardoDestefani » Wed Aug 12, 2020 7:16 pm

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.
User avatar
kwagyeman
Posts: 4430
Joined: Sun May 24, 2015 2:10 pm

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

Postby kwagyeman » Wed Aug 12, 2020 7:31 pm

What would that require?
Nyamekye,
EduardoDestefani
Posts: 3
Joined: Tue Aug 11, 2020 10:21 pm

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

Postby EduardoDestefani » Thu Aug 13, 2020 1:08 pm

kwagyeman wrote:
Wed Aug 12, 2020 7:31 pm
What would that require?
About OpenMV firmwares with optional single precision (FP32) and double precision (FP64) support using 'MICROPY_FLOAT_IMPL' make option :

- adapt to OpenMV source code the FP64 support of MicroPython mainline in ports/stm32;
- for example, modify :
https://github.com/openmv/openmv/blob/m ... c/Makefile
and/or :
https://github.com/openmv/openmv/blob/m ... v/Makefile
with code supporting FP64 from :
https://github.com/micropython/micropyt ... 2/Makefile
- but there are possibly other files to change or add, similar to microPython/ports/stm32 mainline.

Maybe the OpenMV main developers or OpenMV community can implement this feature.
Last edited by EduardoDestefani on Thu Aug 13, 2020 1:24 pm, edited 1 time in total.
User avatar
kwagyeman
Posts: 4430
Joined: Sun May 24, 2015 2:10 pm

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

Postby kwagyeman » Thu Aug 13, 2020 1:14 pm

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.
Nyamekye,
EduardoDestefani
Posts: 3
Joined: Tue Aug 11, 2020 10:21 pm

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

Postby EduardoDestefani » Thu Aug 13, 2020 1:50 pm

kwagyeman wrote:
Thu Aug 13, 2020 1:14 pm
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.

Return to “General Topics”

Who is online

Users browsing this forum: No registered users and 1 guest