GMP used during 3 and a half years to solve MIT's LCS35

Dennis Clarke dclarke at blastwave.org
Thu May 9 16:57:12 UTC 2019


On 5/9/19 3:59 AM, Torbjörn Granlund wrote:
> Bernard Fabrot <bfabrot at gmail.com> writes:
> 
>    Thanks a lot: that is very interesting, I cannot wait!
> 
> Results from Pentium 3, 800MHz.  That CPU was released late 1999 and was
> then "state of the art".
> 
> GMP 2.0.2: 6460/6352
> GMP 6.1.2: 2391/2278

I may have lost track of this thread. What test was that ?

I have this still running :

phobos$ uname -a
Linux phobos 5.0.11-genunix #1 SMP Fri May 3 22:20:55 UTC 2019 i686 
GNU/Linux
phobos$ head -30 /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 5
model name      : Pentium II (Deschutes)
stepping        : 2
microcode       : 0x2a
cpu MHz         : 398.973
cache size      : 512 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fdiv_bug        : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge 
mca cmov pse36 mmx fxsr cpuid
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips        : 797.94
clflush size    : 32
cache_alignment : 32
address sizes   : 36 bits physical, 32 bits virtual
power management:


There are two cpu modules in that old HP unit.


phobos$ ./mpfr_gmp_version
Compiler: GCC 8.3.0
C/C++: __STDC__ = 1, __STDC_VERSION__ = 201112L
GNU compatibility: __GNUC__ = 8, __GNUC_MINOR__ = 3
GNU C library: __GLIBC__ = 2, __GLIBC_MINOR__ = 28

GMP .....  Library: 6.1.2         Header: 6.1.2
MPFR ....  Library: 4.0.2         Header: 4.0.2 (based on 4.0.2)
MPFR features: TLS = yes, float128 = yes, decimal = no, GMP internals = no
MPFR tuning: src/x86/mparam.h
MPFR patches: [none]

__GMP_CC = "/usr/bin/gcc"
__GMP_CFLAGS = "-m32 -g -std=c99 
-Wl,-rpath=/opt/bw/lib,--enable-new-dtags -pedantic -fno-builtin 
-malign-double -mpc80 -D_LARGEFILE64_SOURCE"
GMP_LIMB_BITS     = 32
GMP_NAIL_BITS     = 0
GMP_NUMB_BITS     = 32
mp_bits_per_limb  = 32
sizeof(mp_limb_t) = 4
The GMP library expects 32 bits in a mp_limb_t.

sizeof(mpfr_prec_t) = 4 (signed type)
sizeof(mpfr_exp_t)  = 4 (signed type)
_MPFR_PREC_FORMAT = 3
MPFR_PREC_MIN = 1 (signed)
MPFR_PREC_MAX = 2147483391 (signed)
_MPFR_EXP_FORMAT = 3
sizeof(mpfr_t) = 16
sizeof(mpfr_ptr) = 4
phobos$

Not sure why the decimal math support is absent but I can look into that.

> 
> We haven't done uch in the way of improving GMP for 32-bit x86 in the
> last 10 years.  If an effort were made, I guesstimate that GMP could run
> 25% faster on these old CPUs.
> 

It isn't worth the effort. Sort of the same situation as SPARC.
I have reasonably modern Fujitsu sparc laying about doing nothing
for lack of support.

-- 
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken
GreyBeard and suspenders optional


More information about the gmp-discuss mailing list