10. Oktober 2024, Suitessparse Version 7.8.3
SuitSparse ist eine Reihe von spärlichen Paketen, die von Tim Davis geschrieben oder mitverautiert sind und unter https://github.com/drtimothyaldendavis/suitessparse erhältlich sind.
Hauptautor von SuitSparse (Codes and Algorithmen, exkl. Metis): Tim Davis
Code-Co-Autoren in alphabetischer Reihenfolge (ohne Metis oder Lagraph): Patrick Amestoy, Mohsen Aznaveh, David Bateman, Jinhao Chen, Yanqing Chen, Iain Duff, Joe Eaton, Les Foster, William Hager, Raye Kimmerer, Scott Kolodziej, Chris, Chris, Chris, Chris, Chris, Chris, Chris, Chris, Chris Lorenco, Streitkolodzie, Chris, Chris Lorenco, Streitkolodzie, Chris, Chris Lorenco, Streitkolodzie, Chris, Chris, Chris, Chris Lorenco, Strichajjjjjjjjjjj, Chris, Chris Lorenco, Strichajjjjjjjjjjj, Chris, Chris, Chris, Lorajjjjjjjjjj,, Domenzain, Erick Moreno-Centeno, Markus Mützel, Corey Nolel, Ekanathan Palamadai, Sivasankaran Rajamanickam, Sanjay Ranka, Wissam Sid-Lakhdar und Nuri Yeralan.
Lagraph wurde von der höchsten Anzahl von Entwicklern eines der Pakete in SuitSarse entwickelt und verdient eine eigene Liste. Die Liste erscheint auch in LAGRAPH/CONTIBUTORS.txt:
Janos B. Antal, Budapest University of Technology and Economics, Hungary
Mohsen Aznaveh, Texas A&M University
David A. Bader New Jersey Institute of Technology
Aydin Buluc, Lawrence Berkeley National Lab
Jinhao Chen, Texas A&M University
Tim Davis, Texas A&M University
Florentin Dorre, Technische Univeritat Dresden, Neo4j
Marton Elekes, Budapest University of Technology and Economics, Hungary
Balint Hegyi, Budapest University of Technology and Economics, Hungary
Tanner Hoke, Texas A&M University
James Kitchen, Anaconda
Scott Kolodziej, Texas A&M University
Pranav Konduri, Texas A&M University
Roi Lipman, Redis Labs (now FalkorDB)
Tze Meng Low, Carnegie Mellon University
Tim Mattson, Intel
Scott McMillan, Carnegie Mellon University
Markus Muetzel
Michel Pelletier, Graphegon
Gabor Szarnyas, CWI Amsterdam, The Netherlands
Erik Welch, Anaconda, NVIDIA
Carl Yang, University of California at Davis, Waymo
Yongzhe Zhang, SOKENDAI, Japan
Metis wird von George Karypis verfasst.
Zusätzliche Algorithmus -Designer: Esmond NG und John Gilbert.
In jedem Paket für Lizenz-, Urheberrechts- und Autoreninformationen finden Sie auf jedem Paket.
In jedem Paket finden Sie die Dokumentation in jedem Paket, normalerweise im DOC -Unterordner.
Pakete in Suitessparse und Dateien in diesem Verzeichnis:
AMD
Ungefähre Mindestauftragsbestellung. Dies ist die integrierte AMD-Funktion in MATLAB.
Autoren: Tim Davis, Patrick Amestoy, Iain Duff
bin
Wo Programme beim Kompilieren platziert werden, um make local
BTF
Permutation, um die dreieckige Form zu blockieren
Autoren: Tim Davis, Ekanathan Palamadai
build
Ordner für Standard -Build -Baum
CAMD
eingeschränkte ungefähre Mindestgradbestellung
Autoren: Tim Davis, Patrick Amestoy, Iain Duff, Yanqing Chen
CCOLAMD
eingeschränkte Spalte ungefähre Mindestgradreihenfolge
Autoren: Tim Davis, Sivasankaran Rajamanickam, Stefan Larimore.
Kollaborateuren von Algorithmus Design: Esmond NG, John Gilbert (für Colamd)
ChangeLog
Eine Zusammenfassung der Änderungen an Suitessparse. Weitere Informationen für jedes Paket finden Sie in */Doc/ChangeLog .
CHOLMOD
spärliche Cholesky -Faktorisierung. Benötigt AMD, Colamd, Ccolamd, Blas und Lapack. Optional Metis verwendet. Dies ist chol und x=Ab in Matlab.
Autor für alle Module: Tim Davis
CHOLMOD/MODIFT MODUL -Autoren: Tim Davis und William W. Hager
CHOLMOD/OUTSPARSE_METIS: Eine modifizierte Version von Metis, eingebettet in die Cholmod -Bibliothek. Einzelheiten finden Sie in den Dateien readme.txt. Autor: George Karypis. Dies ist eine leicht modifizierte Kopie, die SuitSparse über die von George Karypis bereitgestellte Open-Source-Lizenz enthalten ist. SuitSarse kann keine nicht modifizierte Kopie von Metis verwenden.
CITATION.bib
Zitate für Suitessparse -Pakete im Bibtex -Format.
CMakeLists.txt
Optional, um den gesamten Suitessparse zusammenzustellen. Siehe unten.
CODE_OF_CONDUCT.md
Community -Richtlinien
COLAMD
Säule ungefähre Mindestgradbestellung. Dies ist die eingebaute Colamd-Funktion in Matlab.
Autoren (des Code): Tim Davis und Stefan Larimore
Kollaborateuren von Algorithmus Design: Esmond NG, John Gilbert
Contents.m
Eine Inhaltsliste für "Help SuitSparse" in MATLAB.
CONTRIBUTING.md
wie man zum Suitessparse beiträgt
CONTRIBUTOR-LICENSE.txt
Erforderliche Mitwirkungsvereinbarung
CSparse
Ein prägnantes spärliches Matrixpaket, das für mein Buch "Direct Methods for Sparse Linear Systems" entwickelt wurde, veröffentlicht von Siam. In erster Linie zum Lehren vorgesehen. Beachten Sie, dass der Code (c) Tim Davis ist, wie im Buch angegeben.
Verwenden Sie für die Produktion stattdessen CxSparse. Insbesondere CSPARSE und CXSPARSE haben den gleichen Einschließung von Dateinamen: cs.h Dieses Paket wird für das eingebaute DMPERM in MATLAB verwendet.
Autor: Tim Davis
CXSparse
Csparse erweitert. Beinhaltet Unterstützung für komplexe Matrizen und sowohl int- als auch lange ganze Zahlen. Verwenden Sie dies anstelle von CSParse für die Produktionsanwendung. Es erzeugt eine libcsparse.so (oder Dylib auf dem Mac) mit demselben Namen wie CSParse. Es ist ein Superset von Csparse. Jeder Code, der mit CSParse verlinkt, sollte stattdessen auch in der Lage sein, sich mit CxSparse zu verbinden.
Autor: Tim Davis, David Bateman
Example
Ein einfaches Paket, das auf fast den gesamten Suitessparse beruht
.github
Workflows für CI -Tests auf GitHub.
GraphBLAS
Graphalgorithmen in der Sprache der linearen Algebra.
https://graphblas.org
Autoren: Tim Davis, Joe Eaton, Corey Nolet
include
make install von Orten benutzerberechtigt für jedes Paket, nachdem make local .
KLU
Spärliche LU -Faktorisierung, hauptsächlich für die Schaltungssimulation. Benötigt AMD, Colamd und BTF. Optional verwendet Cholmod, CAMD, CCOLAMD und METIS.
Autoren: Tim Davis, Ekanathan Palamadai
LAGraph
Eine Graph -Algorithmenbibliothek basierend auf Graphblas. Siehe auch https://github.com/graphblas/lagraph
Autoren: viele.
LDL
Ein sehr prägnantes LDL -Faktorisierungspaket
Autor: Tim Davis
lib
make install hier die gemeinsam genutzten Bibliotheken für jedes Paket für jedes Paket, nachdem make local .
LICENSE.txt
gesammelte Lizenzen für jedes Paket.
Makefile
Optional, um alle Suitessparse mit make zu kompilieren, die in jedem Unterprojekt als einfacher Wrapper für cmake verwendet wird.
make
Kompiliert Suitessparse -Bibliotheken. Die nachfolgende make install wird in CMAKE_INSTALL_PATH installiert (kann standardmäßig nach /usr/local/lib unter Linux oder Mac).
make local
Kompiliert Suitessparse. Die nachfolgende make install wird in ./lib , ./include installiert. Installiert nicht in CMAKE_INSTALL_PATH .
make global
Kompiliert Suitessparse -Bibliotheken. Die nachfolgende make install wird in /usr/local/lib (oder was auch immer die konfigurierte CMAKE_INSTALL_PREFIX ist). Installiert nicht in ./lib und ./include .
make install
Installationen im aktuellen Verzeichnis ( ./lib , ./include ) oder in /usr/local/lib und /usr/local/include (letzteres definiert von CMAKE_INSTALL_PREFIX ), je nachdem, ob make , make local oder Global make global erfolgt ist.
make uninstall
Unauffälle make install .
make distclean
Entfernt alle Dateien, die nicht in der Verteilung, einschließlich ./bin , ./share , ./lib und ./include .
make purge
Gleich wie make distclean .
make clean
Entfernt alle Dateien, die nicht in der Verteilung sind, aber zusammengestellte Bibliotheken und Demos, ./lib , ./share und ./include .
Jedes einzelne Teilprojekt hat auch jedes der oben genannten make .
Dinge, die Sie nicht tun müssen:
make docs
Erstellt Benutzerführer aus Latexdateien
make cov
Führen Sie Anweisungsabdeckungstests aus (nur Linux)
MATLAB_Tools
Verschiedene M-Files zur Verwendung in Matlab
Autor: Tim Davis (alle Teile)
für spqr_rank : Autor Les Foster und Tim Davis
Contents.m
Inhaltsliste
dimacs10
Lädt Matrizen für die DIMACS10 -Sammlung
Factorize
objektorientierter x=Ab für MATLAB
find_components
Findet verbundene Komponenten in einem Bild
GEE
Einfache Gaußsche Eliminierung
getversion.m
Bestimmen Sie die MATLAB -Version
gipper.m
Erstellen Sie das Matlab -Archiv
hprintf.m
Hyperlinks im Befehlsfenster drucken
LINFACTOR
Vorgänger, um das Paket zu Factorize
MESHND
verschachtelte Dissektionsordnung von regulären Maschen
pagerankdemo.m
zeigt, wie PageRank funktioniert
SFMULT
C=S*F wo S spärlich ist und F voll ist
shellgui
Zeigen Sie eine Muschel an
sparseinv
spärliche inverse Untergruppe
spok
Überprüfen Sie, ob eine spärliche Matrix gültig ist
spqr_rank
SPQR_RANK -Paket. MATLAB TOOLBOX für Rangmangel spärliche Matrizen: Nullräume, zuverlässige Faktorisierungen usw. mit Leslie Foster, San Jose State Univ.
SSMULT
C=A*B wobei A und B beide spärlich sind. Dies war die Grundlage für das eingebaute C=A*B in Matlab, bis es von Graphblas in MATLAB R2021A ersetzt wurde.
SuiteSparseCollection
Für die Suitsparse Matrix Collection
waitmex
WaitBar zur Verwendung in einer Mexfunktion
Mongoose
Grafikpartitionierung.
Autoren: Nuri Yeralan, Scott Kolodziej, William Hager, Tim Davis
ParU
Eine parallele unsymmetrische multifrontale Methode.
Derzeit eine Vorveröffentlichung.
Autoren: Mohsen Aznaveh und Tim Davis
RBio
Lesen/Schreiben Sie spärliche Matrizen im Rutherford/Boeing -Format
Autor: Tim Davis
README.md
Diese Datei
SPEX
Löst spärliche lineare Systeme in exakter Arithmetik.
Benötigt die Bibliotheken GNU GMP und MPRF.
Dies wird bald durch ein allgemeineres Paket, Spex V3, ersetzt, das diese Methode (exakt sparsame Lu) und andere (spärlich exakt Cholesky und Sparse Exacse Update/Downdate) enthält. Die API von V3 wird sich erheblich ändern.
Autoren: Chris Lourco, Jinhao Chen, Erick Moreno-Centeno, Lorena Lorena Mejia Domenzain und Tim Davis.
Die neueste Version finden Sie unter https://github.com/clouren/spex.
SPQR
spärliche QR -Faktorisierung. Dies ist das eingebaute qr und x=Ab in Matlab. Auch SuitesParseqr genannt.
Enthält zwei GPU -Bibliotheken: SPQR/GPUQREngine und SPQR/SuiteSparse_GPURuntime .
Autor des CPU -Code: Tim Davis
Autor von GPU-Modulen: Tim Davis, Nuri Yeralan, Wissam Sid-Lakhdar, Sanjay Ranka
ssget
MATLAB -Schnittstelle zur Suitsparse Matrixsammlung
Autor: Tim Davis
SuiteSparse_config
Bibliothek mit gemeinsamen Funktionen und Konfiguration für alle oben genannten Pakete. CSparse , GraphBLAS , LAGraph und MATLAB_Tools verwenden nicht SuiteSparse_config .
Autor: Tim Davis
SuiteSparse_demo.m
Eine Demo des Suitessparse für MATLAB
SuiteSparse_install.m
Installieren Sie SuitSparse für MATLAB
SuiteSparse_paths.m
Setzen Sie Pfade für Suitessparse MATLAB Mexfunctions
SuiteSparse_test.m
erschöpfender Test für Suitessparse in Matlab
UMFPACK
spärliche LU -Faktorisierung. Benötigt AMD und die BLAS .
Dies ist die eingebaute lu und x=Ab in Matlab.
Autor: Tim Davis
Algorithmus -Design -Zusammenarbeit: Iain Duff
In jedem Paket für Lizenz-, Urheberrechts- und Autoreninformationen finden Sie auf jedem Paket. Alle Codes werden von Timothy A. Davis (E-Mail: [email protected]) verfasst oder mitautorisiert), mit Ausnahme von Metis (von George Karypis), GraphBLAS/cpu_features (von Google), Graphblas/LZ4, ZSTD und XXHASH (von Yann Collet, Now) und Graphblas/Cuda/J. (von Yann, jetzt) und Graphblas/Cuda/J./J./J./J./J./JITIFY (BYN, NO FACIKEL, AT HABE, AT HABEL) und GRAPHAGE/CRAFIFICS/CHUDIFY/CHADA/JUDIFY (BYN (BY) und Graphblas/Craphblas/Cuda/J./J./J./J./Jit. Teile von Graphblas/CUDA sind Copyright (c) von Nvidia. Bitte beziehen Sie sich auf jede dieser Lizenzen.
Vielen Dank für die Verpackung von Suitessparse! Hier sind einige Vorschläge:
Die Kompilierung von Graphblas dauert lange, da es bei Compile-Time viele schnelle "FactoryKernels" erstellt. Wenn Sie die Kompilierungszeit und die Größe der Kompilierung verkürzen möchten, aktivieren Sie den GRAPHBLAS_COMPACT -Modus, halten Sie den JIT -Compiler jedoch aktiviert. Dann kompilieren Graphblas die Kerne, die es zur Laufzeit benötigt, über den JIT-Compiler. Die Leistung wird mit den Fabrikkerns übereinstimmen, sobald die JIT -Kerne zusammengestellt sind. Benutzer kompilierte Kerne werden standardmäßig in ~/.SuiteSparse platziert. Sie müssen die Quelle für Graphblas nicht verteilen, um den JIT -Compiler zu aktivieren: Nur libgraphblas.so und GraphBLAS.h reicht aus.
Graphblas braucht OpenMP! Es ist im Grunde ein paralleler Code, also verteilen Sie ihn bitte mit OpenMP aktiviert. Die Leistung wird sonst leiden.
CUDA -Beschleunigung: Cholmod und SPQR können von ihren Cuda -Kerneln profitieren. Wenn Sie keine CUDA haben oder es nicht in Ihre Distribution einbeziehen möchten, überspringt diese Version von SuitesParse das Gebäude der Bibliotheken CHOLMOD_CUDA und SPQR_CUDA und verbindet nicht mit den Bibliotheken GPUQREngine und SuiteSparse_GPURuntime .
SuitSparse ist ein Meta-Package vieler Pakete mit jeweils mit ihren eigenen veröffentlichten Papieren. Verwenden Sie die URLs, um die gesamte Sammlung zu zitieren:
Bitte zitieren Sie auch die spezifischen Papiere für die von Ihnen verwendeten Pakete. Dies ist eine lange Liste; Wenn Sie eine kürzere Liste wünschen, zitieren Sie einfach den neuesten "Algorithmus xxx:" Papiere in ACM -Toms für jedes Paket.
Für die MATLAB X = A B siehe unten für AMD, Colamd, Cholmod, UMFPack und SuitesParseqr (SPQR).
Für Graphblas und C = AB in Matlab (Späriner-Sparse):
Ta Davis. Algorithmus 1037: SuitSparse: Graphblas: Parallel -Graph -Algorithmen in der Sprache der spärlichen linearen Algebra. ACM trans. Mathe. Softw. 49, 3, Artikel 28 (September 2023), 30 Seiten. https://doi.org/10.1145/3577195
T. Davis, Algorithmus 1000: SuitSparse: Graphblas: Graph -Algorithmen in der Sprache der spärlichen linearen Algebra, ACM Trans on Mathematical Software, Vol 45, Nr. 4, Dezember 2019, Artikel Nr. 44.
Für Lagraph:
G. Szárnyas et al., "Lagraph: Lineare Algebra, Netzwerkanalyse-Bibliotheken und die Untersuchung von Graph-Algorithmen", 2021 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), Portland, OR, USA, 2021, S. 243-252. https://doi.org/10.1109/ipdpsw52791.2021.00046.
Für csparse/cxsparse:
Ta Davis, direkte Methoden für spärliche lineare Systeme, Siam -Serie zu den Grundlagen von Algorithmen, Siam, Philadelphia, PA, 2006. https://doi.org/10.1137/1.978089871881
Für SuitesParseqr (SPQR): (auch AMD zitieren, Colamd):
Ta Davis, Algorithmus 915: SuitesParseqr: Multifrontal Multithread-Rank-Revealing Sparse QR-Faktorisierung, ACM Trans. über mathematische Software, 38 (1), 2011, S. 8: 1-8: 22. https://doi.org/10.1145/2049662.2049670
Für SuitesParseqr/GPU:
Sencer Nuri Yeralan, Ta Davis, Wissam M. Sid-Lakhdar und Sanjay Ranka. 2017. Algorithmus 980: Spärliche QR -Faktorisierung der GPU. ACM trans. Mathe. Softw. 44, 2, Artikel 17 (Juni 2018), 29 Seiten. https://doi.org/10.1145/3065870
Für Cholmod: (auch AMD zitieren, colamd):
Y. Chen, Ta Davis, WW Hager und S. Rajamanickam, Algorithmus 887: Cholmod, Supernodal Sparse Cholesky -Faktorisierung und Update/Downdate, ACM Trans. über mathematische Software, 35 (3), 2008, S. 22: 1--22: 14. https://dl.acm.org/doi/abs/10.1145/1391989.1391995
Ta Davis und WW Hager, dynamische Supernoden in spärlicher Cholesky -Update/Downdate und dreieckige Lösungen, ACM Trans. über mathematische Software, 35 (4), 2009, S. 27: 1--27: 23. https://doi.org/10.1145/1462173.1462176
Für Cholmod/Modify Modul: (auch AMD zitieren, colamd):
Ta Davis und William W. Hager, Zeilenveränderungen einer spärlichen Cholesky-Faktorisierung Siam Journal über Matrixanalyse und Anwendungen 2005 26: 3, 621-639. https://doi.org/10.1137/s089547980343641x
Ta Davis und William W. Hager, Multiple-Rang-Modifikationen eines spärlichen Cholesky-Faktorisierungsssiam-Journals für Matrixanalyse und Anwendungen 2001 22: 4, 997-1013. https://doi.org/10.1137/s089547989357346
Ta Davis und William W. Hager, Modifikation einer spärlichen Cholesky-Faktorisierung, Siam Journal über Matrixanalyse und Anwendungen 1999 20: 3, 606-627. https://doi.org/10.1137/s0895479897321076
Für Cholmod/GPU -Module:
Steven C. Rennich, Darko Stosic, Timothy A. Davis, Beschleunigung der spärlichen Cholesky-Faktorisierung bei GPUs, Parallel Computing, Vol 59, 2016, S. 140-150. https://doi.org/10.1016/j.parco.2016.06.004
für AMD und CAMD:
P. Amestoy, Ta Davis, und ist DUFF, Algorithmus 837: Ein ungefährer Mindestgrad -Bestellalgorithmus, ACM Trans. über mathematische Software, 30 (3), 2004, S. 381-388. https://dl.acm.org/doi/abs/10.1145/1024074.1024081
P. Amestoy, Ta Davis, und IS Duff, ein ungefährer Mindestabschluss-Bestellalgorithmus, Siam J. Matrix Analysis and Applications, 17 (4), 1996, S. 886-905. https://doi.org/10.1137/s0895479894278952
Für Colamd, Symamamd, Ccolamd und Csymamd:
Ta Davis, Jr. Gilbert, S. Larimore, E. NG, Algorithmus 836: Colamd, eine ungefähre Säule Mindestgrad -Bestellalgorithmus, ACM Trans. über mathematische Software, 30 (3), 2004, S. 377–380. https://doi.org/10.1145/1024074.1024080
Ta Davis, Jr. Gilbert, S. Larimore, E. Ng, eine angenähte Säule Mindestgrad -Bestellalgorithmus, ACM Trans. über mathematische Software, 30 (3), 2004, S. 353-376. https://doi.org/10.1145/1024074.1024079
Für UMFPack: (auch AMD und Colamd zitieren):
Ta Davis, Algorithmus 832: UMFPack-Eine nicht symmetrische multifrontale Methode mit einer Säulenvorbestellungsstrategie, ACM Trans. über mathematische Software, 30 (2), 2004, S. 196-199. https://dl.acm.org/doi/abs/10.1145/992200.992206
Ta Davis, eine Säulenvorbestellungsstrategie für die multifrontale Methode des unsymmetrischen Musters, ACM Trans. über mathematische Software, 30 (2), 2004, S. 165-195. https://dl.acm.org/doi/abs/10.1145/992200.992205
Ta Davis und IS Duff, eine kombinierte unifrontale/multifrontale Methode für unsymmetrische spärliche Matrizen, ACM Trans. über mathematische Software, 25 (1), 1999, S. 1-19. https://doi.org/10.1145/305658.287640
Ta Davis und Is Duff, eine unsymmetrische multifrontale Methode zur spärlichen Lu-Faktorisierung, Siam J. Matrix-Analyse und -berechnungen, 18 (1), 1997, S. 140-158. https://doi.org/10.1137/s0895479894246905
Für das Faktorisierungs-M-File:
Ta Davis, Algorithmus 930: Faktorisieren Sie einen objektorientierten linearen Systemlöser für MATLAB, ACM Trans. über mathematische Software, 39 (4), 2013, S. 28: 1-28: 18. https://doi.org/10.1145/2491491.2491498
für KLU und BTF (auch AMD und Colamd zitieren):
Ta Davis und Ekanathan Palamadai Natarajan. 2010. Algorithmus 907: KLU, ein direkter spärlicher Löser für Probleme mit Schaltungssimulation. ACM trans. Mathe. Softw. 37, 3, Artikel 36 (September 2010), 17 Seiten. https://dl.acm.org/doi/abs/10.1145/1824801.1824814
Für LDL:
Ta Davis. Algorithmus 849: Ein prägnantes spärliches Cholesky -Faktorisierungspaket. ACM trans. Mathe. Softw. 31, 4 (Dezember 2005), 587–591. https://doi.org/10.1145/1114268.1114277
Für SSGet und die Suitsparse Matrix Collection:
Ta Davis und Yifan Hu. 2011. Die spärliche Matrixsammlung der Universität von Florida. ACM trans. Mathe. Softw. 38, 1, Artikel 1 (November 2011), 25 Seiten. https://doi.org/10.1145/2049662.2049663
Kolodziej et al., (2019). Die Schnittstelle der Suitsparse Matrix Collection -Website. Journal of Open Source Software, 4 (35), 1244. Https://doi.org/10.21105/joss.01244
für spqr_rank :
Leslie V. Foster und Ta Davis. 2013. Algorithmus 933: Zuverlässige Berechnung des numerischen Ranges, Null -Raum -Basen, Pseudoinverse -Lösungen und grundlegenden Lösungen unter Verwendung von SuitesParseqr. ACM trans. Mathe. Softw. 40, 1, Artikel 7 (September 2013), 23 Seiten. https://doi.org/10.1145/2513109.2513116
für Mongoose:
Ta Davis, William W. Hager, Scott P. Kolodziej und S. Nuri Yeralan. 2020. Algorithmus 1003: Mongoose, eine Grafik, die die Bibliothek für Vergrößerung und Partitionierung verteilt. ACM trans. Mathe. Softw. 46, 1, Artikel 7 (März 2020), 18 Seiten. https://doi.org/10.1145/3337792
Für Spex:
Christopher Lourenco, Jinhao Chen, Erick Moreno-Centeno und Ta Davis. 2022. Algorithmus 1021: Spex links lu, genau sparsame lineare Systeme über eine spärliche, links aussehende Ganzzahl-Präparations-LU-Faktorisierung löst. ACM trans. Mathe. Softw. Juni 2022. Https://doi.org/10.1145/3519024
Hinweis: Wenn Sie OpenBLAs verwenden, verwenden Sie die Version 0.3.27 oder höher.
Um Ihren BLAS/LAPACK auszuwählen, finden Sie in den Anweisungen in SuitSparseblas.cMake in SuiteSparse_config/cmake_modules . Wenn SuiteSparse_config einen BLAS mit 64-Bit-Ganzzahlen (wie dem Intel MKL ILP64 BLAS) findet, konfiguriert es SuiteSparse_config.h mit dem als int64_t definierten SUITESPARSE_BLAS_INT . Andernfalls ist dieser Typ als int32_t definiert, wenn ein 32-Bit-BLAS gefunden wird. Wenn später umfpack, cholmod oder spqr zusammengestellt und mit einem BLAS in Verbindung gebracht werden, der eine andere Ganzzahlgröße aufweist, müssen Sie die Definition mit -DBLAS64 (um die Verwendung von 64 -Bit -Ganzzahlen in den Blas) oder -DBLAS32 (um die Verwendung der Verwendung von 32 -Bit -Ingas in den Blas) zu behaupten).
Die Größe der Blas -Ganzzahl hat nichts mit sizeof(void *) zu tun.
Bei binärer Form (z. B. Debian, Ubuntu, Spack oder Brew Paket) verteilt sich Suitessparse wahrscheinlich zusammengestellt werden, um einen 32-Bit-BLAS zu erwarten, da dies der häufigste Fall ist. Die Standardeinstellung besteht darin, einen 32-Bit-BLAS zu verwenden. Dies kann jedoch geändert werden, indem die CMAKE-Variable SUITESPARSE_USE_64BIT_BLAS auf ON eingestellt wird.
Standardmäßig jagt Suitessparse nach einer geeigneten BLAS -Bibliothek. Um eine bestimmte BLAS -Bibliothek durchzusetzen, verwenden Sie entweder:
CMAKE_OPTIONS="-DBLA_VENDOR=OpenBLAS" make
cd Package ; cmake -DBLA_VENDOR=OpenBLAS .. make
Um die Standardeinstellung zu verwenden (suchen Sie nach einem BLAS), setzen Sie BLA_VENDOR nicht oder setzen Sie es auf eine leere Zeichenfolge. In diesem Fall wird ein 64-Bit-BLAs vorgegeben, wenn SUITESPARSE_USE_64BIT_BLAS eingeschaltet wird, aber eine 32-Bit-BLAS-Bibliothek wird verwendet, wenn keine 64-Bit-Bibliothek gefunden wird. Wenn sich jedoch sowohl SUITESPARSE_USE_64BIT_BLAS als auch SUITESPARSE_USE_STRICT eingeschaltet haben, wird nur ein 64-Bit-BLAS in Betracht gezogen.
Bei der Auswahl einer bestimmten BLAS -Bibliothek wird die Einstellung SUITESPARSE_USE_64BIT_BLAS streng befolgt. Wenn auf True gesetzt, wird nur eine 64-Bit-BLAS-Bibliothek verwendet. Wenn falsch (der Standard), wird nur eine 32-Bit-BLAS-Bibliothek verwendet. Wenn kein solcher Blas gefunden wird, fällt der Build aus.
Geben Sie Folgendes in dieses Verzeichnis ein (erfordert das System -Privileg, um die sudo make install durchzuführen):
mkdir -p build && cd build
cmake ..
cmake --build .
sudo cmake --install .
Alle Bibliotheken werden erstellt und in den systemweiten Standardordner (/usr/local/lib unter Linux) erstellt und installiert. Alle enthaltenen Dateien, die von den Anwendungen benötigt werden, die SuitSparse verwenden, werden in/usr/local/include/SuitSparse (unter Linux) installiert.
Um nur eine Teilmenge von Bibliotheken zu erstellen, setzen Sie bei der Konfiguration mit CMake SUITESPARSE_ENABLE_PROJECTS . Verwenden Sie die folgenden Befehle:
mkdir -p build && cd build
cmake -DSUITESPARSE_ENABLE_PROJECTS="cholmod;cxsparse" ..
cmake --build .
sudo cmake --install .
Importieren Sie für Windows (MSVC) die Datei CMakeLists.txt in MS Visual Studio. Stellen Sie sicher, dass Sie den Build -Typ als Veröffentlichung angeben. Um beispielsweise SuitesParse unter Windows im Befehlsfenster zu erstellen, führen Sie aus:
mkdir -p build && cd build
cmake ..
cmake --build . --config Release
cmake --install .
Stellen Sie zunächst alle erforderlichen Bibliotheken ein: BLAS und LAPACK für UMFPack, Cholmod und SPQR sowie GMP und MPFR für Spex. Verwenden Sie unbedingt die neuesten Bibliotheken. SPEX erfordert MPFR 4.0.2 und GMP 6.1.2 (diese Versionsnummern entsprechen nicht dem XYZ -Suffix von libgmp.so.xyz und libmpfr.so.xyz; Einzelheiten finden Sie in der SPEX -Benutzerhandbuch).
Um die Bibliotheken zu kompilieren und nur in Suitessparse/lib (nicht/usr/local/lib) zu installieren, tun Sie dies stattdessen auf der obersten Ebene des Suitessparse:
mkdir -p build && cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ..
cmake --build .
cmake --install .
Wenn Sie/Home/ME/SuitesParse/lib zu Ihrem Bibliothekssuchpfad ( LD_LIBRARY_PATH unter Linux) hinzufügen, können Sie Folgendes machen (zum Beispiel):
S = /home/me/SuiteSparse
cc myprogram.c -I$(S)/include/suitesparse -lumfpack -lamd -lcholmod -lsuitesparseconfig -lm
Um die C- und C ++ - Compiler zu ändern und parallel zu kompilieren:
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER==g++ ..
Zum Beispiel, der den Compiler in GCC und G ++ ändert.
Dies funktioniert unter Linux/Unix und dem Mac. Es sollte automatisch erkennen, ob Sie die Intel -Compiler haben oder nicht, und ob Sie CUDA haben oder nicht.
Siehe SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake , um Ihre BLAS auszuwählen.
Möglicherweise müssen Sie Ihrem Weg auch Suitessparse/LiB hinzufügen. Wenn Ihre Kopie von SuitesParse beispielsweise in/home/me/mesesparse ist, fügen Sie diese Ihrer ~/.bashrc -Datei hinzu:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export LD_LIBRARY_PATH
Verwenden Sie für den MAC stattdessen:
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export DYLD_LIBRARY_PATH
Die Standard -Installationsposition von Dateien ist unten, wobei das Paket eines der Pakete in SuitSarse ist:
* `CMAKE_INSTALL_PREFIX/include/suitesparse/`: include files
* `CMAKE_INSTALL_PREFIX/lib/`: compiled libraries
* `CMAKE_INSTALL_PREFIX/lib/cmake/SuiteSparse/`: `*.cmake` scripts
for all of SuiteSparse
* `CMAKE_INSTALL_PREFIX/lib/cmake/PACKAGE/`: `*Config.cmake` scripts for a
specific package
* `CMAKE_INSTALL_PREFIX/lib/pkgconfig/PACKAGE.pc`: `.pc` scripts for
a specific package pkgconfig
Nehmen wir an, Sie platzieren Suitessparse im Ordner /home/me/SuiteSparse .
Fügen Sie den Ordner SuiteSparse/lib zu Ihrem Laufzeitbibliotheksweg hinzu. Fügen Sie dies unter Linux zu Ihrem ~/.bashrc -Skript hinzu, vorausgesetzt, /home/me/SuiteSparse ist der Ort Ihrer Kopie von SuitesParse:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export LD_LIBRARY_PATH
Verwenden Sie dies für den Mac stattdessen in Ihrem ~/.zshrc -Skript, vorausgesetzt, Sie platzieren Suitessparse in /Users/me/SuiteSparse :
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Users/me/SuiteSparse/lib
export DYLD_LIBRARY_PATH
Machen Sie alle Suitessparse mit make local .
Kompilieren Sie als nächstes die Graphblas MATLAB -Bibliothek. In der Systemschale im SuitSparse-Ordner make gbmatlab , wenn Sie es systemweit mit make install installieren möchten, oder make gblocal wenn Sie die Bibliothek in Ihrem eigenen Suitessparse/lib verwenden möchten.
Dann im Befehlsfenster von MATLAB CD zum Suitsparse -Verzeichnis und geben Sie SuiteSparse_install ein. Alle Pakete werden zusammengestellt und mehrere Demos werden ausgeführt. Um einen (langen!) Ausführlichen Test durchzuführen, machen Sie SuiteSparse_test .
Speichern Sie Ihren Matlab -Pfad für zukünftige Sitzungen mit den Befehlen matlab pathtool oder savePath. Wenn diese Methoden ausfallen, weil Sie keine systemweite Berechtigung haben, fügen Sie die neuen Pfade Ihrer Startup.m-Datei hinzu, normalerweise in Dokumenten/Matlab/Startup.m. Sie können auch das SuiteSparse_paths M-File verwenden, um alle Ihre Wege zu Beginn jeder MATLAB-Sitzung einzustellen.
Sie können bestimmte Optionen für CMake mit dem Befehl (zum Beispiel) festlegen:
cmake -DCHOLMOD_PARTITION=OFF -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug ..
Dieser Befehl erstellt den gesamten SuitSparse mit Ausnahme des Cholmod/Partition -Moduls (wegen von -DCHOLMOD_PARTITION=OFF ). Der Debug -Modus wird verwendet (der Build -Typ). Die statischen Bibliotheken werden nicht erstellt (da -DBUILD_STATIC_LIBS=OFF ist festgelegt).
SUITESPARSE_ENABLE_PROJECTS :
Semikolon trennte die Liste der zu erbauten Projekte oder all . Standard: In all Fall werden die folgenden Projekte erstellt:
suitesparse_config;mongoose;amd;btf;camd;ccolamd;colamd;cholmod;cxsparse;ldl;klu;umfpack;paru;rbio;spqr;spex;graphblas;lagraph
Darüber hinaus kann csparse in diese Liste aufgenommen werden, um CSParse zu erstellen.
CMAKE_BUILD_TYPE :
Standard: Release , Verwenden Sie Debug für Debugging.
SUITESPARSE_USE_STRICT :
SuitSarse verfügt über viele benutzerdefinierbare Einstellungen des Formulars SUITESPARSE_USE_* oder (package)_USE_* für ein bestimmtes Paket. Im Allgemeinen sind diese Einstellungen nicht streng. Wenn beispielsweise SUITESPARSE_USE_OPENMP ON ist, wird OpenMP bevorzugt, aber SuitSparse kann ohne OpenMP verwendet werden, sodass kein Fehler erzeugt wird, wenn OpenMP nicht gefunden wird. Wenn jedoch SUITESPARSE_USE_STRICT ON ist, werden alle *_USE_* Einstellungen streng behandelt und ein Fehler tritt auf, wenn eine Ein -Einstellung ON ist, das entsprechende Paket oder die entsprechende Einstellung nicht verfügbar ist. Die Einstellungen *_USE_SYSTEM_* werden immer als streng behandelt. Standard: OFF .
SUITESPARSE_USE_CUDA :
Wenn CUDA für den gesamten SuitSarse ON ist, ist CUDA aktiviert. Standard: ON ,
CUDA unter Windows mit MSVC scheint mit dieser Version zu arbeiten, sollte jedoch als Prototyp angesehen werden und ist möglicherweise nicht voll funktionsfähig. Ich habe nur begrenzte Ressourcen, um CUDA unter Windows zu testen. Wenn Sie auf Probleme stoßen, deaktivieren Sie CUDA und veröffentlichen Sie dies als Problem auf GitHub.
CHOLMOD_USE_CUDA :
Standard: ON . Sowohl SUITESPARSE_USE_CUDA als auch CHOLMOD_USE_CUDA müssen aktiviert werden, um CUDA in Cholmod zu verwenden.
SPQR_USE_CUDA :
Standard: ON . Sowohl SUITESPARSE_USE_CUDA als auch SPQR_USE_CUDA müssen in der Lage sein, CUDA in SPQR zu verwenden.
CMAKE_INSTALL_PREFIX :
Definiert den Installationsort (Standard auf Linux ist /usr/local ). In diesem Befehl in einem build im oberen Ebenen -Suitsparse -Ordner wird beispielsweise das Installationsverzeichnis auf /stuff festgelegt, das von der nachfolgenden sudo cmake --install . :
cmake -DCMAKE_INSTALL_PREFIX=/stuff ..
sudo cmake --install .
SUITESPARSE_PKGFILEDIR :
Verzeichnis, in dem CMAKE-Konfiguration und PKG-Konfigurationsdateien installiert werden. Standardmäßig werden CMAKE -Konfigurationsdateien im Unterordner cmake des Verzeichnisses installiert, in dem die (statischen) Bibliotheken installiert werden (z. B. lib ). Die .pc Dateien für PKG-Config werden im Unterordner pkgconfig des Verzeichnisses installiert, in dem die (statischen) Bibliotheken installiert werden.
Mit dieser Option können sie an einem anderen Ort von den (statischen) Bibliotheken installiert werden. Auf diese Weise können mehrere Konfigurationen der SuitSarse -Bibliotheken gleichzeitig installiert werden (z. B. durch Einstellen einer anderen CMAKE_RELEASE_POSTFIX und CMAKE_INSTALL_LIBDIR für jede von ihnen). Um die jeweilige Konfiguration in nachgeschalteten Projekten abzuholen, PKG_CONFIG_PATH Sie CMAKE_PREFIX_PATH , z.
SUITESPARSE_INCLUDEDIR_POSTFIX :
Postfix für das Installationsziel von Header von SuitSparse. Standardeinstellung: SuitSparse, daher lautet das Standardverzeichnis: CMAKE_INSTALL_PREFIX/include/suitesparse
BUILD_SHARED_LIBS :
Wenn ON , werden gemeinsame Bibliotheken erstellt. Standard: ON .
BUILD_STATIC_LIBS :
Wenn ON , werden statische Bibliotheken gebaut. Standardeinstellung: ON , mit Ausnahme von Graphblas, der es dauert, dass die Kompilierung lange dauert, sodass die Standardeinstellung für Graphblas OFF ist, es sei denn BUILD_SHARED_LIBS ist OFF .
SUITESPARSE_CUDA_ARCHITECTURES :
Eine Saite wie "all" oder "35;50;75;80" , die die CUDA -Architekturen auflistet, um Cuda -Kerne mit nvcc zu erstellen. Die Option "all" erfordert CMake 3.23 oder höher. Standard: "52;75;80" .
BLA_VENDOR :
Eine Zeichenfolge. Hinterlassen Sie unbegründet oder verwenden Sie "ANY" um eine BLAS -Bibliothek (die Standardeinstellung) auszuwählen. Oder auf den Namen eines von findblas.cmake definierten BLA_VENDOR festgelegt. Siehe: https://cmake.org/cmake/help/latest/module/findblas.html#blas-lapack-vendors
SUITESPARSE_USE_64BIT_BLAS :
Wenn ON , suchen Sie nach einem 64-Bit-BLAS. Wenn OFF : nur 32-Bit. Standard: OFF .
SUITESPARSE_USE_PYTHON :
Wenn ON , bauen Sie Python -Schnittstellen für ein Paket in SuitSarse mit einem (derzeit nur Spex). Wenn OFF : Erstellen Sie keine Python -Schnittstelle. Standard: ON .
SUITESPARSE_USE_OPENMP :
Wenn ON , wird OpenMP standardmäßig verwendet, wenn es verfügbar ist. Standard: ON .
Graphblas, Lagraph und Paru sind weitaus langsamer, wenn OpenMP nicht verwendet wird. Cholmod wird ohne OpenMP etwas langsamer sein (solange es noch eine parallele BLAS/LAPACK hat). Drei Pakete (UMFPack, Cholmod und SPQR) verlassen sich stark auf parallele Blas/Lapack -Bibliotheken, und diese Bibliotheken können OpenMP intern verwenden. Wenn Sie OpenMP in einer gesamten Anwendung deaktivieren möchten, wählen Sie einen einzel-betrügerischen BLAS/LAPACK oder einen parallelen BLAS/LAPACK, der OpenMP nicht verwendet (z. B. das Apple Accelerate-Framework). Die Verwendung einer Blas/Lapack-Bibliothek mit einem Thread-Thread wird dazu führen, dass UMFPack, Cholmod und SPQR weitaus langsamer sind.
WARNUNG: Graphblas ist möglicherweise nicht mit Thread-Sicherheit, wenn er ohne OpenMP oder PTHREADS erstellt wurde (Einzelheiten finden Sie in der Graphblas-Benutzerhandbuch).
SUITESPARSE_CONFIG_USE_OPENMP :
Wenn ON , verwendet SuiteSparse_config OpenMP, wenn es verfügbar ist. Standard: SUITESPARSE_USE_OPENMP . Es ist nicht wesentlich und nur verwendet, um SuiteSparse_time omp_get_wtime zu lassen.
CHOLMOD_USE_OPENMP :
Wenn ON , wird OpenMP in Cholmod verwendet, wenn es verfügbar ist. Standard: SUITESPARSE_USE_OPENMP .
GRAPHBLAS_USE_OPENMP :
Wenn ON , wird OpenMP in Graphblas verwendet, wenn es verfügbar ist. Standard: SUITESPARSE_USE_OPENMP .
LAGRAPH_USE_OPENMP :
Wenn ON , wird OpenMP in Lagraph verwendet, wenn es verfügbar ist. Standard: SUITESPARSE_USE_OPENMP .
PARU_USE_OPENMP :
If ON , OpenMP is used in ParU if it is available. Standard: SUITESPARSE_USE_OPENMP .
SPEX_USE_OPENMP :
Wenn ON , wird OpenMP in Spex verwendet, wenn es verfügbar ist. Standard: SUITESPARSE_USE_OPENMP .
SUITESPARSE_DEMOS :
Wenn ON , erstellen Sie die Demo -Programme für jedes Paket. Standard: OFF .
SUITESPARSE_USE_SYSTEM_BTF :
Wenn ON , verwenden Sie BTF -Bibliotheken, die auf dem Build -System installiert sind. Wenn OFF , erstellen Sie bei Bedarf automatisch BTF als Abhängigkeit. Standard: OFF .
SUITESPARSE_USE_SYSTEM_CHOLMOD :
Wenn ON , verwenden Sie Cholmod -Bibliotheken, die auf dem Build -System installiert sind. Wenn OFF , erstellen Sie bei Bedarf Cholmod automatisch als Abhängigkeit. Standard: OFF .
SUITESPARSE_USE_SYSTEM_AMD :
If ON , use AMD libraries installed on the build system. Wenn OFF , erstellen Sie bei Bedarf AMD automatisch als Abhängigkeit. Standard: OFF .
SUITESPARSE_USE_SYSTEM_COLAMD :
If ON , use COLAMD libraries installed on the build system. Wenn OFF , erstellen Sie Colamd bei Bedarf automatisch als Abhängigkeit. Standard: OFF .
SUITESPARSE_USE_SYSTEM_CAMD :
Wenn ON , verwenden Sie CAMD -Bibliotheken, die auf dem Build -System installiert sind. Wenn OFF , erstellen Sie CAMD bei Bedarf automatisch als Abhängigkeit. Standard: OFF .
SUITESPARSE_USE_SYSTEM_CCOLAMD :
Wenn ON , verwenden Sie CCOLAMD -Bibliotheken, die auf dem Build -System installiert sind. If OFF , automatically build CCOLAMD as dependency if needed. Standard: OFF .
SUITESPARSE_USE_SYSTEM_GRAPHBLAS :
Wenn ON , verwenden Sie Graphblas -Bibliotheken, die auf dem Build -System installiert sind. Wenn OFF , erstellen Sie bei Bedarf automatisch Graphblas als Abhängigkeit. Standard: OFF .
SUITESPARSE_USE_SYSTEM_SUITESPARSE_CONFIG :
If ON , use SuiteSparse_config libraries installed on the build system. Wenn OFF , erstellen Sie bei Bedarf automatisch SuiteSparse_config als Abhängigkeit. Standard: OFF .
SUITESPARSE_USE_FORTRAN
Wenn ON , verwenden Sie den FORTRAN -Compiler, um zu bestimmen, wie C For Fortan nennt, und um mehrere optionale FORTRAN -Routinen zu erstellen. If OFF , use SUITESPARSE_C_TO_FORTRAN to define how C calls Fortran. Standard: ON .
SUITESPARSE_C_TO_FORTRAN
Eine Zeichenfolge, die definiert, wie C Forforan nennt (dh, Funktionen, die von der BLAS -Bibliothek exportiert werden). Diese Einstellung wird verwendet, wenn kein funktionierender FORTRAN -Compiler erkannt werden kann oder SUITESPARSE_USE_FORTRAN auf OFF eingestellt ist. Diese Zeichenfolge ist als Argumentliste und als Körper eines Präprozessor -Makros zu lesen. Das erste Argument für dieses Makro ist ein FORTRAN -Funktionsname in Kleinbuchstaben. Das zweite Argument ist der gleiche Funktionsname in Großbuchstaben. Der Körper definiert, mit welchen Funktionsnamen Forran -Funktionen aufgerufen werden. Dies ist notwendig, da Forran von Fall unempfindlich ist und verschiedene FORTRAN-Compiler unterschiedliche Namensscheibenkonventionen verwenden. If a MSVC C/C++ compiler is used, this defaults to "(name,NAME) name" (ie, lower case without trailing underscore). Dies ist der Name, der für den Intel Forran Compiler unter Windows Mangling -Konvention ist. Wenn andere C/C ++ - Compiler verwendet werden, wird diese Standardeinstellung zu "(name,NAME) name##_" (dh unterer Fall mit nachverfolgungem Unterstrich). Dies ist der Name, der für die meisten der häufig verwendeten FORTRAN -Compiler (wie ifx auf anderen Plattformen als Windows, gfortran , flang , ... wie IFX). Der letztere Name Mangling Convention wird standardmäßig von Openblas verwendet (unabhängig auf der Plattform oder der Compiler, der zum Erstellen von OpenBlas verwendet wird). You might need to configure with -DSUITESPARSE_C_TO_FORTRAN="(name,NAME) name##_" if you'd like to build SuiteSparse using a MSVC compiler and link to OpenBLAS.
Für bestimmte Pakete sind zusätzliche Optionen verfügbar:
UMFPACK_USE_CHOLMOD :
If ON , UMFPACK uses CHOLMOD for additional (optional) ordering options. Standard: ON .
KLU_USE_CHOLMOD :
If ON , KLU uses CHOLMOD for additional (optional) ordering options. Standard: ON .
Cholmod besteht aus einer Reihe von Modulen, die unabhängig ausgewählt werden können. all options default to ON :
CHOLMOD_GPL
If OFF , do not build any GPL-licensed module (MatrixOps, Modify, Supernodal, and GPU modules)
CHOLMOD_CHECK
If OFF , do not build the Check module.
CHOLMOD_MATRIXOPS
If OFF , do not build the MatrixOps module.
CHOLMOD_CHOLESKY If OFF , do not build the Cholesky module. Dies deaktiviert auch die Supernodal und modifizieren Sie Module.
CHOLMOD_MODIFY
If OFF , do not build the Modify module.
CHOLMOD_CAMD
If OFF , do not link against CAMD and CCOLAMD. Dies deaktiviert auch das Partitionsmodul.
CHOLMOD_PARTITION
If OFF , do not build the Partition module.
CHOLMOD_SUPERNODAL
If OFF , do not build the Supernodal module.
Ein gemeinsames Problem kann alle Pakete beeinflussen: Erhalten Sie die richtigen #include -Dateien, die den aktuellen Bibliotheken entsprechen. Es ist möglich, dass Ihre Linux-Distribution eine ältere Kopie von Suitessparse-Headern in/usr/include oder/usr/local/include hat oder dass Homebrew sein Suite-Sparse-Bundle in/opt/homebrew/include oder an andere Orte installiert hat. Alte Bibliotheken können in/usr/local/lib,/usr/lib usw. erscheinen. Beim Erstellen einer neuen Kopie von Suitessparse ist das CMake -Build -System normalerweise (oder immer?) In der Lage, diese zu vermeiden und den richtigen Kopfzeilen für die richtige Version jeder Bibliothek zu verwenden.
Als zusätzlicher Wache gegen diesen möglichen Fehler überprüft jedes Mal ein Suitessparse -Paket #einen Header von einem anderen, das die Versionsnummer in der Header -Datei überprüft und dem Compiler einen #Error meldet, wenn eine veraltete Version erkannt wird. Darüber hinaus überprüft das Beispielpaket sowohl die Header -Version als auch die Bibliotheksversion (durch Aufrufen einer Funktion in jeder Bibliothek). Wenn die Versionen in irgendeiner Weise nicht übereinstimmen, meldet das Beispielpaket einen Fehler zur Laufzeit.
Beispielsweise benötigt Cholmod 5.1.0 AMD 3.3.0 oder höher. If it detects an older one in amd.h , it will report an #error :
#include "amd.h"
#if ( ... AMD version is stale ... )
#error "CHOLMOD 5.1.0 requires AMD 3.3.0 or later"
#endif
und die Zusammenstellung wird scheitern. The Example package makes another check, by calling amd_version and comparing it with the versions from the amd.h header file.
Wenn dieser Fehler oder eines wie er auftritt, prüfen Sie, ob Sie eine alte Kopie von SuitSparse haben, und deinstallieren Sie sie, bevor Sie Ihre neue Kopie von SuitesParse zusammenstellen.
Es gibt andere mögliche Erstellung/Installationsprobleme, die von den entsprechenden Benutzerführer für jedes Paket abgedeckt werden, z. Weitere Informationen finden Sie in den Benutzerführer.
MATLAB/OCTAVE/R/Mathematica -Schnittstellen:
Many built-in methods in MATLAB and Octave rely on SuiteSparse, including C=A*B x=Ab , L=chol(A) , [L,U,P,Q]=lu(A) , R=qr(A) , dmperm(A) , p=amd(A) , p=colamd(A) , ... See also Mathematica, R, and many many more. Die Liste ist zu lang.
Julia Schnittstelle:
https://github.com/juliasparse/sparsearrays.jl
Python -Schnittstelle zu Graphblas von Anaconda und Nvidia:
https://pypi.org/project/python-graphblas
Intel's GO -Schnittstelle zu Graphblas:
https://pkg.go.dev/github.com/intel/forgraphblasgo
Siehe Scikit-Sparse und Scikit-UMFPack für die Python-Schnittstelle über Scipy:
https://github.com/scikit-sparse/scikit-sparse https://github.com/scikit-umfpack/scikit-umfpack
Siehe Math.js von Jos de Jong für einen JavaScript -Port von CSparse:
https://github.com/josdejong/mathjs
Siehe Russell für eine Rost -Schnittstelle:
https://github.com/cpmech/russell
Markus Müttzel hat das neueste Update des SuitSarse Build -Systems für alle Suitessparse -Pakete beigetragen, um es ausführlich zu portieren und zu modernisieren.
Ich möchte auch François Bissey, Sebastien Villemot, Erik Welch, Jim Kitchen und Fabian Wein für ihr wertvolles Feedback zum SuitesParse Build -System und darüber, wie es mit verschiedenen Linux / Python -Distributionen und anderen Paketmanagern funktioniert, danken. Wenn Sie ein Betreuer einer Suitessparse-Verpackung für eine Linux-Distribution, Conda-Forge, R, Spack, Brew, VCPKG usw. sind, können Sie mich gerne kontaktieren, wenn ich etwas tun kann, um Ihr Leben zu erleichtern. Ich möchte Raye Kimmerer auch für die Unterstützung für 32-Bit-Zeilen-/Spaltenindizes in SPQR v4.2.0 danken.
Siehe auch die verschiedenen Bestätigungen in jedem Paket.