Benchmark Linpack | |
---|---|
Tip de | test de performanță |
Autor | Jack Dongarra , Jim Bunch, Cleve Moler , Gilbert Stewart |
Prima editie | 1979 |
Site-ul web | netlib.org/benchmark/hpl/ |
Benchmark- urile LINPACK măsoară performanța de calcul a computerelor atunci când procesează numere în virgulă mobilă . Creați de Jack Dongarra în 1979, ei măsoară cât de repede poate rezolva un computer un sistem dens de ecuații liniare (SLAE) Ax=b , unde A este o matrice n de n . O problemă similară apare adesea în domeniul ingineriei mecanice .
Cea mai recentă versiune a acestor benchmark-uri este folosită pentru a compila TOP500 , o listă care listează cele mai performante supercomputere din lume. [2]
Scopul creării de teste este de a evalua viteza de rezolvare a problemelor reale de către un computer. Cu toate acestea, notarea cu un singur test este o simplificare, deoarece nicio sarcină de calcul nu poate reflecta performanța generală a unui sistem informatic. Performanța LINPACK pentru a furniza date pentru a rafina performanța de vârf furnizată de producătorul computerului (performanța de vârf este performanța teoretică maximă pe care o poate atinge un computer, calculată ca produsul dintre viteza tacului procesorului și numărul de operații efectuate pe ceas), valoarea reală performanța va fi întotdeauna mai mică decât performanța maximă [3] . Performanța computerului este o caracteristică complexă care depinde de multe componente interconectate. Performanța măsurată de benchmark-ul LINPACK arată numărul de operații în virgulă mobilă pe 64 de biți (adunări și înmulțiri) pe care computerul le-a efectuat pe secundă, raport denumit „ FLOPS ”. Cu toate acestea, performanța unui computer atunci când rulează aplicații reale este probabil să fie semnificativ mai mică decât performanța maximă atinsă atunci când rulează un test LINPACK pe măsură. [patru]
Numele acestor teste este derivat din pachetul LINPACK , un set de rutine algebrice Fortran utilizate pe scară largă în anii 1980 și inițial strâns legate de testul LINPACK. Pachetul LINPACK a fost înlocuit de atunci cu alte biblioteci.
Benchmark-ul LINPACK a apărut pentru prima dată în 1979 ca anexă la manualul de utilizare a bibliotecii de matematică LINPACK . [5]
LINPACK a fost conceput pentru a ajuta utilizatorii să estimeze timpul necesar sistemelor lor computerizate pentru a finaliza sarcinile folosind pachetul LINPACK . Pentru aceasta, sunt extrapolate rezultatele de performanță obținute pe 23 de computere diferite care rezolvă o problemă cu o dimensiune a matricei de 100 pe 100 de elemente.
Această dimensiune a sarcinii a fost aleasă luând în considerare dimensiunile caracteristice ale memoriei și performanța procesorului în acea epocă:
De-a lungul anilor, au fost lansate versiuni suplimentare cu dimensiuni mai mari ale problemelor, cum ar fi matrice 300 cu 300 și 1000 cu 1000 de numere. Au apărut, de asemenea, implementări care folosesc capabilități hardware pentru a accelera operațiunile matrice-vector și matrice-matrice. [6] Procesarea paralelă a datelor a apărut într-o variantă a testului LINPACK Parallel la sfârșitul anilor 1980. [3]
În 1991, testul LINPACK a fost modificat pentru a rezolva probleme de dimensiune arbitrară [7] , permițând calculatoarelor de înaltă performanță (HPC) să se apropie de performanța lor asimptotică.
Din 1993, acest test a fost folosit pentru a compila clasamentul TOP500 .
LINPACK 100 este foarte aproape de testul original publicat în 1979 în Ghidul utilizatorului LINPACK ( ISBN 089871172X ). Soluția SLAE este produsă prin eliminarea Gauss cu rotație parțială , efectuând operații cu virgulă mobilă 2 / 3 n³ + 2n², unde n este 100 și matricea densă A este 100 cu 100. Dimensiunea mică a matricei și lipsa flexibilității software sunt puține computere moderne care să demonstreze performanțe aproape de maxim la acest test. Cu toate acestea, acest benchmark poate fi în continuare util în prezicerea performanței în codul personalizat intensiv numeric, compilat cu optimizări. [3]
LINPACK 1000 mărește dimensiunea matricei la 1000 cu 1000 de elemente și oferă performanțe mai apropiate de maximul unui computer. Sunt permise modificări ale algoritmului, dar nu este permisă o scădere a preciziei relative a soluției. La calcularea performanței testului, formula pentru numărul de operațiuni flotante efectuate este întotdeauna 2 / 3n³ + 2n², cu o valoare de n = 1000. [3]
Generațiile anterioare ale testului nu erau potrivite pentru testarea computerelor paralele [8] și așa-numitul test „Linpack’s Highly Parallel Computing”, alias HPLinpack, a fost dezvoltat. În noul test, dimensiunea sarcinii n poate fi mărită la dimensiunea necesară pentru a optimiza performanța mașinii. Numărul de operații formula 2 / 3n³ + 2n² este încă folosită, indiferent de algoritmul utilizat efectiv. Utilizarea algoritmului Strassen nu este permisă deoarece distorsionează viteza reală de execuție. [9] Acuratețea soluției găsite trebuie să fie astfel încât să fie îndeplinită următoarea proprietate:
, unde este precizia mașinii și n este dimensiunea problemei, [10] este norma matricei și corespunde notației big-O ("O" mare).
Următoarele cantități sunt raportate pentru fiecare sistem informatic: [3]
Aceste rezultate sunt folosite pentru a compila lista TOP500 a celor mai rapide supercomputere din lume, precum și Green500 . Publicat de două ori pe an.
Secțiunea anterioară a descris regulile de bază pentru benchmark-uri. Implementarea efectivă a programului poate diferi, există variante pentru Fortran , [11] C [12] și Java [13] .
HPL este o implementare mobilă a sarcinii HPLinpack, creată în limbajul de programare C. A servit inițial ca exemplu de implementare, dar de atunci a devenit utilizat pe scară largă pentru a obține date pentru lista TOP500 , deși pot fi utilizate și alte implementări și pachete. HPL creează un sistem liniar de ecuații de ordin n cu coeficienți aleatori și apoi îl rezolvă folosind o descompunere LU cu rotație parțială a rândurilor. Implementarea necesită implementări instalate de MPI (Message Passing Library) și o bibliotecă matematică: BLAS sau VSIPL [14] .
În general, această implementare are următoarele caracteristici: [15] [16]
Uneori se susține că succesul testului LINPACK se datorează scalabilității bune a sarcinii HPLinpack [17] , faptului că rezultatul testului este un singur număr ușor de comparat și unei cantități mari de date istorice . [18] Cu toate acestea, la scurt timp după introducerea sa, LINPACK a fost criticat pentru că a demonstrat niveluri de performanță „în general, dincolo de îndemâna tuturor, cu excepția unui număr foarte mic de programatori care își optimizau plictisitor codul pentru și numai pentru un anumit computer”. [19] Benchmark testează viteza de rezolvare a sistemelor liniare dense , dar această sarcină nu este reprezentativă pentru toate operațiile efectuate în mod obișnuit în calculul științific. [20] Jack Dongarra , coautor al testelor LINPACK și al listei TOP500, a remarcat că aceste teste se concentrează doar pe viteze și numere „de vârf” ale procesorului, în timp ce subutilizarea magistralelor de memorie locală și a interconexiunilor de rețea. [21]
Tom Dunning, Jr., directorul Centrului Național pentru Aplicații de Supercomputing, a descris testul LINPACK astfel: „Testul Linpack este unul dintre acele fenomene interesante a căror utilitate este ridiculizată de aproape toți cei care știu despre el. Ei înțeleg limitările sale, dar testul este popular deoarece arată un singur număr și a fost folosit de mulți ani.” [22]
Potrivit lui Dongarra, „Top500 caută în mod activ să extindă acoperirea benchmark-urilor de referință”, deoarece „este important să includă mai multe caracteristici de performanță și semnături pentru fiecare concurent”. [23] Una dintre opțiunile de completare a testelor pentru TOP500 este setul HPC Challenge Benchmark [24] . Odată cu apariția supercalculatoarelor petaflops (Petascale), testul Graph500 , care măsoară numărul de muchii parcurse pe secundă (TEPS), a fost propus ca alternativă la FLOPS măsurată de LINPACK [25] . O altă alternativă este testul de performanță HPCG propus de Dongarra. [26] [27]
Potrivit lui Jack Dongarra , timpul necesar testului HPLinpack pentru a obține rezultate bune crește treptat. La o conferință din 2010, acesta a spus că după „câțiva ani” se așteaptă la o creștere a duratei lansării la aproximativ 2,5 zile. [28]