~ubuntu-branches/debian/lenny/octave3.0/lenny

« back to all changes in this revision

Viewing changes to debian/README.Atlas

  • Committer: Bazaar Package Importer
  • Author(s): Rafael Laboissiere
  • Date: 2007-12-23 16:04:15 UTC
  • Revision ID: james.westby@ubuntu.com-20071223160415-jfriqav7corvoi9d
Tags: 3.0.0-1
The "Seasons Greetings" release

* New upstream release.  A big thanks to John W. Eaton and all the
  Octave development team for this most awaited release.

* debian/in/control, debian/rules: Replaced most of the references to
  octave2.9 by octave3.0.  Made all octave3.0* packages
  provide/replace/conflict with the respective octave2.9* packages.
* debian/patches/02_prelease_warning.dpatch: Dropped patch, since this
  is the real 3.0 release
* debian/in/control: Dropped the build-conflict with atlas3-base-dev.
  This will make the autobuilders happy.
* debian/in/control: Dropped the empty octave package.  This will allow
  releasing octave3.0 without an epoch in its version number.  We will
  reintroduce this package later, if necessary (anyway, octave3.0
  provides octave).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
             Notes on using Atlas libs with GNU Octave and GNU R
 
3
 
 
4
I. Overview
 
5
 
 
6
As of the Debian releases 2.1.34-6 (for GNU Octave) and 1.3.0-3 (for GNU R),
 
7
both Octave and R can be used with Atlas, the Automatically Tuned Linear
 
8
Algebra Software, in order to obtain much faster linear algebra operations.
 
9
 
 
10
To make use of Atlas, Debian users need to install the Atlas libraries for
 
11
their given cpu architecture. Concretely, one of
 
12
 
 
13
    atlas2-base - Automatically Tuned Linear Algebra Software
 
14
    atlas2-p3 - Automatically Tuned Linear Algebra Software
 
15
    atlas2-p4 - Automatically Tuned Linear Algebra Software
 
16
    atlas2-athlon - Automatically Tuned Linear Algebra Software
 
17
 
 
18
must be installed. Here, 'base' provides generic libraries which run on all
 
19
platforms whereas 'p3', 'p4' and 'athlon' stand for the Pentium III and IV as
 
20
well as the AMD Athlon, respectively.  The actual libraries are installed in
 
21
/usr/lib/atlas (in the case of 'base') and in /usr/lib/$arch/atlas for the
 
22
cpu-specific versions. Here $arch stands for the cpu code used by the kernel
 
23
and shown in /proc/cpuinfo.
 
24
 
 
25
The Atlas libraries can be loaded dynamically instead of the (non-optimised)
 
26
blas libraries against which both Octave and R are compiled.
 
27
 
 
28
Section III below briefly describes how Atlas libraries can be compiled for
 
29
your specific machine to further optimise performance.
 
30
 
 
31
II. Using the Atlas libraries
 
32
 
 
33
II.A New default behaviour with automatic loading of the Atlas libraries
 
34
 
 
35
In order to have the libraries loaded at run-time, the location needs to be
 
36
communicated to the dynamic linker/loader. As of the Debian release
 
37
libc6_2.2.4-5 of the glibc library, a patch to ldconfig automates the use of
 
38
the Atlas library. If an Atlas package is installed, and correctly registered
 
39
in /etc/ld.so.conf as done by its postinst script, ldconfig will
 
40
automatically load the Atlas' version of the Blas instead of the (slower)
 
41
default Blas.
 
42
 
 
43
The following text is hence only relevant for systems which have not yet
 
44
upgraded to libc6_2.2.4-5 or later.
 
45
 
 
46
II.B Old behaviour requiring LD_LIBRARY_PATH for Octave
 
47
 
 
48
For Octave, use the variable LD_LIBRARY_PATH. On a computer with the
 
49
atlas2-base package:
 
50
 
 
51
    $ LD_LIBRARY_PATH=/usr/lib/atlas octave2.1 -q
 
52
    octave2.1:1> X=randn(1000,1000);t=cputime();Y=X'*X;cputime-t
 
53
    ans = 7.9600
 
54
 
 
55
    $ edd@homebud:~> octave2.1 -q
 
56
    octave2.1:1> X=randn(1000,1000);t=cputime();Y=X'*X;cputime-t
 
57
    ans = 61.520
 
58
 
 
59
For R version 1.3.0-4, the R_LD_LIBRARY_PATH variable has to be used, and its
 
60
value needs to be copied out of /usr/bin/R (or edited therein). For R version
 
61
1.3.1 or later this is done automatically in the R startup shell script.  For
 
62
an Athlon machine, and with the explicit definition which is no longer needed
 
63
as of R 1.3.1, the example becomes
 
64
 
 
65
    $ R_LD_LIBRARY_PATH=/usr/lib/R/bin:/usr/local/lib:/usr/X11R6/lib:/usr/lib/3dnow/atlas:/usr/lib:/usr/X11R6/lib:/usr/lib/gcc-lib/i386-linux/2.95.4:. R --vanilla -q
 
66
    > mm <- matrix(rnorm(10^6), ncol = 10^3)
 
67
    > system.time(crossprod(mm))
 
68
    [1] 2.38 0.04 2.84 0.00 0.00
 
69
 
 
70
    $ R --vanilla -q
 
71
    > mm <- matrix(rnorm(10^6), ncol = 10^3)
 
72
    > system.time(crossprod(mm))
 
73
    [1] 28.28  0.08 33.54  0.00  0.00
 
74
    > 
 
75
 
 
76
Running such a small example is highly recommded to ascertain that the
 
77
libraries are indeed found, and to "prove" that the speed gain is real (and
 
78
significant) for problems of at least a medium size as the 1000x1000 examples
 
79
above.
 
80
 
 
81
Note that the example use "/usr/lib/atlas" for the atlas2-base package;
 
82
Athlon users should employ "/usr/lib/3dnow/atlas", Pentium III users should
 
83
employ "/usr/lib/xmm/atlas" and Pentium IV users should employ
 
84
"/usr/lib/26/atlas".
 
85
 
 
86
Lastly, it should be pointed out that it is probably worthwhile to locally
 
87
compile, and thereby optimise, the Atlas libraries if at least a moderately
 
88
intensive load is expected. This is described in the next section.
 
89
 
 
90
III. Locally compiling the Atlas libraries
 
91
 
 
92
The Debian Atlas packages have been setup to allow for local recompilation of
 
93
the Atlas libraries. This way the behaviour will be tuned exactly to the
 
94
specific CPU rather than the broader class of CPUs. It has been reported that
 
95
this can increase performance by a further 12% on the examples above.
 
96
Detailed instructions are in /usr/share/doc/atlas2-base/README.debian.gz but
 
97
the process is essentially the following  [ courtesy of Doug Bates ]
 
98
 
 
99
   apt-get source atlas2-base
 
100
   cd atlas2-$VERSION
 
101
   fakeroot debian/rules/custom
 
102
   # wait for a *very* long time
 
103
   dpkg -i ../atlas2-base*.deb
 
104
 
 
105
 
 
106
IV.  See also
 
107
 
 
108
The Atlas packages have a very detailed README.Debian file which should be
 
109
consulted; it also details local recompilation. Sources and documentation for
 
110
Atlas are at   http://www.netlib.org/atlas.
 
111
 
 
112
 
 
113
V.  Acknowledgements
 
114
 
 
115
Camm Maguire developed the scheme of overloading Atlas over the default blas
 
116
libraries and deserves all the credit. Many thanks to John Eaton for helping
 
117
debug some errors in the initial setup, and to Doug Bates for work on the R
 
118
package. Special thanks to Ben Collins for providing a patched ldconfig as
 
119
part of the libc6 package.
 
120
 
 
121
 
 
122
Initial version
 
123
 -- Dirk Eddelbuettel <edd@debian.org>  Tue, 21 Aug 2001 21:37:15 -0500
 
124
 
 
125
First updated
 
126
 -- Dirk Eddelbuettel <edd@debian.org>  Sun, 11 Nov 2001 11:03:19 -0600