10 Okt 2024, Versi Suitesparse 7.8.3
Suitesparse adalah satu set paket yang terkait dengan jarang-matrix yang ditulis atau ditulis bersama oleh Tim Davis, tersedia di https://github.com/drtimothyaldendavis/suitesparse.
Penulis Primer Suitesparse (Kode dan Algoritma, Excl. Metis): Tim Davis
Code co-authors, in alphabetical order (not including METIS or LAGraph): Patrick Amestoy, Mohsen Aznaveh, David Bateman, Jinhao Chen, Yanqing Chen, Iain Duff, Joe Eaton, Les Foster, William Hager, Raye Kimmerer, Scott Kolodziej, Chris Lourenco, Stefan Larimore, Lorena Mejia Domenzain, Erick Moreno-Centeno, Markus Mützel, Corey Nolel, Ekanathan Palamarah, Sivasankaran Rajamanickam, Sanjay Ranka, Wissam Sid-Lakhdar, dan Nuri Yalanan.
Lagraph telah dikembangkan oleh jumlah pengembang tertinggi dari salah satu paket di SuitSparse dan layak mendapatkan daftarnya sendiri. Daftar ini juga muncul di Lagraph/Contuthor.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 ditulis oleh George Karypis.
Perancang Algoritma Tambahan: Esmond Ng dan John Gilbert.
Lihat setiap paket untuk informasi lisensi, hak cipta, dan penulis.
Lihat setiap paket untuk dokumentasi pada setiap paket, biasanya di subfolder DOC.
Paket di SuitAsparse, dan file di direktori ini:
AMD
Perkiraan Pemesanan Gelar Minimum. Ini adalah fungsi AMD bawaan di MATLAB.
Penulis: Tim Davis, Patrick Amestoy, Iain Duff
bin
dimana program ditempatkan saat disusun, untuk make local
BTF
permutasi untuk memblokir bentuk segitiga
Penulis: Tim Davis, Ekanathan Palamadai
build
folder untuk pohon bangunan default
CAMD
perkiraan pemesanan gelar minimum yang dibatasi
Penulis: Tim Davis, Patrick Amestoy, Iain Duff, Yanqing Chen
CCOLAMD
Kolom Terkendala Perkiraan Pemesanan Gelar Minimum
Penulis: Tim Davis, Sivasankaran Rajamanickam, Stefan Larimore.
Kolaborator Desain Algoritma: Esmond NG, John Gilbert (untuk Colamd)
ChangeLog
Ringkasan Perubahan pada Suitesparse. Lihat */Doc/ChangeLog untuk detail untuk setiap paket.
CHOLMOD
Faktorisasi Cholesky yang jarang. Membutuhkan AMD, Colamd, Ccolamd, The Blas, dan Lapack. Secara opsional menggunakan Metis. Ini adalah chol dan x=Ab di matlab.
Penulis untuk Semua Modul: Tim Davis
Penulis Modul Cholmod/Modifikasi: Tim Davis dan William W. Hager
Cholmod/suitesparse_metis: Versi Metis yang dimodifikasi, tertanam ke dalam pustaka Cholmod. Lihat file readme.txt untuk detailnya. Penulis: George Karypis. Ini adalah salinan yang sedikit dimodifikasi yang disertakan dengan SuitAsparse melalui lisensi open-source yang disediakan oleh George Karypis. SuitAsparse tidak dapat menggunakan salinan METIS yang tidak dimodifikasi.
CITATION.bib
Kutipan untuk Paket SuitSparse, dalam format Bibtex.
CMakeLists.txt
Opsional, untuk mengkompilasi semua Suitesparse. Lihat di bawah.
CODE_OF_CONDUCT.md
Pedoman Komunitas
COLAMD
Kolom Perkiraan Pemesanan Gelar Minimum. Ini adalah fungsi colamd bawaan di MATLAB.
Penulis (dari Kode): Tim Davis dan Stefan Larimore
Kolaborator Desain Algoritma: Esmond NG, John Gilbert
Contents.m
Daftar konten untuk 'Bantuan Suitesparse' di Matlab.
CONTRIBUTING.md
Cara berkontribusi pada Suitesparse
CONTRIBUTOR-LICENSE.txt
Perjanjian Kontributor yang Diperlukan
CSparse
Paket matriks jarang ringkas, dikembangkan untuk buku saya, "Metode Langsung untuk Sistem Linier Jarang", yang diterbitkan oleh Siam. Dimaksudkan terutama untuk mengajar. Perhatikan bahwa kodenya adalah (c) Tim Davis, sebagaimana dinyatakan dalam buku ini.
Untuk produksi, gunakan CXSparse sebagai gantinya. Secara khusus, baik CSPARSE dan CXSPARSE memiliki nama yang sama termasuk nama file: cs.h Paket ini digunakan untuk DMPERM bawaan di Matlab.
Penulis: Tim Davis
CXSparse
CSPARSE Extended. Termasuk dukungan untuk matriks kompleks dan integer int atau panjang. Gunakan ini alih -alih CSPARSE untuk penggunaan produksi; Ini menciptakan libcsparse.so (atau dylib pada mac) dengan nama yang sama dengan csparse. Ini adalah superset csparse. Kode apa pun yang menautkan terhadap CSPARSE juga harus dapat menautkan dengan CXSparse sebagai gantinya.
Penulis: Tim Davis, David Bateman
Example
Paket sederhana yang mengandalkan hampir semua Suitesparse
.github
Alur kerja untuk pengujian CI di GitHub.
GraphBLAS
Algoritma grafik dalam bahasa aljabar linier.
https://graphblas.org
Penulis: Tim Davis, Joe Eaton, Corey Nolet
include
make install Places yang terlihat pengguna termasuk file untuk setiap paket di sini, setelah make local .
KLU
Faktorisasi LU yang jarang, terutama untuk simulasi sirkuit. Membutuhkan AMD, Colamd, dan BTF. Secara opsional menggunakan Cholmod, CAMD, CCOLAMD, dan METIS.
Penulis: Tim Davis, Ekanathan Palamadai
LAGraph
Perpustakaan Algoritma Grafik Berdasarkan Graphblas. Lihat juga https://github.com/graphblas/lagraph
Penulis: Banyak.
LDL
Paket faktorisasi LDL yang sangat ringkas
Penulis: Tim Davis
lib
make install tempat -tempat bersama perpustakaan untuk setiap paket di sini, setelah make local .
LICENSE.txt
Lisensi yang dikumpulkan untuk setiap paket.
Makefile
Opsional, untuk mengkompilasi semua SuitAsparse menggunakan make , yang digunakan sebagai pembungkus sederhana untuk cmake di setiap subproyek.
make
mengkompilasi perpustakaan suitparse. make install Selanjutnya akan menginstal di CMAKE_INSTALL_PATH (mungkin default ke /usr/local/lib di Linux atau Mac).
make local
mengkompilasi suitparse. make install Selanjutnya akan menginstal di ./lib , ./include . Tidak menginstal di CMAKE_INSTALL_PATH .
make global
mengkompilasi perpustakaan suitparse. make install Selanjutnya akan menginstal /usr/local/lib (atau apa pun yang dikonfigurasi CMAKE_INSTALL_PREFIX ). Tidak menginstal di ./lib dan ./include .
make install
instalasi di direktori saat ini ( ./lib , ./include ), atau in /usr/local/lib dan /usr/local/include , (yang terakhir ditentukan oleh CMAKE_INSTALL_PREFIX ) tergantung pada apakah make , make local , atau make global telah dilakukan.
make uninstall
Undoes make install .
make distclean
menghapus semua file yang tidak ada dalam distribusi, termasuk ./bin , ./share , ./lib , dan ./include .
make purge
Sama seperti make distclean .
make clean
Menghapus semua file yang tidak distribusi, tetapi terus menyusun pustaka dan demo, ./lib , ./share , dan ./include .
Setiap subproyik individu juga memiliki masing -masing yang make target.
Hal -hal yang tidak perlu Anda lakukan:
make docs
Membuat Panduan Pengguna dari File Lateks
make cov
Menjalankan Tes Cakupan Pernyataan (hanya Linux)
MATLAB_Tools
Berbagai file-m untuk digunakan di matlab
Penulis: Tim Davis (semua bagian)
Untuk spqr_rank : Penulis Les Foster dan Tim Davis
Contents.m
Daftar Isi
dimacs10
Muat Matriks untuk Koleksi Dimacs10
Factorize
berorientasi objek x=Ab untuk matlab
find_components
menemukan komponen yang terhubung dalam suatu gambar
GEE
Eliminasi Gaussian Sederhana
getversion.m
Tentukan versi Matlab
gipper.m
Buat Arsip Matlab
hprintf.m
Cetak hyperlink di jendela perintah
LINFACTOR
Pendahuluan Factorize Paket
MESHND
Diseksi bersarang memerintahkan jerat biasa
pagerankdemo.m
menggambarkan cara kerja PageRank
SFMULT
C=S*F di mana S jarang dan F penuh
shellgui
Tampilkan kerang
sparseinv
Subset terbalik yang jarang
spok
Periksa apakah matriks jarang valid
spqr_rank
Paket SPQR_RANK. MATLAB Toolbox untuk matriks jarang kekurangan peringkat: ruang nol, faktorisasi yang andal, dll. Dengan Leslie Foster, San Jose State Univ.
SSMULT
C=A*B di mana A dan B keduanya jarang. Ini adalah dasar untuk bawukan C=A*B di matlab, sampai digantikan oleh graphblas di matlab r2021a.
SuiteSparseCollection
untuk koleksi matriks suitparse
waitmex
waitbar untuk digunakan di dalam fungsi mex
Mongoose
Partisi grafik.
Penulis: Nuri Yerani, Scott Kolodziej, William Hager, Tim Davis
ParU
Metode multifrontal pola paralel tidak simetris.
Saat ini pra-rilis.
Penulis: Mohsen Aznaveh dan Tim Davis
RBio
Baca/Tulis Matriks Jarang dalam Format Rutherford/Boeing
Penulis: Tim Davis
README.md
file ini
SPEX
memecahkan sistem linier yang jarang dalam aritmatika yang tepat.
Membutuhkan perpustakaan GNU GMP dan MPRF.
Ini akan segera digantikan oleh paket yang lebih umum, SPEX V3 yang mencakup metode ini (jarang lu yang tepat) dan lainnya (Cholesky yang jarang, dan pembaruan/downdate yang jarang). API V3 akan berubah secara signifikan.
Penulis: Chris Lourenco, Jinhao Chen, Erick Moreno-Centeno, Lorena Lorena Mejia Domenzain, dan Tim Davis.
Lihat https://github.com/clouren/spex untuk versi terbaru.
SPQR
Faktorisasi QR jarang. Ini qr dan x=Ab dalam matlab. Juga disebut suarparseqr.
Termasuk dua perpustakaan GPU: SPQR/GPUQREngine dan SPQR/SuiteSparse_GPURuntime .
Penulis Kode CPU: Tim Davis
Penulis Modul GPU: Tim Davis, Nuri Yerani, Wissam Sid-Lakhdar, Sanjay Ranka
ssget
Antarmuka Matlab ke koleksi matriks Suitesparse
Penulis: Tim Davis
SuiteSparse_config
Perpustakaan dengan fungsi dan konfigurasi umum untuk semua paket di atas. CSparse , GraphBLAS , LAGraph , dan MATLAB_Tools tidak menggunakan SuiteSparse_config .
Penulis: Tim Davis
SuiteSparse_demo.m
Demo Suitesparse untuk Matlab
SuiteSparse_install.m
Pasang SuitSparse untuk Matlab
SuiteSparse_paths.m
Setel jalur untuk Mexfunctions Matlab Suitesparse
SuiteSparse_test.m
Tes lengkap untuk Suitesparse di Matlab
UMFPACK
Faktorisasi LU yang jarang. Membutuhkan AMD dan BLAS .
Ini adalah lu dan x=Ab di matlab.
Penulis: Tim Davis
Kolaborasi Desain Algoritma: Iain Duff
Lihat setiap paket untuk informasi lisensi, hak cipta, dan penulis. Semua kode ditulis atau ditulis bersama oleh Timothy A. Davis (email: [email protected]), kecuali untuk Metis (oleh George Karypis), GraphBLAS/cpu_features (oleh Google), Graphblas/LZ4, ZSTD, dan XXHASH (oleh Yann Collet, sekarang di Facebook), dan grafik. Bagian Graphblas/Cuda adalah hak cipta (C) oleh Nvidia. Silakan merujuk ke masing -masing lisensi ini.
Terima kasih telah kemasan Suitesparse! Berikut beberapa saran:
Graphblas membutuhkan waktu lama untuk dikompilasi karena menciptakan banyak "factorykernels" yang cepat pada waktu kompilasi. Jika Anda ingin mengurangi waktu kompilasi dan ukuran perpustakaan, aktifkan mode GRAPHBLAS_COMPACT , tetapi jaga agar kompiler JIT tetap diaktifkan. Kemudian Graphblas akan mengkompilasi kernel yang dibutuhkannya saat run-time, melalui kompiler JIT-nya. Kinerja akan sama dengan factorykernels setelah kernel Jit dikompilasi. Kernel yang dikompilasi pengguna ditempatkan di ~/.SuiteSparse , secara default. Anda tidak perlu mendistribusikan sumber graphblas untuk mengaktifkan kompiler JIT: hanya libgraphblas.so dan GraphBLAS.h sudah cukup.
Graphblas membutuhkan OpenMP! Ini pada dasarnya kode paralel jadi silakan bagikan dengan OpenMP diaktifkan. Kinerja akan menderita sebaliknya.
Akselerasi Cuda: Cholmod dan SPQR dapat mengambil manfaat dari kernel CUDA mereka. Jika Anda tidak memiliki CUDA atau tidak ingin memasukkannya ke dalam distro Anda, versi SuitAsparse ini melewatkan pembangunan perpustakaan CHOLMOD_CUDA dan SPQR_CUDA , dan tidak terhubung dengan perpustakaan GPUQREngine dan SuiteSparse_GPURuntime .
SuitAsparse adalah paket meta dari banyak paket, masing-masing dengan makalah mereka sendiri yang diterbitkan. Untuk mengutip seluruh koleksi, gunakan URL:
Harap juga mengutip kertas spesifik untuk paket yang Anda gunakan. Ini adalah daftar panjang; Jika Anda ingin daftar yang lebih pendek, cukup kutip "Algoritma XXX:" yang terbaru dalam ACM Toms, untuk setiap paket.
Untuk MATLAB X = A B, lihat di bawah untuk AMD, ColamD, Cholmod, Umfpack, dan Suitesparseqr (SPQR).
untuk graphblas, dan c = ab di matlab (jarang-waktu-spparse):
Ta Davis. Algoritma 1037: Suitesparse: Graphblas: Algoritma grafik paralel dalam bahasa aljabar linier yang jarang. ACM Trans. Matematika. Softw. 49, 3, artikel 28 (September 2023), 30 halaman. https://doi.org/10.1145/3577195
T. Davis, Algoritma 1000: Suitesparse: Graphblas: Algoritma Grafik dalam Bahasa Aljabar Linear Jarang, ACM Trans pada Perangkat Lunak Matematika, Vol 45, No 4, Desember 2019, Artikel No 44. Https://doi.org/10.1145/332212.
untuk Lagraph:
G. Szárnyas et al., "Lagraph: Aljabar Linier, Perpustakaan Analisis Jaringan, dan Studi Algoritma Grafik," 2021 IEEE International Parallel dan Workshop Simposium Pemrosesan Terdistribusi (IPDPSW), Portland, OR, USA, 2021, hlm. 243-252. https://doi.org/10.1109/ipdpsw52791.2021.00046.
untuk csparse/cxsparse:
TA Davis, Metode Langsung untuk Sistem Linier Jarang, Seri Siam tentang Fundamental Algoritma, Siam, Philadelphia, PA, 2006. https://doi.org/10.1137/1.9780898718881
untuk suitesparseqr (spqr): (juga mengutip AMD, colamd):
TA Davis, Algoritma 915: Suitesparseqr: Multifrontal Multithreaded Rank-Revealing Jarang Faktorisasi QR, ACM Trans. pada perangkat lunak matematika, 38 (1), 2011, hlm. 8: 1--8: 22. https://doi.org/10.1145/2049662.2049670
untuk suitesparseqr/gpu:
Sencer Nuri YERNAN, TA Davis, Wissam M. Sid-Lakhdar, dan Sanjay Ranka. 2017. Algoritma 980: Faktorisasi QR jarang pada GPU. ACM Trans. Matematika. Softw. 44, 2, artikel 17 (Juni 2018), 29 halaman. https://doi.org/10.1145/3065870
untuk cholmod: (juga mengutip AMD, colamd):
Y. Chen, TA Davis, WW Hager, dan S. Rajamanickam, Algoritma 887: Cholmod, Faktorisasi Cholesky Jarang Supernodal dan Pembaruan/Downdate, ACM Trans. tentang Perangkat Lunak Matematika, 35 (3), 2008, hlm. 22: 1--22: 14. https://dl.acm.org/doi/abs/10.1145/1391989.1391995
Ta Davis dan WW Hager, Supernode Dinamis dalam Pembaruan Cholesky Jarang/Downdate dan Second Second, ACM Trans. pada perangkat lunak matematika, 35 (4), 2009, hlm. 27: 1--27: 23. https://doi.org/10.1145/1462173.1462176
Untuk modul cholmod/ubah: (juga mengutip AMD, colamd):
Ta Davis dan William W. Hager, Modifikasi Baris dari Faktorisasi Cholesky yang jarang Siam Journal tentang Analisis dan Aplikasi Matriks 2005 26: 3, 621-639. https://doi.org/10.1137/s089547980343641x
Ta Davis dan William W. Hager, modifikasi peringkat ganda dari faktorisasi Cholesky yang jarang Siam Journal tentang Analisis dan Aplikasi Matriks 2001 22: 4, 997-1013. https://doi.org/10.1137/s0895479899357346
Ta Davis dan William W. Hager, memodifikasi faktorisasi Cholesky yang jarang, Jurnal Siam tentang Analisis dan Aplikasi Matriks 1999 20: 3, 606-627. https://doi.org/10.1137/s0895479897321076
Untuk modul Cholmod/GPU:
Steven C. Rennich, Darko Stosic, Timothy A. Davis, mempercepat faktorisasi Cholesky yang jarang pada GPU, Komputasi Paralel, Vol 59, 2016, hlm 140-150. https://doi.org/10.1016/j.parco.2016.06.004
untuk AMD dan CAMD:
P. Amestoy, TA Davis, dan Duff, Algoritma 837: Perkiraan Algoritma Pemesanan Gelar Minimum, ACM Trans. tentang Perangkat Lunak Matematika, 30 (3), 2004, hlm. 381--388. https://dl.acm.org/doi/abs/10.1145/1024074.1024081
P. Amestoy, TA Davis, dan Duff, Algoritma Pemesanan Gelar Minimum Perkiraan, Analisis dan Aplikasi Matriks Siam J., 17 (4), 1996, hlm. 886--905. https://doi.org/10.1137/s0895479894278952
Untuk ColamD, Symamd, Ccolamd, dan Csymamd:
Ta Davis, Jr Gilbert, S. Larimore, E. NG, Algoritma 836: ColamD, Algoritma Pemesanan Gelar Minimum Kolom Perkiraan, ACM Trans. tentang Perangkat Lunak Matematika, 30 (3), 2004, hlm. 377--380. https://doi.org/10.1145/1024074.1024080
Ta Davis, Jr Gilbert, S. Larimore, E. NG, Algoritma Pemesanan Gelar Minimum Perkiraan Minimum, ACM Trans. tentang Perangkat Lunak Matematika, 30 (3), 2004, hlm. 353--376. https://doi.org/10.1145/1024074.1024079
Untuk UMFPack: (juga mengutip AMD dan ColamD):
TA Davis, Algoritma 832: UMFPACK-Metode multifrontal pola-pola tidak simetris dengan strategi pre-ordering kolom, ACM Trans. tentang Perangkat Lunak Matematika, 30 (2), 2004, hlm. 196--199. https://dl.acm.org/doi/abs/10.1145/992200.992206
Ta Davis, strategi pemesanan pra-pemesanan kolom untuk metode multifrontal pola-pola yang tidak simetris, ACM Trans. tentang Perangkat Lunak Matematika, 30 (2), 2004, hlm. 165--195. https://dl.acm.org/doi/abs/10.1145/992200.992205
Ta Davis dan Duff, metode unifrontal/multifrontal gabungan untuk matriks jarang yang tidak simetris, ACM Trans. tentang Perangkat Lunak Matematika, 25 (1), 1999, hlm. 1--19. https://doi.org/10.1145/305658.287640
Ta Davis dan Duff, metode multifrontal pola-pola yang tidak simetris untuk faktorisasi LU yang jarang, Analisis dan Komputasi Matriks Siam J., 18 (1), 1997, hlm. 140--158. https://doi.org/10.1137/s0895479894246905
Untuk Faktorisasi M-File:
TA Davis, Algoritma 930: Factorize, pemecah sistem linier yang berorientasi objek untuk MATLAB, ACM Trans. pada perangkat lunak matematika, 39 (4), 2013, hlm. 28: 1-28: 18. https://doi.org/10.1145/2491491.2491498
Untuk KLU dan BTF (juga mengutip AMD dan ColamD):
Ta Davis dan Ekanathan Palamadai Natarajan. 2010. Algoritma 907: KLU, pemecah jarang langsung untuk masalah simulasi sirkuit. ACM Trans. Matematika. Softw. 37, 3, artikel 36 (September 2010), 17 halaman. https://dl.acm.org/doi/abs/10.1145/1824801.1824814
untuk ldl:
Ta Davis. Algoritma 849: Paket faktorisasi Cholesky yang jarang ringkas. ACM Trans. Matematika. Softw. 31, 4 (Desember 2005), 587–591. https://doi.org/10.1145/1114268.1114277
Untuk SSGET dan koleksi matriks Suitesparse:
Ta Davis dan Yifan Hu. 2011. Koleksi Matriks Jarang Universitas Florida. ACM Trans. Matematika. Softw. 38, 1, Pasal 1 (November 2011), 25 halaman. https://doi.org/10.1145/2049662.2049663
Kolodziej et al., (2019). Antarmuka situs web koleksi matriks suitesparse. Jurnal Perangkat Lunak Open Source, 4 (35), 1244. Https://doi.org/10.21105/joss.01244
untuk spqr_rank :
Leslie V. Foster dan Ta Davis. 2013. Algoritma 933: Perhitungan peringkat numerik yang andal, basis ruang nol, solusi pseudoinverse, dan solusi dasar menggunakan Suitesparseqr. ACM Trans. Matematika. Softw. 40, 1, Pasal 7 (September 2013), 23 halaman. https://doi.org/10.1145/2513109.2513116
Untuk Mongoose:
Ta Davis, William W. Hager, Scott P. Kolodziej, dan S. Nuri YeRan. 2020. Algoritma 1003: Mongoose, perpustakaan grafik kasar dan partisi. ACM Trans. Matematika. Softw. 46, 1, Pasal 7 (Maret 2020), 18 halaman. https://doi.org/10.1145/3337792
untuk spex:
Christopher Lourenco, Jinhao Chen, Erick Moreno-Centeno, dan Ta Davis. 2022. Algoritma 1021: Spex kiri LU, dengan tepat memecahkan sistem linier yang jarang melalui faktorisasi LU yang melestarikan integer yang tampak seperti bilangan bulat. ACM Trans. Matematika. Softw. Juni 2022. Https://doi.org/10.1145/3519024
Catatan: Jika Anda menggunakan OpenBlas, pastikan untuk menggunakan versi 0.3.27 atau lebih baru.
Untuk memilih Blas/Lapack Anda, lihat instruksi di Suitesparseblas.cmake di SuiteSparse_config/cmake_modules . Jika SuiteSparse_config menemukan BLAS dengan bilangan bulat 64-bit (seperti Intel MKL ILP64 Blas), ia mengkonfigurasi SuiteSparse_config.h dengan SUITESPARSE_BLAS_INT yang didefinisikan sebagai int64_t . Jika tidak, jika BLAS 32-bit ditemukan, tipe ini didefinisikan sebagai int32_t . Jika nanti, UMFPack, Cholmod, atau SPQR dikompilasi dan dihubungkan dengan BLAS yang memiliki ukuran bilangan bulat yang berbeda, Anda harus mengesampingkan definisi dengan -DBLAS64 (untuk menegaskan penggunaan bilangan bulat 64 -bit dalam blas) atau -DBLAS32 , (untuk menegaskan penggunaan bilangan bulat 32 -bit di BLAS).
Ukuran Integer Blas tidak ada hubungannya dengan sizeof(void *) .
Ketika didistribusikan dalam bentuk biner (seperti paket Debian, Ubuntu, Spack, atau Brew), SuitAsparse mungkin harus dikompilasi untuk mengharapkan BLA 32-bit, karena ini adalah kasus yang paling umum. Standarnya adalah menggunakan BLAS 32-bit, tetapi ini dapat diubah dengan mengatur variabel cmake SUITESPARSE_USE_64BIT_BLAS ke ON .
Secara default, perburuan Suitesparse untuk perpustakaan BLAS yang cocok. Untuk menegakkan perpustakaan BLAS tertentu, gunakan:
CMAKE_OPTIONS="-DBLA_VENDOR=OpenBLAS" make
cd Package ; cmake -DBLA_VENDOR=OpenBLAS .. make
Untuk menggunakan default (Hunt for a Blas), jangan atur BLA_VENDOR , atau atur ke string kosong. Dalam hal ini, jika SUITESPARSE_USE_64BIT_BLAS aktif, preferensi diberikan kepada BLAS 64-bit, tetapi perpustakaan BLAS 32-bit akan digunakan jika tidak ada perpustakaan 64-bit yang ditemukan. Namun, jika keduanya SUITESPARSE_USE_64BIT_BLAS dan SUITESPARSE_USE_STRICT AKTIF, maka hanya BLAS 64-bit yang dipertimbangkan.
Saat memilih perpustakaan BLAS tertentu, pengaturan SUITESPARSE_USE_64BIT_BLAS diikuti secara ketat. Jika diatur ke True, hanya perpustakaan BLAS 64-bit yang akan digunakan. Jika false (default), hanya perpustakaan BLAS 32-bit yang akan digunakan. Jika tidak ada Blas seperti itu ditemukan, build akan gagal.
Ketik berikut ini di direktori ini (membutuhkan sistem priviledge untuk melakukan sudo make install ):
mkdir -p build && cd build
cmake ..
cmake --build .
sudo cmake --install .
Semua pustaka akan dibuat dan diinstal ke folder seluruh sistem default (/usr/local/lib di Linux). Semua termasuk file yang dibutuhkan oleh aplikasi yang menggunakan SuitAsparse diinstal ke/usr/lokal/include/suitesparse (di Linux).
Untuk membangun hanya subset perpustakaan, atur SUITESPARSE_ENABLE_PROJECTS saat mengonfigurasi dengan cmake. Misalnya, untuk membangun dan menginstal cholmod dan cxsparse (termasuk dependensi mereka), gunakan perintah berikut:
mkdir -p build && cd build
cmake -DSUITESPARSE_ENABLE_PROJECTS="cholmod;cxsparse" ..
cmake --build .
sudo cmake --install .
Untuk Windows (MSVC), impor file CMakeLists.txt ke MS Visual Studio. Pastikan untuk menentukan jenis build sebagai rilis; Misalnya, untuk membangun SuitEsparse di Windows di jendela perintah, jalankan:
mkdir -p build && cd build
cmake ..
cmake --build . --config Release
cmake --install .
Pastikan untuk terlebih dahulu menginstal semua pustaka yang diperlukan: BLAS dan Lapack untuk UMFPack, Cholmod, dan SPQR, dan GMP dan MPFR untuk SPEX. Pastikan untuk menggunakan perpustakaan terbaru; SPEX membutuhkan MPFR 4.0.2 dan GMP 6.1.2 (nomor versi ini tidak sesuai dengan akhiran XYZ dari libgmp.so.xyz dan libmpfr.so.xyz; lihat Panduan Pengguna SPEX untuk detailnya).
Untuk mengkompilasi perpustakaan dan menginstalnya hanya di Suitesparse/Lib (Not/Usr/Local/Lib), lakukan ini sebagai gantinya di tingkat atas yang tidak ada jutaan:
mkdir -p build && cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ..
cmake --build .
cmake --install .
Jika Anda menambahkan/beranda/me/suitesparse/lib ke jalur pencarian perpustakaan Anda ( LD_LIBRARY_PATH di linux), Anda dapat melakukan yang berikut (misalnya):
S = /home/me/SuiteSparse
cc myprogram.c -I$(S)/include/suitesparse -lumfpack -lamd -lcholmod -lsuitesparseconfig -lm
Untuk mengubah kompiler C dan C ++, dan untuk mengkompilasi penggunaan paralel:
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER==g++ ..
Misalnya, yang mengubah kompiler ke GCC dan G ++.
Ini akan bekerja di Linux/Unix dan Mac. Ini harus secara otomatis mendeteksi apakah Anda memiliki kompiler intel atau tidak, dan apakah Anda memiliki cuda atau tidak.
Lihat SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake untuk memilih BLAS Anda.
Anda mungkin juga perlu menambahkan Suitesparse/Lib ke jalan Anda. Jika salinan SuitAsparse Anda ada di/home/me/suitesparse, misalnya, maka tambahkan ini ke file ~/.bashrc Anda:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export LD_LIBRARY_PATH
Untuk Mac, gunakan ini sebagai gantinya:
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export DYLD_LIBRARY_PATH
Instal Lokasi File Default Di Bawah, Di mana Paket adalah salah satu paket di SuitAsparse:
* `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
Misalkan Anda menempatkan Suitesparse di folder /home/me/SuiteSparse .
Tambahkan folder SuiteSparse/lib ke jalur perpustakaan run-time Anda. Di Linux, tambahkan ini ke skrip ~/.bashrc Anda, dengan asumsi /home/me/SuiteSparse adalah lokasi salinan SuitAsparse Anda:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export LD_LIBRARY_PATH
Untuk Mac, gunakan ini sebagai gantinya, dalam skrip ~/.zshrc Anda, dengan asumsi Anda menempatkan Suitesparse di /Users/me/SuiteSparse :
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Users/me/SuiteSparse/lib
export DYLD_LIBRARY_PATH
Kompilasi semua Suitesparse dengan make local .
Selanjutnya, kompilasi Perpustakaan Graphblas Matlab. Di System Shell saat berada di folder SuitAsparse, ketik make gbmatlab jika Anda ingin menginstalnya di seluruh sistem dengan make install , atau make gblocal jika Anda ingin menggunakan perpustakaan di SuitSparse/Lib Anda sendiri.
Kemudian di jendela perintah MATLAB, CD ke direktori SuitAsparse dan ketik SuiteSparse_install . Semua paket akan dikompilasi, dan beberapa demo akan dijalankan. Untuk menjalankan tes (panjang!) Lengkap, lakukan SuiteSparse_test .
Simpan jalur MATLAB Anda untuk sesi mendatang dengan perintah MATLAB Pathtool atau SavePath. Jika metode tersebut gagal karena Anda tidak memiliki izin seluruh sistem, tambahkan jalur baru ke file startup.m Anda, biasanya di dokumen/matlab/startup.m. Anda juga dapat menggunakan MILE SuiteSparse_paths untuk mengatur semua jalur Anda di awal setiap sesi MATLAB.
Anda dapat mengatur opsi spesifik untuk CMake dengan perintah (misalnya):
cmake -DCHOLMOD_PARTITION=OFF -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug ..
Perintah itu akan menyusun semua SuitAsparse kecuali untuk modul cholmod/partisi (karena -DCHOLMOD_PARTITION=OFF ). Mode debug akan digunakan (tipe build). Perpustakaan statis tidak akan dibangun (karena -DBUILD_STATIC_LIBS=OFF disetel).
SUITESPARSE_ENABLE_PROJECTS :
Daftar proyek yang dipisahkan titik koma yang akan dibangun atau all . Default: all dalam hal ini proyek -proyek berikut dibangun:
suitesparse_config;mongoose;amd;btf;camd;ccolamd;colamd;cholmod;cxsparse;ldl;klu;umfpack;paru;rbio;spqr;spex;graphblas;lagraph
Selain itu, csparse dapat dimasukkan dalam daftar itu untuk membangun CSPARSE.
CMAKE_BUILD_TYPE :
Default: Release , gunakan Debug untuk debugging.
SUITESPARSE_USE_STRICT :
Suitesparse memiliki banyak pengaturan yang dapat ditentukan pengguna dari Formulir SUITESPARSE_USE_* atau (package)_USE_* untuk beberapa paket tertentu. Secara umum, pengaturan ini tidak ketat. Misalnya, jika SUITESPARSE_USE_OPENMP ON maka OpenMP lebih disukai, tetapi Suitesparse dapat digunakan tanpa OpenMP sehingga tidak ada kesalahan yang dihasilkan jika OpenMP tidak ditemukan. Namun, jika SUITESPARSE_USE_STRICT ON maka semua *_USE_* pengaturan diperlakukan dengan ketat dan kesalahan terjadi jika ada yang diatur ke ON tetapi paket atau pengaturan yang sesuai tidak tersedia. Pengaturan *_USE_SYSTEM_* selalu diperlakukan sebagai ketat. Default: OFF .
SUITESPARSE_USE_CUDA :
Jika diatur ke ON , CUDA diaktifkan untuk semua SuitSparse. Default: ON ,
CUDA pada Windows dengan MSVC tampaknya bekerja dengan rilis ini, tetapi harus dianggap sebagai prototipe dan mungkin tidak berfungsi penuh. Saya memiliki sumber daya terbatas untuk menguji CUDA di Windows. Jika Anda mengalami masalah, nonaktifkan CUDA dan posting ini sebagai masalah di GitHub.
CHOLMOD_USE_CUDA :
Default: ON . Baik SUITESPARSE_USE_CUDA dan CHOLMOD_USE_CUDA harus diaktifkan untuk menggunakan CUDA di Cholmod.
SPQR_USE_CUDA :
Default: ON . Keduanya SUITESPARSE_USE_CUDA dan SPQR_USE_CUDA harus diaktifkan untuk menggunakan CUDA di SPQR.
CMAKE_INSTALL_PREFIX :
Menentukan lokasi instal (default di Linux IS /usr/local ). Misalnya, perintah ini saat berada di folder build di folder Top Level SuitAsparse akan mengatur direktori instal ke /stuff , yang digunakan oleh sudo cmake --install . :
cmake -DCMAKE_INSTALL_PREFIX=/stuff ..
sudo cmake --install .
SUITESPARSE_PKGFILEDIR :
Direktori di mana cMake config dan file pkg-config akan diinstal. Secara default, file konfigurasi CMake akan diinstal di subfolder cmake dari direktori di mana pustaka (statis) akan diinstal (misalnya, lib ). File .pc untuk pkg-config akan diinstal di subfolder pkgconfig dari direktori di mana pustaka (statis) akan diinstal.
Opsi ini memungkinkan untuk menginstalnya di lokasi yang berbeda dari pustaka (statis). Ini memungkinkan untuk menginstal beberapa konfigurasi perpustakaan Suitesparse secara bersamaan (misalnya, dengan juga mengatur CMAKE_RELEASE_POSTFIX yang berbeda dan CMAKE_INSTALL_LIBDIR untuk masing -masing). Untuk mengambil konfigurasi masing-masing dalam proyek hilir, set, misalnya, CMAKE_PREFIX_PATH (untuk cmake) atau PKG_CONFIG_PATH (untuk sistem build menggunakan pkg-config) ke jalur yang berisi file konfigurasi cmake masing-masing atau file pkg-config.
SUITESPARSE_INCLUDEDIR_POSTFIX :
Postfix untuk target instalasi header dari SuitAsparse. Default: Suitesparse, jadi default termasuk direktori adalah: CMAKE_INSTALL_PREFIX/include/suitesparse
BUILD_SHARED_LIBS :
Jika ON , perpustakaan bersama dibangun. Default: ON .
BUILD_STATIC_LIBS :
Jika ON , perpustakaan statis dibangun. Default: ON , kecuali untuk graphblas, yang membutuhkan waktu lama untuk dikompilasi sehingga default untuk graphblas OFF kecuali BUILD_SHARED_LIBS OFF .
SUITESPARSE_CUDA_ARCHITECTURES :
Sebuah string, seperti "all" atau "35;50;75;80" yang mencantumkan arsitektur CUDA untuk digunakan saat menyusun kernel CUDA dengan nvcc . Opsi "all" membutuhkan CMake 3.23 atau lebih baru. Default: "52;75;80" .
BLA_VENDOR :
String. Biarkan yang tidak disetel, atau gunakan "ANY" untuk memilih perpustakaan BLAS (default). Atau diatur ke nama BLA_VENDOR yang ditentukan oleh findblas.cmake. Lihat: https://cmake.org/cmake/help/latest/module/findblas.html#blas-lapack-vendors
SUITESPARSE_USE_64BIT_BLAS :
Jika ON , cari blas 64-bit. Jika OFF : Hanya 32-bit. Default: OFF .
SUITESPARSE_USE_PYTHON :
Jika ON , bangun antarmuka Python untuk paket apa pun di SuitAsparse yang memiliki satu (saat ini hanya SPEX). Jika OFF : Jangan membangun antarmuka python. Default: ON .
SUITESPARSE_USE_OPENMP :
Jika ON , OpenMP digunakan secara default jika tersedia. Default: ON .
Graphblas, Lagraph, dan Paru akan jauh lebih lambat jika OpenMP tidak digunakan. Cholmod akan agak lebih lambat tanpa OpenMP (asalkan masih memiliki Blas/Lapack paralel). Tiga paket (UMFPack, Cholmod, dan SPQR) sangat bergantung pada perpustakaan BLAS/Lapack paralel dan perpustakaan tersebut dapat menggunakan OpenMP secara internal. Jika Anda ingin menonaktifkan OpenMP di seluruh aplikasi, pilih satu blas/lapack tunggal, atau Blas/Lapack paralel yang tidak menggunakan OpenMP (seperti Apple Accelerate Framework). Menggunakan perpustakaan Blas/Lapack tunggal akan menyebabkan UMFPack, Cholmod, dan SPQR menjadi jauh lebih lambat.
PERINGATAN: Graphblas mungkin tidak aman-utas jika dibangun tanpa OpenMP atau Pthreads (lihat Panduan Pengguna Graphblas untuk detailnya).
SUITESPARSE_CONFIG_USE_OPENMP :
Jika ON , SuiteSparse_config menggunakan OpenMP jika tersedia. Default: SUITESPARSE_USE_OPENMP . Ini tidak penting dan hanya digunakan untuk membiarkan SuiteSparse_time Call omp_get_wtime .
CHOLMOD_USE_OPENMP :
Jika ON , OpenMP digunakan di Cholmod jika tersedia. Default: SUITESPARSE_USE_OPENMP .
GRAPHBLAS_USE_OPENMP :
Jika ON , OpenMP digunakan dalam graphblas jika tersedia. Default: SUITESPARSE_USE_OPENMP .
LAGRAPH_USE_OPENMP :
Jika ON , OpenMP digunakan dalam Lagraph jika tersedia. Default: SUITESPARSE_USE_OPENMP .
PARU_USE_OPENMP :
Jika ON , OpenMP digunakan di PARU jika tersedia. Default: SUITESPARSE_USE_OPENMP .
SPEX_USE_OPENMP :
Jika ON , OpenMP digunakan di SPEX jika tersedia. Default: SUITESPARSE_USE_OPENMP .
SUITESPARSE_DEMOS :
Jika ON , bangun program demo untuk setiap paket. Default: OFF .
SUITESPARSE_USE_SYSTEM_BTF :
Jika ON , gunakan pustaka BTF yang diinstal pada sistem build. Jika OFF , secara otomatis membangun BTF sebagai ketergantungan jika diperlukan. Default: OFF .
SUITESPARSE_USE_SYSTEM_CHOLMOD :
Jika ON , gunakan pustaka cholmod yang diinstal pada sistem build. Jika OFF , secara otomatis membangun Cholmod sebagai ketergantungan jika diperlukan. Default: OFF .
SUITESPARSE_USE_SYSTEM_AMD :
Jika ON , gunakan pustaka AMD yang diinstal pada sistem build. Jika OFF , secara otomatis membangun AMD sebagai ketergantungan jika diperlukan. Default: OFF .
SUITESPARSE_USE_SYSTEM_COLAMD :
Jika ON , gunakan pustaka Colamd yang diinstal pada sistem build. Jika OFF , secara otomatis membangun colamd sebagai ketergantungan jika diperlukan. Default: OFF .
SUITESPARSE_USE_SYSTEM_CAMD :
Jika ON , gunakan pustaka CAMD yang diinstal pada sistem build. Jika OFF , secara otomatis membangun CAMD sebagai ketergantungan jika diperlukan. Default: OFF .
SUITESPARSE_USE_SYSTEM_CCOLAMD :
Jika ON , gunakan pustaka CCOLAMD yang diinstal pada sistem build. Jika OFF , secara otomatis membangun CCOLAMD sebagai ketergantungan jika diperlukan. Default: OFF .
SUITESPARSE_USE_SYSTEM_GRAPHBLAS :
Jika ON , gunakan pustaka Graphblas yang diinstal pada sistem build. Jika OFF , secara otomatis membangun graphblas sebagai ketergantungan jika diperlukan. Default: OFF .
SUITESPARSE_USE_SYSTEM_SUITESPARSE_CONFIG :
Jika ON , gunakan pustaka SuiteSparse_config yang diinstal pada sistem build. Jika OFF , secara otomatis membangun SuiteSparse_config sebagai ketergantungan jika diperlukan. Default: OFF .
SUITESPARSE_USE_FORTRAN
Jika ON , gunakan Fortran Compiler untuk menentukan bagaimana C memanggil Fortan, dan untuk membangun beberapa rutinitas Fortran opsional. Jika OFF , gunakan SUITESPARSE_C_TO_FORTRAN untuk menentukan bagaimana C panggilan C FORTRAN. Default: ON .
SUITESPARSE_C_TO_FORTRAN
Sebuah string yang mendefinisikan bagaimana C panggilan Fortran (yaitu, fungsi yang diekspor oleh perpustakaan BLAS). Pengaturan ini digunakan jika tidak ada kompiler fortran yang berfungsi dapat dideteksi atau SUITESPARSE_USE_FORTRAN diatur ke OFF . String ini harus dibaca sebagai daftar argumen dan tubuh makro preprosesor. Argumen pertama untuk makro itu adalah nama fungsi Fortran dalam huruf kecil. Argumen kedua adalah nama fungsi yang sama dalam huruf besar. Tubuh mendefinisikan fungsi fungsi Fortran yang disebut. Ini diperlukan karena Fortran tidak sensitif, dan kompiler Fortran yang berbeda menggunakan berbagai konvensi mangling nama. Jika kompiler MSVC C/C ++ digunakan, ini default untuk "(name,NAME) name" (yaitu, huruf kecil tanpa membuntuti garis bawah). Itulah nama Mangling Convention untuk Intel Fortran Compiler di Windows. Jika ada kompiler C/C ++ lainnya yang digunakan, default ini untuk "(name,NAME) name##_" (yaitu, huruf kecil dengan trailing garis bawah). Itulah nama Konvensi Mangling untuk sebagian besar kompiler Fortran yang umum digunakan (seperti ifx pada platform selain Windows, gfortran , flang , ...). The latter name mangling convention is also used by default by OpenBLAS (independent on the platform or the compiler used to build OpenBLAS). 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.
Additional options are available for specific packages:
UMFPACK_USE_CHOLMOD :
If ON , UMFPACK uses CHOLMOD for additional (optional) ordering options. Default: ON .
KLU_USE_CHOLMOD :
If ON , KLU uses CHOLMOD for additional (optional) ordering options. Default: ON .
CHOLMOD is composed of a set of Modules that can be independently selected; 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. This also disables the Supernodal and Modify modules.
CHOLMOD_MODIFY
If OFF , do not build the Modify module.
CHOLMOD_CAMD
If OFF , do not link against CAMD and CCOLAMD. This also disables the Partition module.
CHOLMOD_PARTITION
If OFF , do not build the Partition module.
CHOLMOD_SUPERNODAL
If OFF , do not build the Supernodal module.
One common issue can affect all packages: getting the right #include files that match the current libraries being built. It's possible that your Linux distro has an older copy of SuiteSparse headers in /usr/include or /usr/local/include, or that Homebrew has installed its suite-sparse bundle into /opt/homebrew/include or other places. Old libraries can appear in in /usr/local/lib, /usr/lib, etc. When building a new copy of SuiteSparse, the cmake build system is normally (or always?) able to avoid these, and use the right header for the right version of each library.
As an additional guard against this possible error, each time one SuiteSparse package #include's a header from another one, it checks the version number in the header file, and reports an #error to the compiler if a stale version is detected. In addition, the Example package checks both the header version and the library version (by calling a function in each library). If the versions mismatch in any way, the Example package reports an error at run time.
For example, CHOLMOD 5.1.0 requires AMD 3.3.0 or later. 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
and the compilation will fail. The Example package makes another check, by calling amd_version and comparing it with the versions from the amd.h header file.
If this error or one like it occurs, check to see if you have an old copy of SuiteSparse, and uninstall it before compiling your new copy of SuiteSparse.
There are other many possible build/install issues that are covered by the corresponding user guides for each package, such as finding the right BLAS, OpenMP, and other libraries, and how to compile on the Mac when using GraphBLAS inside MATLAB, and so on. Refer to the User Guides for more details.
MATLAB/Octave/R/Mathematica interfaces:
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. The list is too long.
Julia interface:
https://github.com/JuliaSparse/SparseArrays.jl
Python interface to GraphBLAS by Anaconda and NVIDIA:
https://pypi.org/project/python-graphblas
Intel's Go interface to GraphBLAS:
https://pkg.go.dev/github.com/intel/forGraphBLASGo
See scikit-sparse and scikit-umfpack for the Python interface via SciPy:
https://github.com/scikit-sparse/scikit-sparse https://github.com/scikit-umfpack/scikit-umfpack
See math.js by Jos de Jong for a JavaScript port of CSparse:
https://github.com/josdejong/mathjs
See russell for a Rust interface:
https://github.com/cpmech/russell
Markus Mützel contributed the most recent update of the SuiteSparse build system for all SuiteSparse packages, extensively porting it and modernizing it.
I would also like to thank François Bissey, Sebastien Villemot, Erik Welch, Jim Kitchen, and Fabian Wein for their valuable feedback on the SuiteSparse build system and how it works with various Linux / Python distros and other package managers. If you are a maintainer of a SuiteSparse packaging for a Linux distro, conda-forge, R, spack, brew, vcpkg, etc, please feel free to contact me if there's anything I can do to make your life easier. I would also like to thank Raye Kimmerer for adding support for 32-bit row/column indices in SPQR v4.2.0.
See also the various Acknowledgements within each package.