Home

Awesome

ulab Samples

Links, examples, benchmarks, etc, about ulab module, a NumPy-like array manipulation library for MicroPython and CircuitPython

Authors : Eduardo Destefani Stefanato, Pedro Henrique Robadel da Silva Camâra, Roberto Colistete Jr, Thiago Ferreira Santos
Last update : August 12th 2020

Links about ulab

Firmwares and MicroPython boards adopting ulab

Firmwares with ulab included, built by the community

Benchmark of FFT with 1024 points

ulab.fft.fft() calculation time (of a, b = fft.fft(y) so it includes the time to transfer the result) for 1024 points with single precision (FP32) and double precision (FP64) for float point numbers, using ulab v0.54.0 & MicroPython v1.12 (if not cited) :

BoardClock (MHz)Time (ms) in FP32Time (ms) in FP64
Pyboard Lite v1.096 (default)3.57253.39
Pyboard v1.1168 (default)2.038232.076
Pyboard v1.1 CPy 6.0.0a2168 (default)2.253-
Pyboard D SF2216 (maximum)1.03917.660
Pyboard D SF6216 (maximum)1.0012.041
ESP8266 EX (WeMos D1 Mini)160 (maximum)28.874-
ESP32-PICO-D4 rev1 (M5StickC)240 (maximum)1.63520.97
ESP32 D0WDQ6 rev0 (LoLin32)240 (maximum)1.5320.95
ESP32 PSRAM D0WDQ6 rev1 (LoLin32 Pro)240 (maximum)2.3023.18
ESP32 D0WDQ6 rev0 (LoPy v1)160 (default)2.3832.877
ESP32 PSRAM D0WDQ6 rev1 (LoPy4)160 (default)3.0034.5
MAixBiT - Lobo fw v202002400 (default)-1.030
MAixBiT - MaixPy v0.5.0600 (maximum)1.45-
OpenMV M7 - fw v3.6.7216 (default)0.780-
OpenMV H7 - fw v3.6.7480 (default)0.397-
OpenMV H7 CPy 6.0.0a2480 (default)1.99-
ItsyBitsy M4 CPy 6.0.0a2120 (default)3.1-
Adafruit CLUE CPy 6.0.0a264 (default)7.19-
Teensy 4.0 CPy 6.0.0a2600 (default)1.84-

Observations

Analyses

It would be very useful to have more MicroPython/CircuitPython firmwares supporting both single precision (FP32) and double precision (FP64), including for all the 5 boards above with double precision (FP64) hardware support.