# LINPACK

LINPACK bezeichnete zunächst nur eine numerische Programmbibliothek zum Lösen von linearen Gleichungssystemen. Später wurde der Name auch für ein Programm zum Messen der Geschwindigkeit eines Computers verwendet. In der Urfassung dieses Messprogramms wird fast die gesamte Arbeit in zwei Unterprogrammen aus der genannten Programmbibliothek erledigt.

## Hintergrund

LINPACK, das für Linear System Package steht, wurde 1979 von Jack Dongarra, Cleve Moler, Gilbert W. Stewart für Fortran verfasst. Das Messprogramm LINPACK wird zur Leistungsmessung von Supercomputern eingesetzt, da bei den dort häufig implementierten impliziten Lösungsverfahren das Lösen von linearen Gleichungssystemen eine entscheidende Rolle spielt. Das Ergebnis wird in Gleitkommaoperationen pro Sekunde (FLOPS) angegeben und in der TOP500-Liste der schnellsten Supercomputer veröffentlicht. Es gibt von LINPACK auch Versionen für die Programmiersprachen C, C++, Pascal, Java und anderen. Mittlerweile gilt der LINPACK-Benchmark als überholt, als Nachfolger gilt LAPACK, das vor allem für Shared-Memory- und Vektor-Supercomputer geeignet ist und auf diesen auch performanter läuft.

## Aufbau des Benchmarkes

Der Benchmark ist in drei Untertest aufgeteilt.

### Fortran n = 100 Benchmark

Der erste Benchmark besteht darin, eine voll besetzte 100x100 Matrix zu faktorisieren und ein Gleichungssystem durch Zerlegung zu lösen.
Die Grundregeln für die Ausführung dieses Benchmarks sind, dass keine Änderungen am Fortran-Code vorgenommen werden dürfen, es dürfen auch keine Kommentare verändert oder entfernt werden. Nur die Compileroptimierung kann zur Leistungssteigerung eingesetzt werden.

### Linpack n = 1000 Benchmark

Dieser Test ist dem ersten recht ähnlich, mit dem Unterschied, dass hier eine 1000x1000 Matrix zu lösen ist, sowohl der Lösungsalgorithmus als auch die Programmiersprache können allerdings frei gewählt werden.
Die einzige Bedingung besteht darin, dass das Ergebnis eine bestimmte Genauigkeit aufweisen muss, um mit anderen vergleichbar zu sein.

### Linpack’s Highly Parallel Computing Benchmark

Bei diesem Benchmark kann neben dem Algorithmus und der Sprache auch die Größe der Matrix gewählt werden. Allerdings besteht auch hier wieder die Bedingung, dass das Ergebnis eine gewisse Genauigkeit ausweisen muss.

## Kritik

Der Benchmark bewertet Systeme nur im Bezug auf deren Rechengeschwindigkeit beim Lösen linearer Gleichungssysteme. Die Problemstellung, die der LINPACK-Benchmark zu lösen versucht, stellt allerdings eine untypische Anwendung dar, da hier voll besetzte Gleichungssysteme zur Anwendung kommen. Dabei liegt die Anzahl der benötigten Operationen mit N Unbekannten und N Gleichungen in der Größenordnung von $N^{3}$.
Außerdem wird kritisiert, dass der LINPACK-Benchmark zwar die Leistung misst, nicht aber die Effizienz des Supercomputers berücksichtigt.

## LINPACK-Benchmarkergebnisse (Stand November 2018)

Ausgewählte LINPACK-Benchmarks :
| Computer | Beschreibung | Position TOP500 | LINPACK Rmax in TeraFLOPS |
| Summit | Oak Ridge National Laboratory, Oak Ridge, USA | 1. | ca. 143.500,0 |
| Sierra | Lawrence Livermore National Laboratory, USA | 2. | ca. 94.640,0 |
| Sunway TaihuLight | National Supercomputing Center, Wuxi China | 3. | ca. 93.014,6 |
| Tianhe-2 | National Super Computer Center, Guangzhou China | 4. | ca. 61.444,5 |
| Piz Daint | Swiss National Supercomputing Centre, Schweiz | 5. | ca. 21.230,0 |
| Trinity | Vereinigte Staaten von Amerika | 6. | ca. 20.158,7 |
| AI Bridging Cloud Infrastructure | National Institute of Advanced Industrial Science and Technology, Japan | 7. | ca. 19.880,0 |
| SuperMUC-NG | Leibniz-Rechenzentrum, Deutschland | 8. | ca. 19.476,6 |
| Titan (Computer) | Oak Ridge National Laboratory, USA | 9. | ca. 17.590,0 |
| Sequoia | | 10. | ca. 17.173,2 |
| CPU | Beschreibung | | LINPACK Rmax in GigaFLOPS |
| 2 × AMD Opteron 6274, 2,2 GHz | Server im Jahr 2012 (64 Bit) | – | ca. 204,9 |
| 2 × Intel Xeon DP X5680, 3,33 GHz | Workstation im Jahr 2010 (64 Bit) | – | ca. 94,8 |
| Intel Core i7, 3,20 GHz, 4 Kerne | Standard-PC im Jahr 2009 (64 Bit) | – | ca. 33,0 |
| Intel Core 2 Quad, 2,66 GHz | Standard-PC im Jahr 2007 (64 Bit) | – | ca. 23,5 |
| Intel Core 2 Duo, 2,66 GHz | Standard-PC im Jahr 2007 (64 Bit) | – | ca. 12,5 |
| AMD Athlon 64 X2 6000+, 3,00 GHz | Standard-PC im Jahr 2007 (64 Bit) | – | ca. 8,4 |
| Intel Itanium 2, 1,6 GHz | Workstation (64 Bit) | – | ca. 6,4 |
| Intel Pentium 4, 3,2 GHz | Standard-PC im Jahr 2003 | – | ca. 3,1 |
| Intel Pentium II, 450 MHz | Standard-PC im Jahr 1999 | – | ca. 0,4 |
| Raspberry Pi, 700 MHz | Educational Board | – | ca. 0,01625 |
| Intel 386DX, 33 MHz | Standard-PC im Jahr 1989 | – | ca. 0,008 |