Lis (linjär algebrabibliotek)
Stabil frisättning | 2.1.0 / 5 mars 2023
|
---|---|
Operativ system | Cross-platform |
Tillgänglig i | C , Fortran |
Typ | Programvarubibliotek |
Licens | Ny BSD-licens |
Hemsida | www.ssisc.org/lis/ |
Lis ( Library of Iterative Solvers for linjära system, uttalas [lis]) är ett skalbart parallellt mjukvarubibliotek för att lösa diskretiserade linjära ekvationer och egenvärdeproblem som främst uppstår i den numeriska lösningen av partiella differentialekvationer genom att använda iterativa metoder . Även om det är designat för parallella datorer, kan biblioteket användas utan att vara medveten om parallell bearbetning .
Funktioner
Lis tillhandahåller faciliteter för:
- Automatisk programkonfiguration
- NUMA medveten hybridimplementering med MPI och OpenMP
- Utbytbara täta och glesa matrislagringsformat
- Grundläggande linjär algebraoperationer för täta och glesa matriser
- Parallella iterativa metoder för linjära ekvationer och egenvärdesproblem
- Parallella förkonditioneringsmedel för iterativa metoder
- Fyrdubbel precision med flyttal
- Prestationsanalys
- Kommandoradsgränssnitt till lösare och benchmarks
Exempel
Ett C -program för att lösa den linjära ekvationen skrivs så här:
0
#include <stdio.h> #include "lis_config.h" #include "lis.h" LIS_INT main ( LIS_INT argc , char * argv []) { LIS_MATRIX A ; LIS_VECTOR b , x ; LIS_SOLVER- lösare ; LIS_INT iter ; dubbel tid ; lis_initialize ( & argc , & argv ); lis_matrix_create ( LIS_COMM_WORLD , & A ); lis_vector_create ( LIS_COMM_WORLD , & b ); lis_vector_create ( LIS_COMM_WORLD , & x ); lis_input_matrix ( A , argv [ 1 ]); lis_input_vector ( b , argv [ 2 ]); lis_vector_duplicate ( A , & x ); lis_solver_create ( & solver ); lis_solver_set_optionC ( lösare ); lis_solve ( A , b , x , lösare ); lis_solver_get_iter ( lösare , & iter ); lis_solver_get_time ( lösare & tid ) ; printf ( "antal iterationer = %d \n " , iter ); printf ( "förfluten tid = %e \n " , tid ); lis_output_vector ( x , LIS_FMT_MM , argv [ 3 ]); lis_solver_destroy ( lösare ); lis_matrix_destroy ( A ); lis_vector_destroy ( b ); lis_vector_destroy ( x ); lis_finalize (); återvända ; }
Systemkrav
Installationen av Lis kräver en C-kompilator. Fortran-gränssnittet kräver en Fortran-kompilator, och den algebraiska multigrid- förkonditioneraren kräver en Fortran 90-kompilator. För parallella datormiljöer krävs ett OpenMP- eller MPI-bibliotek. Både Matrix Market och Harwell-Boeing- formaten stöds för att importera och exportera användardata.
Paket som använder Lis
- Gerris
- OpenModelica
- OpenGeoSys
- SICOPOLIS
- STAMPA
- Diablo
- Kiva
- Inte vi
- Solis
- GeMA
- öppenCFS
- numgeo
- gratis cappuccino
- Andromeda
- Yelmo
Se även
- Lista över numeriska bibliotek
- Konjugerad gradientmetod
- Bikonjugatgradientstabiliserad metod (BiCGSTAB)
- Generalized minimal residual method (GMRES)
- Egenvärdesalgoritm
- Lanczos algoritm
- Arnoldi iteration
- Krylov underrymd
- Multigrid-metod
externa länkar
- Officiell hemsida
- Utvecklingsarkiv på GitHub
- Prof. Jack Dongarras fritt tillgängliga mjukvarusida för linjär algebra
- Netlib repository (med tillstånd av Netlib Project )
- Fedora-paket (med tillstånd av Fedora Project )
- Gentoo-paket (med tillstånd av Gentoo Linux Project )
- AUR-paket (med tillstånd av Arch Linux Community )
- FreeBSD-paket (med tillstånd av FreeBSD Project )
- Paket för macOS (Homebrew) (med tillstånd av Homebrew Project )
- Paket för macOS (MacPorts) (med tillstånd av MacPorts Project )
- Paket för Windows (med tillstånd av WHPC Project)
- Paket för Mingw-w64 (med tillstånd av Mingw-w64 Project )
- Spack-paket (med tillstånd av Lawrence Livermore National Laboratory )