Teste de performanță LINPACK

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 14 august 2022; verificarea necesită 1 editare .
Benchmark Linpack
Tip de test de performanță
Autor Jack Dongarra , Jim Bunch, Cleve Moler , Gilbert Stewart
Prima editie 1979 ( 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.

Istorie

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 .

Benchmarks

LINPACK 100

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

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]

HPLinpack

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.

Implementarea testelor LINPACK

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

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]

Critica

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]

Timpul de execuție a testului

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]

Vezi și

Note

  1. Teste de performanță CPU - LINPACK // parallel.ru / Arhivat 13 noiembrie 2018 la Wayback Machine
  2. 1 2 3 4 5 Dongarra, Jack J.; Luszczek, Piotr & Petitet, Antoine (2003), The LINPACK Benchmark: past, present and future , Concurență și calcul: practică și experiență (John Wiley & Sons, Ltd.): 803–820 , < http://www.netlib .org/utk/people/JackDongarra/PAPERS/hplpaper.pdf > Arhivat 20 ianuarie 2019 la Wayback Machine 
  3. Interviu cu Jack Dongarra de Sander Olson , < http://nextbigfuture.com/2010/06/jack-dongarra-interview-by-sander-olson.html > Arhivat 4 martie 2016 la Wayback Machine 
  4. Dongarra, JJ; Moler, C. B.; Bunch, JR & Stewart, GW (1979), LINPACK: ghidul utilizatorului , ,9780898711721ISBN,SIAM > 
  5. Dongarra, Jack (1988), The LINPACK benchmark: An explication , Supercomputing (Springer Berlin/Heidelberg): 456–474 , < http://www.netlib.org/utk/people/JackDongarra/PAPERS/The-LINPACK- Benchmark-An-Explanation.pdf > Arhivat 4 aprilie 2019 la Wayback Machine 
  6. High Performance Linpack Benchmark , < http://icl.cs.utk.edu/graphics/posters/files/SC2010-HPL.pdf > . Extras 10 februarie 2015. Arhivat 4 martie 2016 la Wayback Machine 
  7. Bailey, D.H.; Barszcz, E.; Barton, JT & Browning, DS (1991), Rezumatul referințelor paralele NAS și rezultatele preliminare , Supercomputing : 158–165 , < http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5348941&isnumber=5348466 > 
  8. Întrebări frecvente LINPACK - Pot folosi metoda lui Strassen când fac multiplii matricei în benchmark-ul HPL sau pentru rularea Top500? . Data accesului: 10 februarie 2015. Arhivat din original la 1 septembrie 2009.
  9. Întrebări frecvente LINPACK - Cu ce ​​precizie trebuie să fie conformă soluția? . Data accesului: 10 februarie 2015. Arhivat din original la 1 septembrie 2009.
  10. Programul de referință Linpack în Fortran . Consultat la 10 februarie 2015. Arhivat din original pe 20 februarie 2015.
  11. Programul de referință Linpack în C. Consultat la 10 februarie 2015. Arhivat din original pe 20 februarie 2015.
  12. Programul de referință Linpack în Java . Consultat la 10 februarie 2015. Arhivat din original pe 10 februarie 2015.
  13. HPL - O implementare portabilă a benchmark-ului Linpack de înaltă performanță pentru computere cu memorie distribuită . Consultat la 10 februarie 2015. Arhivat din original pe 15 februarie 2015.
  14. Algoritmul HPL . Preluat la 13 decembrie 2019. Arhivat din original la 25 octombrie 2019.
  15. Prezentare generală HPL . Consultat la 10 februarie 2015. Arhivat din original pe 10 februarie 2015.
  16. Un interviu cu legenda supercomputerelor Jack Dongarra (downlink) (24 mai 2012). Preluat la 13 decembrie 2019. Arhivat din original la 3 februarie 2013. 
  17. Haigh, Thomas Un interviu cu Jack J. Dongarra (2004). „LINPACK este un punct de referință pe care oamenii îl citează adesea pentru că există o astfel de bază de date istorice de informații acolo, pentru că este destul de ușor de rulat, este ușor de înțeles și surprinde într-un anumit sens ce este mai bun și mai rău din programare.” Consultat la 13 decembrie 2019. Arhivat din original la 12 ianuarie 2021.
  18. Hammond, Steven (1995), Beyond Machoflops: Getting MPPs Into the Production Environment , < http://nldr.library.ucar.edu/repository/collections/TECH-NOTE-000-000-000-227 > Arhivat 13 iulie 2012. 
  19. Gahvari, Hormozd; Hoemmen, Mark; Demmel, James & Yelick, Katherine (2006), Benchmarking Sparse Matrix-Vector Multiply in Five Minutes , SPEC Benchmark Workshop , < http://bebop.cs.berkeley.edu/pubs/gahvari2007-spmvbench-spec.pdf > Copie arhivată 29 ianuarie 2012 la Wayback Machine 
  20. Dongarra, Jack J. (2007), The HPC Challenge Benchmark: A Candidate for Replaceing Linpack in the Top500? , SPEC Benchmark Workshop , < http://www.spec.org/workshops/2007/austin/slides/Keynote_Jack_Dongarra.pdf > Arhivat 4 martie 2021 la Wayback Machine 
  21. Christopher Mims . De ce noul supercomputer al Chinei este doar din punct de vedere tehnic cel mai rapid din lume  (8 noiembrie 2010). Arhivat din original pe 21 octombrie 2012. Preluat la 22 septembrie 2011.
  22. Meuer, Martin Un interviu cu legenda supercomputingului Jack Dongarra (downlink) (24 mai 2002). Consultat la 10 februarie 2015. Arhivat din original pe 3 februarie 2013. 
  23. Luszczek, Piotr; Dongarra, Jack J.; Koester, David & Rabenseifner, Rolf (2005), Introduction to the HPC Challenge Benchmark Suite , < http://icl.cs.utk.edu/projectsfiles/hpcc/pubs/hpcc-challenge-benchmark05.pdf > Arhivat din 1 martie 2021 la Wayback Machine 
  24. ↑ Top500 Clasament și progres în calculul  de înaltă performanță . sisteme deschise. DBMS, 2006 Nr. 1 (1 februarie 2016). Preluat la 13 decembrie 2019. Arhivat din original la 13 decembrie 2019.
  25. Hemsoth, Nicole . Noul benchmark HPC Delivers Promising Results , HPCWire (26 iunie 2014). Arhivat din original pe 8 septembrie 2014. Preluat la 8 septembrie 2014.
  26. Supercalculatoarele: noi arhitecturi necesită noi metode de măsurare . itWeek (27 noiembrie 2015). Preluat la 13 decembrie 2019. Arhivat din original la 5 aprilie 2022.
  27. Dongarra, Jack J. (2010), LINPACK Benchmark with Time Limits on Multicore & GPU Based Accelerators , < http://www.netlib.org/utk/people/JackDongarra/SLIDES/isc-talk-06102.pdf > Arhivat copie datată 17 ianuarie 2014 la Wayback Machine 

Link -uri