Difference between revisions of "LAPACK"

From CBLFS
Jump to navigationJump to search
 
(5 intermediate revisions by one other user not shown)
Line 2: Line 2:
 
|-
 
|-
 
!Download Source:
 
!Download Source:
| http://cross-lfs.org/~arowland/tarballs/l/lapack-lite-autotooled-{{Lapack-Version}}.tar.bz2
+
| http://www.netlib.org/lapack/lapack-{{Lapack-Version}}.tgz
 
|}
 
|}
  
 
----
 
----
  
{{Package-Introduction|LAPACK is a '''L'''inear '''A'''lgebra '''PACK'''age that provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision.  LAPACK routines are written so that as much as possible of the computation is performed by calls to the [[BLAS]].
+
{{Package-Introduction|LAPACK is a '''L'''inear '''A'''lgebra '''PACK'''age that provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision.  LAPACK routines are written so that as much as possible of the computation is performed by calls to the [[ATLAS]].
  
LAPACK libraries can also be obtained from ATLAS or the microprocessor vendor's math library, such as AMD's [[ACML]].|http://www.netlib.org/lapack/}}
+
LAPACK libraries can also be obtained from ATLAS (incomplete) or the microprocessor vendor's math library, such as AMD's [[ACML]].|http://www.netlib.org/lapack/}}
  
{{Note|These instructions use a source package that has been processed by GNU Autotools by a third party.}}
+
{{Note|These instructions do not install the resulting libraries.  Once the LAPACK libraries are built, build [[ATLAS]].  You will then have optimized ATLAS and LAPACK libraries installed.}}
  
 
== Dependencies ==
 
== Dependencies ==
Line 22: Line 22:
 
* [[GCC]] built with gfortran support
 
* [[GCC]] built with gfortran support
  
=== Recommended ===
+
== Configuration Information ==
  
Either [[BLAS]] or [[ACML]] are recommended otherwise LAPACK will install an unoptimized version of this library.
+
There is no configure script for LAPACK.  All options are set in the make.inc file.  You may wish to modify the following options.
  
== Configuration Information ==
+
{|
 +
|<i>PLAT=</i> appends the architecture to the library name.  Beneficial if building LAPACK for more than one architecture.
 +
|-
 +
|<i>OPTS=</i> sets the options passed to the FORTRAN compiler.
 +
|}
  
 
{{Note|Do not remove the source tree if you plan to build the LAPACK 95 interface.}}
 
{{Note|Do not remove the source tree if you plan to build the LAPACK 95 interface.}}
Line 32: Line 36:
 
== Non-Multilib ==
 
== Non-Multilib ==
  
First we create a make.inc to use in our build.  Please note that these seds presumes you have CFLAGS and LDFLAGS set.
+
First we create a make.inc to use in our build.
  
If you are using gfortran:
+
cp -v make.inc.example make.inc &&
 +
sed -i 's@../../blas$(PLAT).a@/usr/lib/blas/atlas/libblas.a@' make.inc &&
 +
sed -i "s/OPTS    = -funroll-all-loops/& ${CFLAGS} -fPIC/" make.inc
 +
sed -i "s/NOOPT    =/& -fPIC/" make.inc &&
 +
sed -i "s/EXT_ETIME/INT_CPU_TIME/" make.inc
  
sed -e "s:g77:gfortran:" \
+
If you haven't built the F77 compiler provided by gcc-3.3, you need to tell LAPACK that you're using gfortran.
    -e "s:-funroll-all-loops -O3:${CFLAGS} $(pkg-config --cflags blas):" \
 
    -e "s:LOADOPTS =:LOADOPTS = ${LDFLAGS} $(pkg-config --cflags blas):" \
 
    -e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas):" \
 
    -e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.a:" make.inc.example > make.inc
 
  
If you are using g77:
+
  sed -i 's@g77@gfortran@g' make.inc
 
 
  sed -e "s:-funroll-all-loops -O3:${CFLAGS} $(pkg-config --cflags blas):" \
 
    -e "s:LOADOPTS =:LOADOPTS = ${LDFLAGS} $(pkg-config --cflags blas):" \
 
    -e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas):" \
 
    -e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.a:" make.inc.example > make.inc
 
  
 
Compile the LAPACK libraries:
 
Compile the LAPACK libraries:
  
  ./configure --libdir=/usr/lib/lapack/reference --with-blas="$(pkg-config --libs blas)" &&
+
  make lib
make
 
 
 
Install the libraries:
 
 
 
make install
 
  
 
Install the documentation that comes with the LAPACK library:
 
Install the documentation that comes with the LAPACK library:
Line 68: Line 62:
 
== Multilib ==
 
== Multilib ==
  
=== 32Bit ===
+
First we create a make.inc to use in our build.
 +
 
 +
cp -v make.inc.example make.inc &&
 +
sed -i "s/NOOPT    =/& -fPIC/" make.inc &&
 +
sed -i "s/EXT_ETIME/INT_CPU_TIME/" make.inc
  
First we create a make.inc to use in our build.  Please note that these seds presumes you have CFLAGS and LDFLAGS set.
+
If you haven't built the F77 compiler provided by gcc-3.3, you need to tell LAPACK that you're using gfortran.
  
If you are using gfortran:
+
sed -i 's@g77@gfortran@g' make.inc
  
sed -e "s:g77:gfortran:" \
+
=== 32Bit ===
    -e "s:-funroll-all-loops -O3:${BUILD32} $(pkg-config --cflags blas):" \
 
    -e "s:LOADOPTS =:LOADOPTS = ${LD_BUILD32} $(pkg-config --cflags blas):" \
 
    -e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas):" \
 
    -e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.a:" make.inc.example > make.inc
 
  
If you are using g77:
+
Add your build options to the make file:
  
  sed -e "s:-funroll-all-loops -O3:${BUILD32} $(pkg-config --cflags blas):" \
+
  sed -i 's@../../blas$(PLAT).a@/usr/lib/blas/atlas/libblas.a@' make.inc &&
    -e "s:LOADOPTS =:LOADOPTS = ${LD_BUILD32} $(pkg-config --cflags blas):" \
+
sed -i "s/OPTS    = -funroll-all-loops/& ${BUILD32} -fPIC/" make.inc
    -e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas):" \
 
    -e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.a:" make.inc.example > make.inc
 
  
 
Compile the LAPACK libraries:
 
Compile the LAPACK libraries:
  
  ./configure --libdir=/usr/lib/lapack/reference --with-blas="$(pkg-config --libs blas)" &&
+
  make lib
make
 
 
 
Install the libraries:
 
  
make install
 
 
 
=== N32 ===
 
=== N32 ===
  
First we create a make.inc to use in our build.  Please note that these seds presumes you have CFLAGS and LDFLAGS set.
+
Add your build options to the make file:
 
 
If you are using gfortran:
 
  
  sed -e "s:g77:gfortran:" \
+
  sed -i 's@../../blas$(PLAT).a@/usr/lib32/blas/atlas/libblas.a@' make.inc &&
    -e "s:-funroll-all-loops -O3:${BUILDN32} $(pkg-config --cflags blas):" \
+
  sed -i "s/OPTS    = -funroll-all-loops/& ${BUILDn32} -fPIC/" make.inc
    -e "s:LOADOPTS =:LOADOPTS = ${LD_BUILDN32} $(pkg-config --cflags blas):" \
 
    -e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas):" \
 
    -e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.a:" make.inc.example > make.inc
 
 
 
If you are using g77:
 
 
 
  sed -e "s:-funroll-all-loops -O3:${BUILDN32} $(pkg-config --cflags blas):" \
 
    -e "s:LOADOPTS =:LOADOPTS = ${LD_BUILDN32} $(pkg-config --cflags blas):" \
 
    -e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas):" \
 
    -e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.a:" make.inc.example > make.inc
 
  
 
Compile the LAPACK libraries:
 
Compile the LAPACK libraries:
  
./configure --libdir=/usr/lib32/lapack/reference --with-blas="$(pkg-config --libs blas)" &&
+
  make lib
  make
 
 
 
Install the libraries:
 
 
 
make install
 
  
 
=== 64Bit ===
 
=== 64Bit ===
  
First we create a make.inc to use in our build.  Please note that these seds presumes you have CFLAGS and LDFLAGS set.
+
Add your build options to the make file:
 
 
If you are using gfortran:
 
 
 
sed -e "s:g77:gfortran:" \
 
    -e "s:-funroll-all-loops -O3:${BUILD64} $(pkg-config --cflags blas):" \
 
    -e "s:LOADOPTS =:LOADOPTS = ${LD_BUILD64} $(pkg-config --cflags blas):" \
 
    -e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas):" \
 
    -e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.a:" make.inc.example > make.inc
 
  
If you are using g77:
+
  sed -i 's@../../blas$(PLAT).a@/usr/lib64/blas/atlas/libblas.a@' make.inc &&
 
+
sed -i "s/OPTS    = -funroll-all-loops/& ${BUILD64} -fPIC/" make.inc
  sed -e "s:-funroll-all-loops -O3:${BUILD64} $(pkg-config --cflags blas):" \
 
    -e "s:LOADOPTS =:LOADOPTS = ${LD_BUILD64} $(pkg-config --cflags blas):" \
 
    -e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas):" \
 
    -e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.a:" make.inc.example > make.inc
 
  
 
Compile the LAPACK libraries:
 
Compile the LAPACK libraries:
  
./configure --libdir=/usr/lib64/lapack/reference --with-blas="$(pkg-config --libs blas)" &&
+
  make lib
  make
 
 
 
Install the libraries:
 
 
 
make install
 
  
 
Install the documentation that comes with the LAPACK library:
 
Install the documentation that comes with the LAPACK library:
Line 160: Line 113:
 
  done
 
  done
  
== Contents ==
+
[[Category:Science_Engineering]]
 
 
{|style="text-align: left;"
 
|-valign="top"
 
! Installed Libraries:
 
|liblapack.{a,la,so}
 
|}
 
 
 
=== Short Description ===
 
 
 
{|style="text-align: left;"
 
|-valign="top"
 
!liblapack.a
 
|Library containing the linear algebra functions.
 
|}
 

Latest revision as of 17:39, 19 March 2009

Download Source: http://www.netlib.org/lapack/lapack-3.1.1.tgz

Introduction to LAPACK

LAPACK is a Linear Algebra PACKage that provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision. LAPACK routines are written so that as much as possible of the computation is performed by calls to the ATLAS.

LAPACK libraries can also be obtained from ATLAS (incomplete) or the microprocessor vendor's math library, such as AMD's ACML.

Project Homepage: http://www.netlib.org/lapack/

Caution.png

Note

These instructions do not install the resulting libraries. Once the LAPACK libraries are built, build ATLAS. You will then have optimized ATLAS and LAPACK libraries installed.

Dependencies

Required

One of the following is required to build LAPACK:

  • GCC-3.3 built with F77 support
  • GCC built with gfortran support

Configuration Information

There is no configure script for LAPACK. All options are set in the make.inc file. You may wish to modify the following options.

PLAT= appends the architecture to the library name. Beneficial if building LAPACK for more than one architecture.
OPTS= sets the options passed to the FORTRAN compiler.
Caution.png

Note

Do not remove the source tree if you plan to build the LAPACK 95 interface.

Non-Multilib

First we create a make.inc to use in our build.

cp -v make.inc.example make.inc &&
sed -i 's@../../blas$(PLAT).a@/usr/lib/blas/atlas/libblas.a@' make.inc &&
sed -i "s/OPTS     = -funroll-all-loops/& ${CFLAGS} -fPIC/" make.inc
sed -i "s/NOOPT    =/& -fPIC/" make.inc &&
sed -i "s/EXT_ETIME/INT_CPU_TIME/" make.inc

If you haven't built the F77 compiler provided by gcc-3.3, you need to tell LAPACK that you're using gfortran.

sed -i 's@g77@gfortran@g' make.inc

Compile the LAPACK libraries:

make lib

Install the documentation that comes with the LAPACK library:

install -v -m755 -d /usr/share/doc/LAPACK-3.1.1/html &&
install -v INSTALL/lawn81.{pdf,ps} /usr/share/doc/LAPACK-3.1.1/ &&
for doc in html/*.html; do
  cp -v $doc /usr/share/doc/LAPACK-3.1.1/html
done

Multilib

First we create a make.inc to use in our build.

cp -v make.inc.example make.inc &&
sed -i "s/NOOPT    =/& -fPIC/" make.inc &&
sed -i "s/EXT_ETIME/INT_CPU_TIME/" make.inc

If you haven't built the F77 compiler provided by gcc-3.3, you need to tell LAPACK that you're using gfortran.

sed -i 's@g77@gfortran@g' make.inc

32Bit

Add your build options to the make file:

sed -i 's@../../blas$(PLAT).a@/usr/lib/blas/atlas/libblas.a@' make.inc &&
sed -i "s/OPTS     = -funroll-all-loops/& ${BUILD32} -fPIC/" make.inc

Compile the LAPACK libraries:

make lib

N32

Add your build options to the make file:

sed -i 's@../../blas$(PLAT).a@/usr/lib32/blas/atlas/libblas.a@' make.inc &&
sed -i "s/OPTS     = -funroll-all-loops/& ${BUILDn32} -fPIC/" make.inc

Compile the LAPACK libraries:

make lib

64Bit

Add your build options to the make file:

sed -i 's@../../blas$(PLAT).a@/usr/lib64/blas/atlas/libblas.a@' make.inc &&
sed -i "s/OPTS     = -funroll-all-loops/& ${BUILD64} -fPIC/" make.inc

Compile the LAPACK libraries:

make lib

Install the documentation that comes with the LAPACK library:

install -v -m755 -d /usr/share/doc/LAPACK-3.1.1/html &&
install -v INSTALL/lawn81.{pdf,ps} /usr/share/doc/LAPACK-3.1.1/ &&
for doc in html/*.html; do
  cp -v $doc /usr/share/doc/LAPACK-3.1.1/html
done