SuperLU

(LU supernodal)

Sursă originală: https://crd-legacy.lbl.gov/~xiaoye/SuperLU/

Drepturi de autor și licență

SuperLU este o bibliotecă cu scop general pentru soluția directă a sistemelor mari, rare, nesimetrice de ecuații liniare. Biblioteca este scrisă în C și poate fi sunată din programul C sau Fortran. Utilizează MPI, OpenMP și CUDA pentru a sprijini diferite forme de paralelism. Acesta suportă atât tipuri de date reale, cât și complexe, atât de precizie unică, cât și de dublă, și de indexare pe întregul număr de 64 de biți. Rutinele bibliotecii efectuează o descompunere a LU cu pivotare parțială și rezolvă sistemul triunghiular prin înlocuire în față și înapoi. Rutinele de factorizare LU se pot ocupa de matrice non-pătrată, dar rezolvările triunghiulare sunt efectuate numai pentru matricele pătrate. Coloanele matricei pot fi preordonate (înainte de factorizare) fie prin rutine furnizate de bibliotecă sau de utilizatori. Această preordonare pentru sparități este complet separată de factorizare. Sunt asigurate subrutine iterative de rafinare de precizie pentru îmbunătățirea stabilității înapoi. Se oferă, de asemenea, rutine pentru a echilibra sistemul, a estima numărul de condiție, a calcula eroarea relativă înapoi și a estima limitele de eroare pentru soluțiile rafinate. 
Serialul pachet SuperLU conține, de asemenea, rutine ILU, folosind picurare numerică bazată pe prag, cu pivotare parțială (ILUTP).

SuperLU pachetul vine în trei arome diferite:

  • SuperLU pentru mașini secvențiale ( Github . Documentație Cod )
  • SuperLU_MT pentru mașinile paralele de memorie partajată
  • SuperLU_DIST pentru memorie distribuită ( Github . Codul de documentare ) 
    Mașinile țintă pentru SuperLU_DIST sunt extrem de paralele sistemele hibride de memorie distribuite. Rutinele numerice de factorizare sunt deja implementate pentru sistemele hibride cu GPU-uri multiple. Vor fi necesare lucrări suplimentare pentru implementarea celorlalte faze ale algoritmilor pe sistemele hibride și pentru îmbunătățirea scalării puternice la scară extremă.

Întrebări frecvente (Întrebări frecvente)

Ghidul utilizatorilor (raportul tehnic LBNL-44289) descrie toate cele trei biblioteci. (Ultima actualizare: octombrie 2014)

Cum se citează SuperLU într-o publicație.

Lista de mesaje pentru utilizatori este utilizată pentru a anunța modificări, lansări noi etc.

Vă rugăm să trimiteți e – mail dacă ați folosit orice versiuni ale bibliotecii.

Acesta este articolul meu despre sondaj despre solverii direcți direcți de diferite arome.

Utilizarea SuperLU (pagina este în construcție)

Acest proiect a fost finanțat de DOE, NSF și DARPA.

Dezvoltatori: 
     X. Sherry Li 
     Jim Demmel 
     John Gilbert 
     Laura Grigori 
     Yang Liu 
     Piyush Sao 
     Meiyue Shao 
     Ichitaro Yamazaki

Alți colaboratori: 
     Pietro Cicotti, UCSD 
     Daniel Schreiber 
     Jinqchong Teo 
     Yu Wang 
     Eric Zhang, Albany High


Versiunea SuperLU 5.2.1


  • Descărcați software (v5.2.1) – cod sursă și documentație într-un fișier comprimat tar (~ 2.6 MB).
  • Sprijină atât tipuri de date reale, cât și complexe, cu precizie unică sau dublă.
  • Lucrarea SIMAX descrie algoritmii și performanța pe diverse mașini. 
    SuperLU a reușit să atingă până la 40% din rata teoretică de virgulă mobilă pe un număr de posturi de lucru, cum ar fi MIPS R8000 și IBM RS / 6000. Rata de megaflop crește, de obicei, odată cu creșterea numărului de operațiuni în virgulă mobilă față de numărul de nenulosi din factorii L și U.
  • Acest raport tehnic (publicat în ACM Trans. Math Software, vol. 37, nr. 4, articolul nr. 43, aprilie 2011) descrie algoritmul ILU implementat în SuperLU 4.0.
  • Aceste diapozitive sunt de la o discuție up-to-data.
  • Notă de lansare:
    • 4 februarie 1997 Versiunea 1.0
    • 15 noiembrie 1997 Versiunea 1.1
    • 1 septembrie 1999   Versiunea 2.0     (Ultima actualizare: 06/03/03)
    • 15 octombrie 2003   Versiunea 3.0     (Ultima actualizare: 01/02/06)
      • Includeți “modul simetric”
    • 1 august 2008   Versiunea 3.1
    • 30 iunie 2009   Versiunea 4.0     (Ultima actualizare: 12/18/09)
      • Include factorizarea incompletă bazată pe prag (ILU) 
        (a se vedea detaliile din această lucrare publicată în ACM Trans. Math Software, vol. 37, nr. 4, articolul 43, aprilie 2011.)
    • 25 noiembrie 2010   Versiunea 4.1
    • 25 august 2011   Versiunea 4.2
    • 27 octombrie 2011   Versiunea 4.3 (Ultima actualizare: 12/14/2011)
      • A redenumit mai multe constante enum.
    • 26 iulie 2015   versiunea 5.0
      • thread-safe: eliminați variabilele statice; înlocuiți xLAMCH prin căutarea de tabelă în float.h (standardul C99).
      • Modificările interfeței la rutinele următoare: xGSSVX (expert driver), xGSTRF (factorizare). Consultați exemplul dlinsolx.c din EXEMPLU / DIRECTOR pentru a vedea secvența de apelare.
    • 3 decembrie 2015   Versiunea 5.1   (Bug fix: Versiunea 5.1.1 22 ianuarie 2016)
      • Redenumirea rutinelor interne. Nicio schimbare de interfață.
      • Real și complex sunt utilizate împreună.
      • Bug fix pentru rafinamentul iterativ pentru complexul conjugat.
      • A fost adăugată opțiunea de construire CMake.
    • 8 aprilie 2016   Versiunea 5.2.0   (Patch-uri mici: Versiunea 5.2.1 , 22 mai 2016) 
      • Prima lansare xSDK, adăugați o notă privind drepturile de autor în fiecare fișier.
  • Schimbați jurnalul

SuperLU_MT Versiunea 3.1


  • Descărcați software (V3.0) – cod sursă și documentație într-un fișier comprimat tar (~ 1,7 MB). 
    Furnizați interfețe Pthreads și OpenMP. Există, de asemenea, directive paralele pentru câteva SMP mai vechi.
  • Sprijină atât tipuri de date reale, cât și complexe, cu precizie unică sau dublă.
  • Lucrarea SIMAX descrie algoritmii și performanța pe diverse mașini. 
    SuperLU_MT a demonstrat o accelerare de 5-10 ori pe o gamă de SMP-uri comerciale cunoscute și o rată de factorizare de până la 2,5 Gigaflops.
  • Aceste diapozitive sunt de la o discuție up-to-data.
  • Notă de lansare:
  • Schimbați jurnalul

SuperLU_DIST versiunea 6.1.0


  • Descărcați software (V6.1.0) – cod sursă și documentație într-un fișier comprimat tar (~ 1.6 MB).
  • Suportă mai multe arhitecturi de noduri heterogene: MPI este utilizat pentru comunicarea interprocesă, OpenMP este folosit pentru filetarea la noduri, CUDA este folosit pentru calcul pe GPU-uri.
  • Sprijină atât tipuri de date reale, cât și complexe, cu precizie dublă.
  • Lucrarea SC98 descrie noul nostru algoritm GESP proiectat pentru mașini paralele pe scară largă. 
    GESP reprezintă eliminarea Gaussian cu “Pivotare statică”. Pivotarea statică este o tehnică care combină stabilitatea numerică a pivotării parțiale cu scalabilitatea fără pivotare, pentru a rula corect și eficient pe un număr mare de procesoare.
  • Lucrarea SIAM PP99 îmbunătățește performanța kernel – 20% până la 40% mai bine decât hârtia SC98. 
    SuperLU_DIST a demonstrat o accelerare de până la 100 de ori pe modelul 512-PE Cray T3E la NERSC și rata de factorizare de 10,2 Gigaflops folosind MPI. 
  • Lucrarea SC01 descrie utilizarea SuperLU_DIST pentru a rezolva sisteme liniare rare complexe de până la 2 milioane de comanda, pentru o problema mecanica cuantică. 
    Rezultatul științific a fost raportat mai devreme în articolul de cotitură al Science , 24 Dec 1999. 
  • Lucrarea ACM TOMS (2003) discută despre toate aspectele bibliotecii SuperLU_DIST. 
  • Acest tabel conține rezultate numerice detaliate ale algoritmului GESP.
  • Documentul SIAM SISC (2007) descrie algoritmul paralel și performanța pentru factorizarea simbolică.
  • Note de lansare:
    • 1 septembrie 1999   Versiunea 1.0     (Ultima actualizare: 2/18/03)
    • 15 martie 2003   versiunea 2.0    (Ultima actualizare: 01/02/06)
      • Interfață de intrare distribuită inclusă
    • 1 noiembrie 2007   Versiunea 2.1    (Ultima actualizare: 12/19/07)
      • Inclusiv factorizarea simbolică paralelă. (citează articolul SISC , SIAM J. Sci. Comp., Vol. 29, Issue 3, 1289-1314, 2007).
    • Februarie 20, 2008   Versiunea 2.2
      • Pierderi de memorie fixe și alte câteva bug-uri în factorizare simbolică paralelă
    • 15 octombrie 2008   Versiunea 2.3    (Ultima actualizare: 04/02/10)
      • Au fost rezolvate câteva bug-uri legate de lung-int pe 64 de biți. (04/02/10)
      • Viteză îmbunătățită de factorizare și rezolvare triunghiulară cu noduri multicore.
    • 9 iunie 2010   Versiunea 2.4   (Ultima actualizare: 06/25/10)
      • Actualizat mai multe fișiere antet.
    • 25 noiembrie 2010   Versiunea 2.5   (Ultima actualizare: 08/01/2011)
    • 18 octombrie 2011   Versiunea 3.0   (Ultima actualizare: 10/25/2011)
      • Factorizarea este de 2-3 ori mai rapidă folosind sute de procesoare. (citează documentul IPDPS 2012, Procesele IPDPS 2012, pp. 619-630, doi: 10.1109 / IPDPS.2012.63.)
    • 20 mai 2012   Versiunea 3.1 (Ultima actualizare: 27.06.2012)
      • Actualizați (par) interfața metis pentru a fi compatibil cu ParMetis nou pe 64 de biți 4.0.2.
      • Remediați o eroare în rutina de factorizare atunci când utilizați un număr întreg pe 64 de biți.
    • 24 octombrie 2012   Versiunea 3.2
      • corecții de erori și tipul de date complex pentru ambalajul F90.
    • 31 martie 2013   Versiunea 3.3
      • bug fixează în rutinele de factorizare.
    • 1 octombrie 2014   Versiunea 4.0 (Ultima actualizare: 10/11/2014, adăugați compilație condiționată pentru OpenMP)
      • adăugați suport multithreading (OpenMP) și GPU (CUDA). (citează lucrarea EuroPar2014 , LNCS Vol. 8632. Porto, Portugalia, 25-29 august 2014.)
      • corectarea erorilor.
    • 17 iulie 2015   Versiunea 4.1 (Ultima actualizare: 08/05/2015, corecții minore la câteva prototipuri)
      • corectarea erorilor.
    • 25 septembrie 2015   Versiunea 4.2
      • înlocuiți xLAMCH cu xMACH, utilizând standardul C99.
    • 31 decembrie 2015   Versiunea 4.3 (Ultima actualizare: 01/07/2016)
      • Fixați o eroare în factorizare simbolică paralelă, legată de separatorul dens.
      • Rezolva conflictele de nume cu serialele SuperLU și LAPACK.
      • Rutinele de drivere returnează propriul flag de eroare INFO, în loc să iasă.
      • Corect pivot pivot de zero într-o singură matrice.
    • 8 aprilie 2016   Versiunea 5.0.0
    • 15 mai 2016   Versiunea 5.1.0
      • Adăugați p? GetDiagU () pentru a extrage intrările diagonale ale factorului U
    • 4 octombrie 2016 Versiunea 5.1.1 -> 21 octombrie 2016   Versiunea 5.1.2
      • Remediați o eroare la calcularea mărimii tamponului U de panou.
      • (Release V5.1.2): remedierea defecțiunilor legate de utilizarea întregului număr pe 64 de biți.
    • 31 decembrie 2016 Versiunea 5.1.3   Versiunea 5.1.3 (Ultima actualizare: 09/17/2017)
      • Fixarea bug-urilor pentru factorizarea repetată folosind SamePattern sau DOFACT.
    • 30 septembrie 2017 Versiunea 5.2.0   Versiunea 5.2.0
      • Includeți o serie de optimizări pentru rutinele de factorizare, orientate către nodul Intel KNL manycore.
      • Ar trebui să facă legătura cu un BLAS multithreaded (GEMM) pentru cea mai bună performanță.
    • 13 octombrie 2017 Versiunea 5.2.1   Versiunea 5.2.1
      • Schimbați interfața makefile veche de la -D_LONGINT la ‘XSDK_INDEX_SIZE = 64’
      • Creați superlu_dist_config.h din fișierele make.inc create din trecut
    • 29 octombrie 2017 Versiunea 5.2.2   Versiunea 5.2.2
      • Includeți o funcție de interogare superlu_dist_GetVersionNumber ().
      • Probleme fixe mici cu dimensiunea indexului pe 64 de biți.
    • 28 ianuarie 2018 Versiunea 5.3.0   Versiunea 5.3.0
      • Poate dezactiva legarea cu (Par) Metis.
      • Funcționează cu Windows.
    • 1 iunie 2018 Versiunea 5.4.0   Versiunea 5.4.0
      • A încorporat o potrivire paralelă maximă de greutate paralelă cu pre-pivotare numerică.
      • Bug-uri fixe asociate cu programarea statică și cu privirea înainte, care a cauzat un blocaj pentru anumite grile de proces.
    • 18 septembrie 2018 versiunea 6.0.0   versiunea 6.0.0 (actualizare minor 9/23/18)
      • Îmbunătățirea scalării puternice a soluției triunghiulare – de până la 4 ori mai rapid decât versiunea 5.x pe 4000 + nuclee. 
        (Necesită C ++ compilator)
      • Citează hârtia SIAM CSC2018 .
    • 6 decembrie 2018 Versiunea 6.1.0   Versiunea 6.1.0 (actualizare minoră 12/9/18)
      • Îmbunătățirea performanței filetelor în rezolvarea triunghiulară.
      • S-au rezolvat mai multe erori în factorizare, a se vedea pagina Modificare jurnal.
    • 8 februarie 2019 Versiunea 6.1.1   Versiunea 6.1.1 
      • Mai multe remedii de eroare, consultați Modificarea paginii de jurnal.

Schimbați jurnalul