[gambit-list] Gambit on Raspberry Pi 2 B

Bradley Lucier lucier at math.purdue.edu
Mon Mar 9 18:05:07 EDT 2015


More numbers:

> On Mar 9, 2015, at 3:52 PM, Bradley Lucier <lucier at math.purdue.edu> wrote:
> 
> I got a Raspberry Pi 2 B (RPI2), and it’s a lot of fun.  Gambit from Github runs out of the box with the compiler that’s shipped with Raspbian (the RPI version of Debian).
> 
> I was trying out some options to see how to best take advantage of the hardware. The numbers follow my sig.
> 
> Brad
> 
> I have a simple test:
> 
> cutie-pi:~/programs/gambit> gsi -v
> v4.7.4 20150228031125 armv7l-unknown-linux-gnueabihf "./configure 'CC=gcc -march=armv7-a -mfpu=vfpv4 -mhard-float' '--enable-single-host' '--enable-shared' '--enable-multiple-versions'"
> cutie-pi:~/programs/gambit>  gsi -e '(define a (time (expt 3 1000000)))(define b (time (* a a)))'
> (time (expt 3 1000000))
>    494 ms real time
>    490 ms cpu time (490 user, 0 system)
>    7 collections accounting for 8 ms real time (10 user, 0 system)
>    9166544 bytes allocated
>    2001 minor faults
>    no major faults
> (time (* a a))
>    522 ms real time
>    530 ms cpu time (520 user, 10 system)
>    2 collections accounting for 4 ms real time (10 user, 0 system)
>    8817880 bytes allocated
>    2067 minor faults
>    no major faults
> 
> You can install gcc-4.8, but then it runs out of memory compiling _t-univ.c, so I reconfigured Gambit to not include _t-univ.*, and got the following results:
> 
> cutie-pi:~/programs/gambit> gsi -v
> v4.7.4 20150228031125 armv7l-unknown-linux-gnueabihf "./configure 'CC=gcc-4.8 -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard' '--enable-single-host' '--enable-shared' '--enable-multiple-versions'"
> cutie-pi:~/programs/gambit> gsi -e '(define a (time (expt 3 1000000)))(define b (time (* a a)))'
> (time (expt 3 1000000))
>    430 ms real time
>    430 ms cpu time (420 user, 10 system)
>    7 collections accounting for 8 ms real time (10 user, 0 system)
>    9166544 bytes allocated
>    2001 minor faults
>    no major faults
> (time (* a a))
>    453 ms real time
>    450 ms cpu time (440 user, 10 system)
>    2 collections accounting for 3 ms real time (0 user, 0 system)
>    8817880 bytes allocated
>    2067 minor faults
>    no major faults

Changing -fno-strict-aliasing to -fstrict-aliasing by hand gives an even better result:

cutie-pi:~/programs/gambit> gsi -v
v4.7.4 20150228031125 armv7l-unknown-linux-gnueabihf "./configure 'CC=gcc-4.8 -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard' '--enable-single-host' '--enable-shared' '--enable-multiple-versions'"
cutie-pi:~/programs/gambit> gsi -e '(define a (time (expt 3 1000000)))(define b (time (* a a)))'
(time (expt 3 1000000))
    395 ms real time
    390 ms cpu time (370 user, 20 system)
    7 collections accounting for 12 ms real time (0 user, 0 system)
    9166544 bytes allocated
    2000 minor faults
    no major faults
(time (* a a))
    405 ms real time
    400 ms cpu time (400 user, 0 system)
    2 collections accounting for 5 ms real time (0 user, 0 system)
    8817880 bytes allocated
    2067 minor faults
    no major faults

This may introduce impossible to debug errors, but I don’t think gcc’s aliasing analysis is yet smart enough to figure out how to do that.

> 
> And on an experiment in spectral identification that mainly does F64 inner products, I get with the default build
> 
> (time (run-experiment-and-graph 5))
>   785617 ms real time
>   785590 ms cpu time (785040 user, 550 system)
>   33 collections accounting for 442 ms real time (350 user, 80 system)
>   3216061748 bytes allocated
>   30338 minor faults
>   no major faults
> 
> and with the gcc-4.8 build I get
> 
>> (time (run-experiment-and-graph 5))
> (time (run-experiment-and-graph 5))
>    739829 ms real time
>    739790 ms cpu time (739620 user, 170 system)
>    33 collections accounting for 292 ms real time (310 user, 0 system)
>    3216060588 bytes allocated
>    17663 minor faults
>    no major faults

using -fstrict-aliasing didn’t help the spectral identification code much:

> (time (run-experiment-and-graph 5))
(time (run-experiment-and-graph 5))
    733849 ms real time
    733750 ms cpu time (733330 user, 420 system)
    33 collections accounting for 219 ms real time (210 user, 0 system)
    3216086556 bytes allocated
    16938 minor faults
    no major faults






More information about the Gambit-list mailing list