Linpack auf Raspberry Pi 1 Model B

Die letzten Abende habe ich mal getestet, wie schnell so ein Raspi praktisch ist.
Theoretisch sollten bei 900 MHz und 2 Takten pro Gleitkommaoperation 450 MFlops drin sein. Also habe ich die beiden in Raspbian enthaltenen Versionen von BLAS (http://www.netlib.org/blas/) und ATLAS (http://math-atlas.sourceforge.net/) installiert sowie OpenBLAS (http://www.openblas.net/) selbst kompiliert.

Zum Testen habe ich den Linpack-Benchmark hpcc (http://icl.cs.utk.edu/hpcc/software/index.html) genutzt.

Neben den üblichen Compilerschaltern kamen dann nach einigem Suchen für den Raspberry Pi 1 noch „-march=armv6 -mfloat-abi=hard -mfpu=vfp“ beim Übersetzen von OpenBLAS und hpcc dazu.

Für BLAS waren die Benchmark-Resultate echt deprimierend. Ganze 25 MFlop, also gerade mal 1/20 der theoretischen Leistung, waren zu erreichen. Hier ist beim Übersetzen „vergessen“ worden, das der Raspberry eine integrierte Gleitkommaeinheit hat.

Mit ATLAS wurde das Ganze schon deutlich besser. Und wie fast schon zu erwarten, war die selbst übersetzte OpenBLAS-Version die schnellste. Für die beiden letzteren wurden dann folgende Ergebnisse erreicht (Angabe in der letzten Spalte in ):

T/V N NB P Q Time Gflops
-----------------------------------------------------------------
WR11C2R4 6400 160 1 1 837.57 2.087e-01 (ATLAS)
WR11C2R4 6400 160 1 1 655.59 2.667e-01 (OpenBLAS)

Damit ist OpenBLAS für diesen Fall ca. 25% schneller als ATLAS und ganze 10x schneller als BLAS. Verglichen mit der theoretischen Leistung sind aber nur knapp 60% erreicht. Vielleicht lässt sich da mit anderen Matrixgrößen noch etwas mehr erreichen.