Benchmark Linpack | |
---|---|
Sorts | utvärderingsprov |
Författare | Jack Dongarra , Jim Bunch, Cleve Moler , Gilbert Stewart |
Första upplagan | 1979 |
Hemsida | netlib.org/benchmark/hpl/ |
LINPACK -riktmärkena mäter datorers beräkningsprestanda vid bearbetning av flyttal . Skapad av Jack Dongarra 1979, mäter de hur snabbt en dator kan lösa ett tätt system av linjära ekvationer (SLAE) Ax=b , där A är en n gånger n matris. Ett liknande problem uppstår ofta inom området maskinteknik .
Den senaste versionen av dessa riktmärken används för att sammanställa TOP500 , en lista som listar världens högst presterande superdatorer. [2]
Syftet med att skapa tester är att utvärdera hastigheten för att lösa verkliga problem med en dator. Men poängsättning med ett enda test är en förenkling eftersom ingen enskild beräkningsuppgift kan återspegla den övergripande prestandan hos ett datorsystem. LINPACK-prestanda för att tillhandahålla data för att förfina toppprestanda som tillhandahålls av datortillverkaren (toppprestanda är den maximala teoretiska prestanda som en dator kan uppnå, beräknat som produkten av processorns klockhastighet och antalet operationer som utförs per klocka), den faktiska prestanda kommer alltid att vara lägre än den maximala prestandan [ 3] . Datorprestanda är en komplex egenskap som beror på många inbördes relaterade komponenter. Prestandan som mäts av LINPACK-riktmärket visar antalet 64-bitars flyttalsoperationer (additioner och multiplikationer) som datorn utförde per sekund, ett förhållande som betecknas " FLOPS ". Prestandan hos en dator när man kör riktiga applikationer är dock sannolikt betydligt lägre än den maximala prestanda som uppnås när man kör ett motsvarande LINPACK-test. [fyra]
Namnet på dessa tester kommer från LINPACK -paketet, en uppsättning Fortran algebraiska rutiner som användes i stor utsträckning på 1980-talet och som ursprungligen var nära besläktade med LINPACK-testet. LINPACK-paketet har sedan ersatts av andra bibliotek.
LINPACK-riktmärket dök upp första gången 1979 som en bilaga till LINPACKs mattebiblioteks användarmanual . [5]
LINPACK har utformats för att hjälpa användare att uppskatta hur lång tid det tar för deras datorsystem att slutföra uppgifter med hjälp av LINPACK -paketet . För detta extrapoleras prestandaresultat som erhållits på 23 olika datorer som löser ett problem med en matrisstorlek på 100 gånger 100 element.
Denna uppgiftsstorlek valdes med hänsyn till de karakteristiska minnesstorlekarna och processorprestanda under den eran:
Under årens lopp har ytterligare versioner släppts med större olika problemstorlekar, såsom 300 gånger 300 och 1000 gånger 1000 nummermatriser. Det har också dykt upp implementeringar som använder hårdvarufunktioner för att påskynda matris-vektor- och matrismatrisoperationer. [6] Parallell databehandling dök upp i en variant av LINPACK Parallelltest i slutet av 1980-talet. [3]
1991 modifierades LINPACK-testet för att lösa problem av godtycklig storlek [7] , vilket gjorde att högpresterande datorer (HPC) kunde närma sig sin asymptotiska prestanda.
Sedan 1993 har detta test använts för att sammanställa TOP500- rankingen .
LINPACK 100 ligger mycket nära det ursprungliga testet som publicerades 1979 i LINPACK User Guide ( ISBN 089871172X ). SLAE-lösningen produceras genom partiell -rotation gaussisk eliminering , utför 2/3 n³ + 2n² flyttalsoperationer, där n är 100 och tät matris A är 100 gånger 100. Matrisens ringa storlek och bristen på mjukvaruflexibilitet är få moderna datorer för att visa prestanda nära maximalt i detta test. Detta riktmärke kan dock fortfarande vara användbart för att förutsäga prestanda i numeriskt intensiv anpassad kod kompilerad med optimeringar. [3]
LINPACK 1000 ökar matrisstorleken till 1000 gånger 1000 element och ger prestanda närmare det maximala för en dator. Ändringar i algoritmen är tillåtna, men en minskning av lösningens relativa noggrannhet är inte tillåten. Vid beräkning av testets prestanda är formeln för antalet utförda flytande operationer alltid 2 / 3n³ + 2n², med värdet n = 1000. [3]
Tidigare generationer av testet var inte lämpliga för att testa parallella datorer, [8] och det så kallade "Linpack's Highly Parallel Computing"-testet, aka HPLinpack, utvecklades. I det nya testet kan uppgiftsstorleken n ökas till den storlek som krävs för att optimera maskinens prestanda. Antalet operationsformel 2 / 3n³ + 2n² används fortfarande, oavsett vilken algoritm som faktiskt används. Användningen av Strassen-algoritmen är inte tillåten eftersom den förvränger den faktiska exekveringshastigheten. [9] Noggrannheten hos den hittade lösningen måste vara sådan att följande egenskap är uppfylld:
, där är maskinens precision, och n är storleken på problemet, [10] är normen för matrisen och motsvarar notationen big-O ("O" big).
Följande kvantiteter rapporteras för varje datorsystem: [3]
Dessa resultat används för att sammanställa TOP500- listan över världens snabbaste superdatorer, samt Green500 . Utkommer två gånger om året.
Föregående avsnitt beskrev grundreglerna för benchmarks. Den faktiska implementeringen av programmet kan skilja sig åt, det finns varianter för Fortran , [11] C [12] och Java [13] .
HPL är en mobil implementering av uppgiften HPLinpack, skapad i programmeringsspråket C. Det fungerade ursprungligen som en exempelimplementering, men har sedan dess blivit allmänt använd för att få data för TOP500-listan , även om andra implementeringar och paket kan användas. HPL skapar ett linjärt system av ekvationer av ordningen n med slumpmässiga koefficienter och löser det sedan med hjälp av en LU-sönderdelning med partiell radrotation. Implementeringen kräver installerade implementeringar av MPI (message passing library) och ett matematiskt bibliotek: BLAS eller VSIPL [14] .
I allmänhet har denna implementering följande egenskaper: [15] [16]
Det hävdas ibland att framgången med LINPACK-testet beror på den goda skalbarheten hos uppgiften HPLinpack [17] , det faktum att resultatet av testet är ett enda nummer som är lätt att jämföra och en stor mängd historisk data . [18] Emellertid, kort efter introduktionen, kritiserades LINPACK för att visa prestandanivåer "i allmänhet utanför räckhåll för alla utom ett mycket litet antal programmerare som tröttsamt optimerar sin kod för och endast för en given dator." [19] Benchmark testar hastigheten för att lösa täta linjära system , men denna uppgift är inte representativ för alla operationer som vanligtvis utförs inom vetenskaplig beräkning. [20] Jack Dongarra , medförfattare till LINPACK-testerna och TOP500-listan, noterade att dessa tester bara fokuserar på "topp" processorhastigheter och siffror, samtidigt som de underutnyttjar lokala minnesbussar och nätverksanslutningar. [21]
Tom Dunning, Jr., chef för National Center for Supercomputing Applications, beskrev LINPACK-testet så här: "Linpack-testet är ett av de intressanta fenomen vars användbarhet förlöjligas av nästan alla som känner till det. De förstår dess begränsningar, men testet är populärt eftersom det visar ett enda nummer och har använts i många år.” [22]
Enligt Dongarra, "Top500 försöker aktivt utöka täckningen av benchmark benchmarks" eftersom "det är viktigt att inkludera fler prestandafunktioner och signaturer för varje konkurrent." [23] Ett av alternativen för att komplettera tester för TOP500 är HPC Challenge Benchmark set [24] . Med tillkomsten av petaflops superdatorer (Petascale) föreslogs Graph500 -testet , som mäter antalet kanter som korsas per sekund (TEPS), som ett alternativ till FLOPS mätt med LINPACK [25] . Ett annat alternativ är HPCG-prestandatestet som föreslås av Dongarra. [26] [27]
Enligt Jack Dongarra ökar den tid som HPLinpack-testet behöver pågå för att få bra resultat gradvis. Vid en konferens 2010 sa han att han efter "några år" räknar med en ökning av lanseringens varaktighet till cirka 2,5 dagar. [28]