
LINPACK is a numerical subroutine library for solving linear equations, leastsquares problems, and for finding singular values.
Last update: Sat Nov 17 16:21:44 2001
Comments, and reports of errata or bugs, are welcome via email to the author, Nelson H. F. Beebe <beebe@math.utah.edu>. In your report, please supply the full document URL, and the title and Last update time stamp recorded near the top of the document.
There is locallyprovided online documentation for LINPACK inside the GNU Emacs info system. In emacs , type Ch i to enter the info system, then type MLocal and MLINPACK. You can do the same thing in the standalone xinfo viewer. That documentation is also available in HTML form for Web browsers.
The standard reference manual for LINPACK is this book:
@String{pubSIAM = "Society for Industrial and Applied Mathematics"} @String{pubSIAM:adr = "Philadelphia, PA, USA"} @Book{Dongarra:1979:LUG, author = "J. J. Dongarra and C. B. Moler and J. R. Bunch and G.W. Stewart", title = "{LINPACK} Users' Guide", publisher = pubSIAM, address = pubSIAM:adr, pages = "320", year = "1979", ISBN = "089871172X (paperback)", LCCN = "QA76.73 .L22 L5 1979, QA214 .L56 1979", bibdate = "Mon Dec 13 15:18:20 1993", }
The development of LINPACK is chronicled in Chapter 2 of this book:
@String{pubPH = "Pren{\}ticeHall"} @String{pubPH:adr = "Upper Saddle River, NJ 07458, USA"} @Book{Cowell:1984:SDM, editor = "Wayne R. Cowell", title = "Sources and Development of Mathematical Software", publisher = pubPH, address = pubPH:adr, pages = "xii + 404", year = "1984", ISBN = "0138235015", LCCN = "QA76.95 .S68 1984", bibdate = "Tue Dec 14 22:44:45 1993", series = "PrenticeHall Series in Computational Mathematics, Cleve Moler, Advisor", }
LINPACK, and its predecessor EISPACK, grew out of early work published in the journal Numerische Mathematik that was later collected and republished in this single book:
@String{pubSV = "Spring{\}erVer{\}lag"} @String{pubSV:adr = "Berlin, Germany~/ Heidelberg, Germany~/ London, UK~/ etc."} @Book{Wilkinson:1971:LA, editor = "James H. Wilkinson and Christian Reinsch", booktitle = "Linear Algebra", title = "Linear Algebra", volume = "II", publisher = pubSV, address = pubSV:adr, pages = "viii + 439", year = "1971", ISBN = "0387054146, 3540054146", LCCN = "QA251 .W67", bibdate = "Wed Dec 15 18:44:50 1993", series = "Handbook for Automatic Computation, Editors: F. L. Bauer, A. S. Householder, F. W. J. Olver, H. Rutishauser, K. Samelson and E. Stiefel", }
Fortran code can be linked with the LINPACK library like this:
f77 o fcode fcode.f L/usr/local/lib llinpack
LINPACK is one of several other xxxpack projects, among them, EISPACK (for matrix eigenvalues and eigenvectors, and singularvalue decompositions), MINPACK (for function minimization and leastsquares solutions), and LAPACK (for linear equations, leastsquares, singularvalue decomposition, and eigenvalue/eigenvector solution).
The LINPACK library has been used extensively in the computing industry as a performance benchmark, and results have been tabulated for a very large number of computers in a report that is updated approximately twice a year. The report is available in PostScript (performance.ps) and PDF form (performance.pdf).
The LINPACK benchmark is used to compare highperformance computers: the ranking of the world's top 500 supercomputers is frequently cited.
There are two categories of LINPACK benchmarks: solution of a particular linear equation system of order 100, using the original LINPACK software, and documented compilation options, and a `towards peak performance' benchmark of order 1000, where competitors are permitted to rewrite, or even replace, the LINPACK code with highly optimized code that might even use a different algorithm, provided it gets the correct answer.
Since linear equation solutions for matrices of O(N) rows and O(N) columns take O(N^3) operations, when N = 100, about a million floatingpoint operations (flops) are needed. This was a modest benchmark in the 1970s, but takes only a fraction of a second on machines manufactured in the 1990s and later. Also, O(N^2) storage is needed, so with N = 100, less than 100KB of memory suffices. That is smaller than the size of the highspeed cache memory of most machines of the 1990s or later, so the code runs faster than it would if the data were not in cache. Compilers have sometimes been modified to recognize LINPACKtype inner loops and handle them with utmost efficiency, so as to obtain good LINPACK benchmark numbers for marketing hype. Thus, the N = 100 LINPACK benchmark tends to overestimate performance.
The N = 1000 LINPACK benchmark takes of the order of a billion flops, and more memory than is available in the caches of most machines, so it is somewhat better as a performance measurement, but it too gives unfair weight to certain architecture classes, such as vector computers.
Thus, you should consider LINPACK benchmark numbers as performance that your program probably will not achieve!