-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.install
218 lines (178 loc) · 8.37 KB
/
README.install
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
===================
CLAPACK README FILE
===================
============================================================================================
Version 3.2.1 (threadsafe)
Release date: June 2009 / April 2010
F2C translation of LAPACK 3.2.1
To get revisions info about LAPACK 3.2.1, please see http://www.netlib.org/lapack/lapack-3.2.1.html
FOR SUPPORT: LAPACK Forum: http://icl.cs.utk.edu/lapack-forum/
============================================================================================
This README file describes how and how to install the ANSI C translation of the
LAPACK library, called CLAPACK. CLAPACK must be compiled with an ANSI Standard
C compiler. If the C compiler on your machine is an old-style C compiler, you
will have to use gcc to compile the package.
IMPORTANT NOTE:
You *CANNOT* just go to www.netlib.org/clapack, download a routine like
sgesv.c and have it work unless you properly install and link to the
f2c and BLAS routines as described below. If your linker complains about
missing functions, you have probably accidentally neglected this step.
Also, you will need the file "f2c.h" (included with the f2c libraries)
in order to compile these routines.
The default BLAS routines included with CLAPACK in the BLAS/SRC
subdirectory may also be used these will most likely be
slower than a BLAS library optimized for your machine. If you do
not have such an optimized BLAS library, you can get one at
http://www.netlib.org/atlas
==============================================================================
For a fast default installation, you will need to
- Untar clapack.tar and modify the make.inc file (see step 1 below)
- Make the f2c libraries (see step 2 below)
- Make the BLAS library (see step 2 below)
- Make the main library, test it, and time it by simply typing
make
If you encounter difficulties, you may find the installation manual for
the FORTRAN version (INSTALL/lawn81.*) useful.
Procedure for installing CLAPACK:
==============================================================================
(1) 'tar xvf clapack.tar' to build the following directory structure:
CLAPACK/README.install this file
CLAPACK/BLAS/ C source for BLAS
CLAPACK/F2CLIBS/ f2c I/O functions (libI77) and math functions (libF77)
CLAPACK/INSTALL/ Testing functions and pre-tested make.inc files
for various platforms.
CLAPACK/INCLUDE/ header files - clapack.h is including C prototypes of all the
CLAPACK routines.
CLAPACK/SRC/ C source of LAPACK routines
CLAPACK/TESTING/ driver routines to test correctness
CLAPACK/make.inc compiler, compile flags and library definitions,
included in all Makefiles.
NOTE: It's better to use gcc compiler on some older
Sun systems.
You should be sure to modify the make.inc file for your system.
(2) Build the f2c libraries by doing:
make f2clib
##############################################################################
WARNING: 1) If your system lacks onexit() and you are not using an ANSI C
compiler, then you should change your F2CCFLAGS line in
make.inc to
F2CCFLAGS=$(CFLAGS) -DNO_ONEXIT
On at least some Sun systems, it is better to use
F2CCFLAGS=$(CFLAGS) -Donexit=on_exit
2) On at least some Sun systems, the type declaration in
F2CLIBS/libI77/rawio.h: extern FILE *fdopen(int, char*)
is not consistent with the one defined in stdio.h. In this case
you should comment out this line.
##############################################################################
(3) To run CLAPACK, you need to create a BLAS library.
The performance of CLAPACK largely depends on the performance
of the BLAS library.
You can either use the reference BLAS library included with
this distribution, which is easy to install but not optimized to be
fast on any particular machine, or else find a version of the
BLAS optimized for your machine.
If you want to use the reference BLAS library included with
this distribution, build it by doing
make blaslib
from the main directory.
If you want to find a BLAS library optimized for your machine,
see the note below for more details;
see also the README in the BLAS/WRAP directory.
(4) Compile and run the BLAS TESTING code by doing:
cd CLAPACK/BLAS/TESTING; make -f Makeblat2
cd CLAPACK/BLAS
xblat2s < sblat2.in
xblat2d < dblat2.in
xblat2c < cblat2.in
xblat2z < zblat2.in
cd CLAPACK/BLAS/TESTING; make -f Makeblat3
cd CLAPACK/BLAS
xblat3s < sblat3.in
xblat3d < dblat3.in
xblat3c < cblat3.in
xblat3z < zblat3.in
Inspect the output files *.SUMM to confirm that no errors occurred.
{NOTE: If a compiling error involving _atexit appears then see information
within the WARNING above.}
{NOTE: For the highest performance, it is best to use a version of the BLAS
optimized for your particular machine. This may be done by modifying
the line
BLASLIB = ../../blas$(PLAT).a
in CLAPACK/make.inc to point to the optimized BLAS.
Link with BLAS which provides the standard CBLAS interface
==========================================================
If you are using a version of the BLAS which provides the standard
CBLAS interface (e.g. ATLAS), you need to add the appropriate "wrapper" library.
you can make the wrapper library libcblaswr.a by typing
"make cblaswrap" from the main directory. For this setup
(ATLAS with the CBLAS wrapper), the BLASLIB line might look like
Example:
Modification to make.inc
CC = gcc
BLASLIB = ../../libcblaswr.a -lcblas -latlas
Creation of libcblaswr.a : make cblaswrap
Link with BLAS which Fortran calling interface
===============================================
Two possibilities:
- add -DNO_BLAS_WRAP to the CC variable to when compiling and no need of a "wrapper" library
Example:
CC = gcc -DNO_BLAS_WRAP
BLASLIB = -lgoto -lpthread
- add the sample Fortran calling interface (libfblaswr.a) for systems with
Sun-style Fortran calling conventions is also provided; however,
this interface will need modifications to work on other
architectures which have different Fortran calling convensions.
See the README in the BLAS/WRAP subdirectory for further information.
Example:
CC = gcc
BLASLIB = ../../libfblaswr.a -lgoto -lpthread
Creation of libfblaswr.a : make fblaswrap
}
(5) Build the archive containing lapack source code by doing:
cd CLAPACK/SRC; make
(6) Compile the matrix generation software, the eigenroutine TESTING
code, the linear system TESTING code, and run the LAPACK tests
by doing:
cd CLAPACK/TESTING/MATGEN; make
cd CLAPACK/TESTING; make
Inspect the output files *.out to confirm that no errors occurred.
I. Compile the matrix generation software, the eigenroutine TESTING code,
the linear system TESTING code, and run the LAPACK tests separately
by doing:
cd CLAPACK/TESTING/MATGEN; make
cd CLAPACK/TESTING/EIG; make
cd CLAPACK/TESTING/LIN; make
cd CLAPACK/TESTING; make
II. After the executable files and libraries have been created for each
of the compiles, the object files should be removed by doing:
make clean
III. Each 'make' may be accomplished just for one or a subset of the
precisions desired. For example:
make single
make single complex
make single double complex complex16
Using make without any arguments will compile all four precisions.
James Demmel
Xiaoye Li
Chris Puscasiu
Steve Timson
UC Berkeley
Sept 27 1993
{Revised by Susan Ostrouchov and Jude Toth}
{The University of Tennessee at Knoxville}
{October 15, 1993}
{Revised by Xiaoye Li and James Demmel}
{University of California at Berkeley}
{November 22, 1994}
{Revised by David Bindel and James Demmel}
{University of California at Berkeley}
{July 19, 2000}
{Revised by Julie Langou}
{University of Tennessee}
{February 2008}
{Revised by Julie Langou}
{University of Tennessee}
{October 2008, April 2010}
{Revised by Peng Du}
{University of Tennessee}
{May 2009}