[Rd] Problems with Lapack's eigen() on 64-bit
Martin Maechler
maechler at stat.math.ethz.ch
Tue Jul 27 12:51:08 CEST 2004
I'm only now realizing that we have severe problems with R on our
AMD 'Opteron' and 'Athlon64' clients running Redhat Enterprise
with all 64-bit libraries (AFAICS).
The Lapack problem happens for R-patched and R-devel both on
the Opteron and the Athlon64.
Here are platform details:
o "gcc -v" and "g77 -v" both end with the line
gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-34)
o I've used ...../configure --without-blas
1) Opteron ("deb7", a dual-processor compute server):
- uname -a :
Linux deb7 2.4.21-9.0.3.ELsmp #1 SMP Tue Apr 20 19:44:29 EDT 2004 x86_64 x86_64 x86_64 GNU/Linux
- /proc/cpuinfo contains (among much more)
vendor_id : AuthenticAMD
cpu family : 15
model : 5
model name : AMD Opteron(tm) Processor 248
2) Athlon64 (a simple "new generation" client - to become my desktop soon):
- uname -a :
Linux setup-12 2.4.21-15.0.2.EL #1 Wed Jun 16 22:41:44 EDT
2004 x86_64 x86_64 x86_64 GNU/Linux
- /proc/cpuinfo contains
vendor_id : AuthenticAMD
cpu family : 15
model : 14
model name : AMD Athlon(tm) 64 Processor 2800+
----------------
Now the Lapack problem, easily seen from the base eigen()
example:
> eigen(cbind(1, 3:1, 1:3))
$values
[1] 5.7015621 1.0000000 -0.7015621
$vectors
[,1] [,2] [,3]
[1,] 0.4877939 -0.7181217 -0.9576161
[2,] 0.6172751 -0.3893848 0.2036804
[3,] 0.6172751 0.5767849 0.2036804
which is simply plainly wrong and
eigen(cbind(1, 3:1, 1:3), EISPACK=TRUE)
gives the correct eigen values c(5, 1, 0) and corresponding
eigenvectors.
IIRC, we've already dealt with a Lapack problem, and that
workaround (built into R-devel's Makefiles) has been to use
-ffloat-store for the compilation of src/modules/lapack/dlamc.f
----------
Thank you for hints / suggestions.
Others with 64-bit platforms might also try to see what
eigen(cbind(1, 3:1, 1:3))
gives there.
Martin Maechler
More information about the R-devel
mailing list