Benchmark Linpack | |
---|---|
Type | præstationstest |
Forfatter | Jack Dongarra , Jim Bunch, Cleve Moler , Gilbert Stewart |
Første udgave | 1979 |
Internet side | netlib.org/benchmark/hpl/ |
LINPACK-benchmarks måler computeres beregningsmæssige ydeevne, når de behandler flydende kommatal . Skabt af Jack Dongarra i 1979, måler de, hvor hurtigt en computer kan løse et tæt system af lineære ligninger (SLAE) Ax=b , hvor A er en n gange n matrix. Et lignende problem opstår ofte inden for maskinteknik .
Den seneste version af disse benchmarks bruges til at kompilere TOP500 , en liste, der viser verdens højest ydende supercomputere. [2]
Formålet med at lave test er at evaluere hastigheden af at løse reelle problemer med en computer. At score med en enkelt test er dog en forenkling, fordi ingen enkelt beregningsopgave kan afspejle den overordnede ydeevne af et computersystem. LINPACK-ydeevne til at levere data til at forfine den maksimale ydeevne leveret af computerproducenten (peak-performance er den maksimale teoretiske ydeevne, som en computer kan opnå, beregnet som produktet af processorens clockhastighed og antallet af operationer, der udføres pr. ur), den faktiske ydeevnen vil altid være lavere end den maksimale ydeevne [3] . Computerydelse er en kompleks egenskab, der afhænger af mange indbyrdes forbundne komponenter. Ydeevnen målt af LINPACK benchmark viser antallet af 64-bit flydende komma operationer (additioner og multiplikationer), som computeren udførte pr. sekund, et forhold betegnet " FLOPS ". En computers ydeevne, når den kører rigtige applikationer, vil dog sandsynligvis være væsentligt lavere end den maksimale ydeevne, der opnås, når der køres en tilsvarende LINPACK-test. [fire]
Navnet på disse test er afledt af LINPACK -pakken, et sæt Fortran - algebraiske rutiner , der er meget brugt i 1980'erne og oprindeligt tæt forbundet med LINPACK-testen. LINPACK-pakken er siden blevet erstattet af andre biblioteker.
LINPACK benchmark dukkede første gang op i 1979 som et appendiks til LINPACK matematikbibliotekets brugermanual . [5]
LINPACK er designet til at hjælpe brugere med at vurdere den tid, det tager deres computersystemer at udføre opgaver ved hjælp af LINPACK -pakken . Til dette ekstrapoleres ydeevneresultater opnået på 23 forskellige computere, der løser et problem med en matrixstørrelse på 100 gange 100 elementer.
Denne opgavestørrelse blev valgt under hensyntagen til de karakteristiske hukommelsesstørrelser og processorydelse i den æra:
I årenes løb er der blevet frigivet yderligere versioner med større forskellige problemstørrelser, såsom 300 gange 300 og 1000 gange 1000 nummermatricer. Der er også dukket op implementeringer, der bruger hardwarefunktioner til at fremskynde matrix-vektor- og matrix-matrix-operationer. [6] Parallel databehandling dukkede op i en variant af LINPACK Parallel-testen i slutningen af 1980'erne. [3]
I 1991 blev LINPACK-testen modificeret for at løse problemer af vilkårlig størrelse [7] , hvilket gjorde det muligt for højtydende computere (HPC'er) at nærme sig deres asymptotiske ydeevne.
Siden 1993 er denne test blevet brugt til at kompilere TOP500 -ranglisten .
LINPACK 100 er meget tæt på den originale test offentliggjort i 1979 i LINPACK User Guide ( ISBN 089871172X ). SLAE-løsningen er fremstillet ved partiel -rotation Gaussian-eliminering , der udfører 2/3 n³ + 2n² flydende kommaoperationer, hvor n er 100 og tæt matrix A er 100 gange 100. Den lille størrelse af matrixen og manglen på softwarefleksibilitet er få moderne computere til at demonstrere ydeevne tæt på det maksimale i denne test. Dette benchmark kan dog stadig være nyttigt til at forudsige ydeevne i numerisk intensiv tilpasset kode kompileret med optimeringer. [3]
LINPACK 1000 øger matrixstørrelsen til 1000 gange 1000 elementer og giver ydeevne tættere på det maksimale for en computer. Ændringer i algoritmen er tilladt, dog er et fald i den relative nøjagtighed af løsningen ikke tilladt. Ved beregning af testens ydeevne er formlen for antallet af udførte flydende operationer altid 2 / 3n³ + 2n², med en værdi på n = 1000. [3]
Tidligere generationer af testen var ikke egnede til at teste parallelle computere, [8] og den såkaldte "Linpack's Highly Parallel Computing"-test, alias HPLinpack, blev udviklet. I den nye test kan opgavestørrelsen n øges til den størrelse, der er nødvendig for at optimere maskinens ydeevne. Antallet af operationer formel 2 / 3n³ + 2n² bruges stadig, uanset hvilken algoritme der faktisk anvendes. Brugen af Strassen-algoritmen er ikke tilladt, fordi den forvrænger den faktiske udførelseshastighed. [9] Nøjagtigheden af den fundne løsning skal være sådan, at følgende egenskab er opfyldt:
, hvor er maskinens præcision, og n er størrelsen af problemet, [10] er normen for matricen , og svarer til notationen big-O ("O" big).
Følgende mængder indberettes for hvert computersystem: [3]
Disse resultater bruges til at sammensætte TOP500 -listen over verdens hurtigste supercomputere samt Green500 . Udkommer to gange årligt.
Det foregående afsnit beskrev grundreglerne for benchmarks. Den faktiske implementering af programmet kan variere, der er varianter for Fortran , [11] C [12] og Java [13] .
HPL er en mobil implementering af HPLinpack-opgaven, skabt i programmeringssproget C. Det tjente oprindeligt som en eksempelimplementering, men er siden blevet meget brugt til at indhente data til TOP500-listen , selvom andre implementeringer og pakker kan bruges. HPL opretter et lineært system af ligninger af orden n med tilfældige koefficienter og løser det derefter ved hjælp af en LU-dekomponering med delvis rækkerotation. Implementeringen kræver installerede implementeringer af MPI (message passing libraries) og et matematisk bibliotek: BLAS eller VSIPL [14] .
Generelt har denne implementering følgende karakteristika: [15] [16]
Det hævdes nogle gange, at succesen med LINPACK-testen skyldes den gode skalerbarhed af HPLinpack [17] opgaven , det faktum, at resultatet af testen er et enkelt tal, der er let at sammenligne, og en stor mængde historiske data . [18] Imidlertid blev LINPACK kort efter introduktionen kritiseret for at demonstrere ydeevneniveauer "generelt uden for rækkevidde af alle undtagen et meget lille antal programmører, der kedelig optimerer deres kode til og kun for en given computer." [19] Benchmark tester hastigheden af at løse tætte lineære systemer , men denne opgave er ikke repræsentativ for alle operationer, der almindeligvis udføres i videnskabelig databehandling. [20] Jack Dongarra , medforfatter af LINPACK-testene og TOP500-listen, bemærkede, at disse tests kun fokuserer på "peak"-processorhastigheder og -tal, mens de underudnytter lokale hukommelsesbusser og netværksforbindelser. [21]
Tom Dunning, Jr., direktør for National Center for Supercomputing Applications, beskrev LINPACK-testen som følger: "Linpack-testen er et af de interessante fænomener, hvis anvendelighed bliver latterliggjort af næsten alle, der kender til den. De forstår dens begrænsninger, men testen er populær, fordi den viser et enkelt tal og har været brugt i mange år." [22]
Ifølge Dongarra søger "Top500 aktivt at udvide dækningen af benchmark benchmarks", fordi "det er vigtigt at inkludere flere ydeevnefunktioner og signaturer for hver konkurrent." [23] En af mulighederne for at supplere tests for TOP500 er HPC Challenge Benchmark sæt [24] . Med fremkomsten af petaflops-supercomputere (Petascale) blev Graph500 -testen , som måler antallet af kanter, der krydses pr. sekund (TEPS), foreslået som et alternativ til FLOPS målt med LINPACK [25] . Et andet alternativ er HPCG-ydelsestesten foreslået af Dongarra. [26] [27]
Ifølge Jack Dongarra stiger den tid, som HPLinpack-testen skal køre for at få gode resultater, gradvist. På en konference i 2010 sagde han, at han efter "nogle år" forventer en stigning i varigheden af opsendelsen til omkring 2,5 dage. [28]