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