2024 년 10 월 10 일, SuitesParse 버전 7.8.3
Suitesparse는 Tim Davis가 작성하거나 공동 저술 한 Sparse-Matrix 관련 패키지 세트로 https://github.com/drimothyaldendavis/suitesparse에서 제공됩니다.
Suitesparse의 1 차 저자 (코드 및 알고리즘, Metis 제외) : Tim Davis
코드 공동 저자, 알파벳 순서 (Metis 또는 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 Domenzain, Erick Moreno-Centeno, Markus Mützel, Corey Nolel, Ekanathan Palamadai, Sivasankaran Rajamanickam, Sanjay Ranka, Wissam Sid-Lakhdar 및 Nuri Yeralan.
Lagraph는 Suitesparse에있는 모든 패키지의 개발자에 의해 개발되었으며 자체 목록이 필요합니다. 목록은 lagraph/contibitors.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는 George Karypis가 작성했습니다.
추가 알고리즘 디자이너 : Esmond NG 및 John Gilbert.
라이센스, 저작권 및 저자 정보는 각 패키지를 참조하십시오.
각 패키지는 각 패키지, 각 패키지, 일반적으로 Doc Subfolder의 문서를 참조하십시오.
SuiteSparse의 패키지 및이 디렉토리의 파일 :
AMD
대략 최소 정도 주문. 이것은 Matlab의 내장 AMD 기능입니다.
저자 : Tim Davis, Patrick Amestoy, Iain Duff
bin
편집 할 때 프로그램이 배치되는 곳, make local 위해
BTF
삼각형 형태를 차단하는 순열
저자 : Tim Davis, Ekanathan Palamadai
build
기본 빌드 트리를위한 폴더
CAMD
대략적인 최소 정도 순서가 제한됩니다
저자 : Tim Davis, Patrick Amestoy, Iain Duff, Yanqing Chen
CCOLAMD
제한된 열 대략 최소 정도 순서
저자 : Tim Davis, Sivasankaran Rajamanickam, Stefan Larimore.
알고리즘 디자인 공동 작업자 : Esmond NG, John Gilbert (Colamd)
ChangeLog
Suitesparse의 변경 사항 요약. 각 패키지에 대한 자세한 내용은 */Doc/ChangeLog 참조하십시오.
CHOLMOD
희소 한 cholesky 인수화. AMD, Colamd, Ccolamd, Blas 및 Lapack이 필요합니다. 선택적으로 Metis를 사용합니다. 이것은 matlab에서 chol 이고 x=Ab .
모든 모듈에 대한 저자 : Tim Davis
Cholmod/Modify Module 저자 : Tim Davis와 William W. Hager
Cholmod/suitesparse_metis : cholmod 라이브러리에 포함 된 수정 된 Metis 버전. 자세한 내용은 readme.txt 파일을 참조하십시오. 저자 : George Karypis. 이것은 George Karypis가 제공 한 오픈 소스 라이센스를 통해 Suitesparse에 포함 된 약간 수정 된 사본입니다. SuitesParse는 수정되지 않은 Metis 사본을 사용할 수 없습니다.
CITATION.bib
Bibtex 형식의 Suitesparse 패키지에 대한 인용.
CMakeLists.txt
선택 사항, 모든 Suitesparse를 컴파일합니다. 아래를 참조하십시오.
CODE_OF_CONDUCT.md
커뮤니티 지침
COLAMD
열 대략 최소 정도 순서. 이것은 Matlab의 내장 Colamd 기능입니다.
저자 (코드) : Tim Davis와 Stefan Larimore
알고리즘 설계 공동 작업자 : Esmond NG, John Gilbert
Contents.m
Matlab의 'Help Suitesparse'에 대한 내용 목록.
CONTRIBUTING.md
Suitesparse에 기여하는 방법
CONTRIBUTOR-LICENSE.txt
필요한 기고자 계약
CSparse
SIAM이 출판 한 저의 저서 "Sparse Linear Systems를위한 직접 방법"을 위해 개발 된 간결한 스파스 매트릭스 패키지. 주로 가르치기위한 것입니다. 이 코드는 (c) Tim Davis,이 책에 명시된대로입니다.
생산하려면 대신 CXSPARSE를 사용하십시오. 특히, CSPARSE와 CXSPARSE는 Filename : cs.h 포함합니다. 이 패키지는 MATLAB의 내장 DMPERM에 사용됩니다.
저자 : 팀 데이비스
CXSparse
CSPARSE 확장. 복잡한 행렬 및 int 또는 긴 정수에 대한 지원이 포함됩니다. 생산 사용을 위해 CSPARSE 대신 이것을 사용하십시오. CSPARSE와 동일한 이름의 libcsparse.so (또는 Mac의 Dylib)를 만듭니다. CSPARSE의 슈퍼 세트입니다. CSPARSE와 연결하는 모든 코드도 대신 CXSPARSE와 연결할 수 있어야합니다.
저자 : Tim Davis, David Bateman
Example
거의 모든 suitesparse에 의존하는 간단한 패키지
.github
GitHub에서 CI 테스트를위한 워크 플로우.
GraphBLAS
선형 대수 언어의 그래프 알고리즘.
https://graphblas.org
저자 : Tim Davis, Joe Eaton, Corey Nolet
include
make install 장소 사용자가 가시 가능한 곳에는 make local 후 각 패키지에 대한 파일을 포함시킵니다.
KLU
주로 회로 시뮬레이션을위한 희소 LU 인수화. AMD, Colamd 및 BTF가 필요합니다. 선택적으로 Cholmod, Camd, Ccolamd 및 Metis를 사용합니다.
저자 : Tim Davis, Ekanathan Palamadai
LAGraph
그래프 블라스를 기반으로 한 그래프 알고리즘 라이브러리. https://github.com/graphblas/lagraph도 참조하십시오
저자 : 많은.
LDL
매우 간결한 LDL '인수화 패키지
저자 : 팀 데이비스
lib
make local 후 여기 각 패키지에 대한 공유 라이브러리를 make install .
LICENSE.txt
각 패키지에 대한 라이센스 수집.
Makefile
선택 사항, make 사용하여 모든 SuitesParse를 컴파일하려면 각 하위 프로젝트에서 cmake 위한 간단한 래퍼로 사용됩니다.
make
SuitesParse 라이브러리를 컴파일합니다. 후속 make install CMAKE_INSTALL_PATH 에 설치됩니다 (Linux 또는 Mac의 /usr/local/lib 까지 기본값).
make local
SuitesParse를 컴파일합니다. 후속 make install ./lib , ./include 에 설치됩니다. CMAKE_INSTALL_PATH 에 설치되지 않습니다.
make global
SuitesParse 라이브러리를 컴파일합니다. 후속 make install /usr/local/lib (또는 구성된 CMAKE_INSTALL_PREFIX 가 무엇이든)에 설치됩니다. ./lib 및 ./include 에 설치되지 않습니다.
make install
현재 디렉토리 ( ./lib , ./include ) 또는 /usr/local/lib 및 /usr/local/include ( CMAKE_INSTALL_PREFIX 에 의해 make global make local make 에 설치됩니다.
make uninstall
undoe는 make install .
make distclean
./bin , ./share , ./lib 및 ./include 를 포함하여 배포되지 않은 모든 파일을 제거합니다.
make purge
make distclean 과 동일합니다.
make clean
배포되지 않은 모든 파일을 제거하지만 컴파일 된 라이브러리 및 데모, ./lib , ./share 및 ./include 유지합니다.
각각의 개별 하위 프로젝트에는 위의 각각 make 대상이 있습니다.
할 필요가없는 것 :
make docs
라텍스 파일에서 사용자 가이드를 만듭니다
make cov
진술 적용 범위 테스트 실행 (Linux 만 해당)
MATLAB_Tools
MATLAB에서 사용하기위한 다양한 M- 파일
저자 : Tim Davis (모든 부분)
spqr_rank 의 경우 : 저자 Les Foster와 Tim Davis
Contents.m
내용 목록
dimacs10
Dimacs10 컬렉션의 행렬을로드합니다
Factorize
MATLAB의 객체 지향 x=Ab
find_components
이미지에서 연결된 구성 요소를 찾습니다
GEE
간단한 가우스 제거
getversion.m
MATLAB 버전을 결정하십시오
gipper.m
Matlab 아카이브를 만듭니다
hprintf.m
명령 창에 하이퍼 링크를 인쇄하십시오
LINFACTOR
패키지를 Factorize 전임자
MESHND
일반 메쉬의 중첩 해부 순서
pagerankdemo.m
PageRank의 작동 방식을 보여줍니다
SFMULT
C=S*F 여기서 S 는 sporse이고 F 가득 차 있습니다
shellgui
조개를 표시하십시오
sparseinv
스파 스 역 하위 집합
spok
드문 매트릭스가 유효한지 확인하십시오
spqr_rank
SPQR_RANK 패키지. 순위 부족한 희소 행렬에 대한 MATLAB 도구 상자 : Leslie Foster, San Jose State Univ를 사용한 널 공간, 신뢰할 수있는 인수 화 등.
SSMULT
C=A*B 여기서 A 와 B 둘 다 희소합니다. 이것은 MATLAB R2021A의 GraphBlas에 의해 대체 될 때까지 MATLAB의 내장 C=A*B 의 기초였습니다.
SuiteSparseCollection
Suitesparse Matrix Collection 용
waitmex
MexFunction 내부에서 사용하기위한 Waitbar
Mongoose
그래프 분할.
저자 : Nuri Yeralan, Scott Kolodziej, William Hager, Tim Davis
ParU
병렬 비대칭 패턴 다중 원형 방법.
현재 사전 릴리스입니다.
저자 : Mohsen Aznaveh와 Tim Davis
RBio
Rutherford/Boeing 형식의 희소 행렬을 읽고 쓰십시오
저자 : 팀 데이비스
README.md
이 파일
SPEX
정확한 산술에서 드문 선형 시스템을 해결합니다.
GNU GMP 및 MPRF 라이브러리가 필요합니다.
이것은 곧이 방법 (정확한 희소 LU) 및 기타 (Sparse Exact Cholesky, Sparse Exact Update/Downdate)를 포함하는보다 일반적인 패키지 인 SPEX V3로 대체됩니다. V3의 API가 크게 변할 것입니다.
저자 : Chris Lourenco, Jinhao Chen, Erick Moreno-Centeno, Lorena Lorena Mejia Domenzain 및 Tim Davis.
최신 버전은 https://github.com/clouren/spex를 참조하십시오.
SPQR
드문 QR 인수화. 이것은 MATLAB에서 내장 qr 및 x=Ab . SuitesParseqr라고도합니다.
SPQR/GPUQREngine 및 SPQR/SuiteSparse_GPURuntime 두 GPU 라이브러리가 포함되어 있습니다.
CPU 코드의 저자 : Tim Davis
GPU 모듈의 저자 : Tim Davis, Nuri Yeralan, Wissam Sid-Lakhdar, Sanjay Ranka
ssget
Suitesparse Matrix 컬렉션의 Matlab 인터페이스
저자 : 팀 데이비스
SuiteSparse_config
위의 모든 패키지에 대한 공통 기능 및 구성이있는 라이브러리. CSparse , GraphBLAS , LAGraph 및 MATLAB_Tools SuiteSparse_config 사용하지 않습니다.
저자 : 팀 데이비스
SuiteSparse_demo.m
Matlab의 Suitesparse 데모
SuiteSparse_install.m
Matlab 용 SuitesParse를 설치하십시오
SuiteSparse_paths.m
suitesparse matlab mextuctions의 경로를 설정하십시오
SuiteSparse_test.m
Matlab의 Suitesparse에 대한 철저한 테스트
UMFPACK
드문 LU 인수 화. AMD 와 BLAS 필요합니다.
Matlab의 내장 lu 및 x=Ab 입니다.
저자 : 팀 데이비스
알고리즘 설계 협업 : Iain Duff
라이센스, 저작권 및 저자 정보는 각 패키지를 참조하십시오. 모든 코드는 Timothy A. Davis (이메일 : [email protected]), Metis (George Karypis), GraphBLAS/cpu_features (Google), Google/LZ4, ZSTD 및 XXSHASH (현재 Facebook에서 YANN Collet) 및 NVIDIA (NVIDIA)에 의해 작성되거나 공동 저술됩니다. Graphblas/Cuda의 일부는 Nvidia의 저작권 (c)입니다. 이 라이센스 각각을 참조하십시오.
SuitesParse를 포장 해주셔서 감사합니다! 몇 가지 제안은 다음과 같습니다.
GraphBlas는 컴파일 타임에 빠른 "FactoryKernel"을 생성하기 때문에 컴파일하는 데 오랜 시간이 걸립니다. 컴파일 시간과 라이브러리 크기를 줄이려면 GRAPHBLAS_COMPACT 모드를 활성화하지만 JIT 컴파일러를 활성화하십시오. 그런 다음 GraphBlas는 JIT 컴파일러를 통해 런타임에 필요한 커널을 컴파일합니다. JIT 커널이 컴파일되면 성능은 FactoryKernel과 동일합니다. 사용자 컴파일 커널은 기본적으로 ~/.SuiteSparse 에 배치됩니다. JIT 컴파일러 libgraphblas.so 활성화하기 위해 GraphBlas의 소스를 배포 할 필요 GraphBLAS.h 없습니다.
그래프 블라스는 OpenMP가 필요합니다! 기본적으로 병렬 코드이므로 OpenMP를 활성화하여 배포하십시오. 성능은 그렇지 않으면 어려움을 겪을 것입니다.
CUDA 가속화 : Cholmod와 SPQR은 Cuda 커널의 혜택을 누릴 수 있습니다. Cuda가 없거나 배포판에 포함시키지 않으려면이 버전의 Suitesparse는 CHOLMOD_CUDA 및 SPQR_CUDA 라이브러리의 건물을 건너 뛰고 GPUQREngine 및 SuiteSparse_GPURuntime 라이브러리와 연결되지 않습니다.
Suitesparse는 각각 자체 출판 된 논문이있는 많은 패키지의 메타 패키지입니다. 전체 컬렉션을 인용하려면 URL을 사용하십시오.
또한 사용하는 패키지에 대한 특정 논문을 인용하십시오. 이것은 긴 목록입니다. 짧은 목록을 원한다면 각 패키지에 대해 ACM Toms의 최신 "알고리즘 XXX :"용지를 인용하십시오.
Matlab x = a b는 아래의 AMD, Colamd, Cholmod, Umfpack 및 SuitesParseqr (SPQR)에 대해서는 아래를 참조하십시오.
matlab에서 Graphblas 및 c = ab의 경우 (Sparse-Times-Sparse) :
다 데이비스. 알고리즘 1037 : SuitesParse : GraphBlas : Spotse Linear Algebra 언어의 병렬 그래프 알고리즘. ACM 트랜스. 수학. 소프트웨어. 49, 3, 제 28 조 (2023 년 9 월), 30 페이지. https://doi.org/10.1145/3577195
T. Davis, 알고리즘 1000 : SuitesParse : GraphBlas : Sparse Linear Algebra 언어의 그래프 알고리즘, 수학 소프트웨어의 ACM 트랜스, 2019 년 12 월 44 일, https://doi.org/10.1145/332125.
lagraph의 경우 :
G. Szárnyas et al., "Lagraph : 선형 대수, 네트워크 분석 라이브러리 및 그래프 알고리즘 연구,"2021 IEEE 국제 병렬 및 분산 처리 심포지엄 워크샵 (IPDPSW), Portland, 또는 미국, 2021, pp. 243-252. https://doi.org/10.1109/ipdpsw52791.2021.00046.
CSPARSE/CXSPARSE :
TA DAVIS, 희소 선형 시스템을위한 직접 방법, 알고리즘의 기본 사항, SIAM, Philadelphia, PA, 2006. https://doi.org/10.1137/1.9780898718881
SuitesParseqr (SPQR) : (또한 AMD, COLAMD를 인용) :
TA DAVIS, 알고리즘 915 : SuitesParseqr : 다중 틀 다중 스레드 랭크 랭킹 드문 QR 인수화, ACM Trans. 수학적 소프트웨어, 38 (1), 2011, pp. 8 : 1--8 : 22. https://doi.org/10.1145/2049662.2049670
suitesparseqr/gpu의 경우 :
Sencer Nuri Yeralan, Ta Davis, Wissam M. Sid-Lakhdar 및 Sanjay Ranka. 2017. 알고리즘 980 : GPU의 스파 스 QR 인수화. ACM 트랜스. 수학. 소프트웨어. 44, 2, 제 17 조 (2018 년 6 월), 29 페이지. https://doi.org/10.1145/3065870
Cholmod의 경우 : (또한 AMD, COLAMD를 인용) :
Y. Chen, Ta Davis, WW Hager 및 S. Rajamanickam, 알고리즘 887 : Cholmod, Supernodal Sparse Cholesky 인수화 및 업데이트/다운 데이트, ACM Trans. 수학적 소프트웨어, 35 (3), 2008, pp. 22 : 1-22 : 14. https://dl.acm.org/doi/abs/10.1145/1391989.1391995
Ta Davis와 WW Hager, Sparse Cholesky Update/Downdate 및 Triangular Solves의 Dynamic Supernodes, ACM Trans. 수학적 소프트웨어, 35 (4), 2009, pp. 27 : 1-27 : 23. https://doi.org/10.1145/1462173.1462176
Cholmod/Modify 모듈의 경우 : (또한 AMD, COLAMD를 인용) :
Ta Davis와 William W. Hager, 매트릭스 분석 및 애플리케이션에 대한 희소 cholesky 인수 화 시암 저널의 행 수정 2005 26 : 3, 621-639. https://doi.org/10.1137/s089547980343641x
TA DAVIS와 WILLIAM W. HAGER, 매트릭스 분석 및 응용 프로그램에 대한 희소 한 Cholesky 인수 화 SIAM 저널의 다중 순위 수정 2001 22 : 4, 997-1013. https://doi.org/10.1137/S089547989357346
Ta Davis와 William W. Hager, Sparse Cholesky 인수화, Siam Journal on Matrix Analysis and Applications 1999 20 : 3, 606-627. https://doi.org/10.1137/S0895479897321076
Cholmod/GPU 모듈의 경우 :
Steven C. Rennich, Darko Stosic, Timothy A. Davis, GPU에 대한 희소 한 Cholesky 인수화, Parallel Computing, Vol 59, 2016, pp 140-150. https://doi.org/10.1016/j.parco.2016.06.004
AMD 및 CAMD의 경우 :
P. Amestoy, Ta Davis 및 Is Duff, Algorithm 837 : 대략적인 최소 정도 순서 알고리즘, ACM Trans. 수학적 소프트웨어, 30 (3), 2004, pp. 381--388. https://dl.acm.org/doi/abs/10.1145/1024074.1024081
P. Amestoy, Ta Davis 및 IS Duff, 대략 최소 학위 주문 알고리즘, Siam J. Matrix Analysis and Applications, 17 (4), 1996, pp. 886--905. https://doi.org/10.1137/S0895479894278952
Colamd, symamd, ccolamd 및 csymamd의 경우 :
Ta Davis, Jr Gilbert, S. Larimore, E. NG, Algorithm 836 : Colamd, 대략적인 열 최소 정도 순서 알고리즘, ACM Trans. 수학 소프트웨어, 30 (3), 2004, pp. 377-380. https://doi.org/10.1145/1024074.1024080
TA DAVIS, JR GILBERT, S. LARIMORE, E. NG, 대략 최소 정도의 정도 순서 알고리즘, ACM Trans. 수학적 소프트웨어, 30 (3), 2004, pp. 353--376. https://doi.org/10.1145/1024074.1024079
Umfpack의 경우 : (또한 AMD 및 COLAMD를 인용) :
TA DAVIS, 알고리즘 832 : UMFPACK- 열선 주문 전략 인 ACM Trans. 수학적 소프트웨어, 30 (2), 2004, pp. 196-199. https://dl.acm.org/doi/abs/10.1145/992200.992206
TA DAVIS, 비대칭 패턴의 다공성 방법에 대한 열선 주문 전략, ACM Trans. 수학적 소프트웨어, 30 (2), 2004, pp. 165--195. https://dl.acm.org/doi/abs/10.1145/992200.992205
TA DAVIS와 IS DUFF, 비대칭 희소 행렬을위한 통합/다제 방법 인 ACM Trans. 수학적 소프트웨어, 25 (1), 1999, pp. 1-19. https://doi.org/10.1145/305658.287640
Ta Davis와 Is Duff, Sparse Lu 인수 화를위한 비대칭 패턴의 다중 원형 방법, Siam J. Matrix Analysis and Computations, 18 (1), 1997, pp. 140-158. https://doi.org/10.1137/S0895479894246905
요소 M-File의 경우 :
TA DAVIS, 알고리즘 930 : MATLAB, ACM Trans의 객체 지향 선형 시스템 솔버 인 Factize. 수학적 소프트웨어, 39 (4), 2013, pp. 28 : 1-28 : 18. https://doi.org/10.1145/2491491.2491498
KLU 및 BTF의 경우 (또한 AMD 및 COLAMD를 인용) :
Ta Davis와 Ekanathan Palamadai Natarajan. 2010. 알고리즘 907 : KLU, 회로 시뮬레이션 문제를위한 직접 스파 스 솔버. ACM 트랜스. 수학. 소프트웨어. 37, 3, 제 36 조 (2010 년 9 월), 17 페이지. https://dl.acm.org/doi/abs/10.1145/1824801.1824814
LDL의 경우 :
다 데이비스. 알고리즘 849 : 간결한 희소 한 cholesky 인수화 패키지. ACM 트랜스. 수학. 소프트웨어. 31, 4 (2005 년 12 월), 587–591. https://doi.org/10.1145/1114268.1114277
ssget 및 suitesparse matrix 컬렉션의 경우 :
Ta Davis와 Yifan Hu. 2011. 플로리다 대학교 드문 매트릭스 컬렉션. ACM 트랜스. 수학. 소프트웨어. 38, 1, 제 1 조 (2011 년 11 월), 25 페이지. https://doi.org/10.1145/2049662.2049663
Kolodziej et al., (2019). Suitesparse Matrix Collection 웹 사이트 인터페이스. 오픈 소스 소프트웨어 저널, 4 (35), 1244. https://doi.org/10.21105/joss.01244
spqr_rank 의 경우 :
Leslie V. Foster와 Ta Davis. 2013. 알고리즘 933 : SuitesParseqr을 사용한 수치 순위, 널 우주베이스, 유사 단체 솔루션 및 기본 솔루션의 신뢰할 수있는 계산. ACM 트랜스. 수학. 소프트웨어. 40, 1, 제 7 조 (2013 년 9 월), 23 페이지. https://doi.org/10.1145/2513109.2513116
몽구스의 경우 :
Ta Davis, William W. Hager, Scott P. Kolodziej 및 S. Nuri Yeralan. 2020. 알고리즘 1003 : 몽구스, 그래프 대박 및 분할 라이브러리. ACM 트랜스. 수학. 소프트웨어. 46, 1, 제 7 조 (2020 년 3 월), 18 페이지. https://doi.org/10.1145/3337792
SPEX 용 :
Christopher Lourenco, Jinhao Chen, Erick Moreno-Centeno 및 Ta Davis. 2022. 알고리즘 1021 : SPEX는 LU를 좌회전하여 희소 한 왼쪽처럼 보이는 정수 보존 LU 인수 화를 통해 희소 선형 시스템을 정확하게 해결합니다. ACM 트랜스. 수학. 소프트웨어. 2022 년 6 월. https://doi.org/10.1145/3519024
참고 : OpenBlas를 사용하는 경우 버전 0.3.27 이상을 사용해야합니다.
BLAS/LAPACK을 선택하려면 SuiteSparse_config/cmake_modules 에서 suitesparseblas.cmake의 지침을 참조하십시오. SuiteSparse_config 에 64 비트 정수 (예 : Intel Mkl ILP64 BLA)가있는 BLA를 찾으면 int64_t 로 정의 된 SUITESPARSE_BLAS_INT 로 SuiteSparse_config.h 구성합니다. 그렇지 않으면 32 비트 BLA가 발견되면이 유형은 int32_t 로 정의됩니다. 나중에 Umfpack, Cholmod 또는 SPQR이 다른 정수 크기를 가진 BLA와 연결되어 -DBLAS64 로 정의를 무시해야합니다 (BLAS에서 64 비트 정수의 사용을 주장하기 위해) 또는 -DBLAS32 (BLAS에서 32 -bit 정수의 사용을 가정하기 위해).
BLAS 정수의 크기는 sizeof(void *) 와 관련이 없습니다.
이진 형태 (예 : Debian, Ubuntu, Spack 또는 Brew Package)로 배포되면 SuitesParse는 아마도 가장 일반적인 경우 32 비트 BLA를 기대하도록 컴파일해야합니다. 기본값은 32 비트 BLA를 사용하는 것이지만 CMAKE 변수 SUITESPARSE_USE_64BIT_BLAS ON 으로 설정하여 변경할 수 있습니다.
기본적으로 Suitesparse는 적절한 BLAS 라이브러리를 찾습니다. 특정 BLAS 라이브러리를 시행하려면 다음 중 하나를 사용하십시오.
CMAKE_OPTIONS="-DBLA_VENDOR=OpenBLAS" make
cd Package ; cmake -DBLA_VENDOR=OpenBLAS .. make
기본값을 사용하려면 (BLAS를 찾기) BLA_VENDOR 설정하지 않거나 빈 문자열로 설정하지 마십시오. 이 경우 SUITESPARSE_USE_64BIT_BLAS 가 켜져 있으면 64 비트 BLA를 선호하지만 64 비트 라이브러리가없는 경우 32 비트 BLAS 라이브러리가 사용됩니다. 그러나 SUITESPARSE_USE_64BIT_BLAS 와 SUITESPARSE_USE_STRICT 모두 켜져 있으면 64 비트 BLA 만 고려됩니다.
특정 BLAS 라이브러리를 선택할 때 SUITESPARSE_USE_64BIT_BLAS 설정이 엄격하게 따릅니다. True로 설정되면 64 비트 BLAS 라이브러리 만 사용됩니다. False (기본값) 인 경우 32 비트 BLAS 라이브러리 만 사용됩니다. 그러한 BLA가 발견되지 않으면 빌드가 실패합니다.
이 디렉토리에 다음을 입력하십시오 ( sudo make install 하려면 시스템 특권이 필요합니다) : :
mkdir -p build && cd build
cmake ..
cmake --build .
sudo cmake --install .
모든 라이브러리는 기본 시스템 전체 폴더 (/usr/local/lib)에 생성되어 설치됩니다. 모두 SuitesParse를 사용하는 응용 프로그램에서 필요한 파일이/usr/local/include/suitesparse (linux)에 설치됩니다.
라이브러리의 하위 집합 만 빌드하려면 CMAKE로 구성 할 때 SUITESPARSE_ENABLE_PROJECTS 설정하십시오. 예를 들어, Cholmod 및 CXSPARSE (종속성 포함)를 구축하고 설치하려면 다음 명령을 사용하십시오.
mkdir -p build && cd build
cmake -DSUITESPARSE_ENABLE_PROJECTS="cholmod;cxsparse" ..
cmake --build .
sudo cmake --install .
Windows (MSVC)의 경우 CMakeLists.txt 파일을 MS Visual Studio로 가져옵니다. 빌드 유형을 릴리스로 지정하십시오. 예를 들어, 명령 창의 Windows에 SuitesParse를 만들려면 다음을 실행하십시오.
mkdir -p build && cd build
cmake ..
cmake --build . --config Release
cmake --install .
먼저 필요한 모든 필요한 라이브러리 (Umfpack, Cholmod 및 SPQR 용 BLAS 및 LAPACK, SPEX 용 GMP 및 MPFR을 설치하십시오. 최신 라이브러리를 사용하십시오. SPEX에는 MPFR 4.0.2 및 GMP 6.1.2가 필요합니다 (이 버전 번호는 libgmp.so.xyz 및 libmpfr.so.xyz의 XYZ 접미사에 해당하지 않습니다. 자세한 내용은 SPEX 사용자 안내서를 참조하십시오).
라이브러리를 컴파일하고 SuitesParse/Lib (/usr/local/lib 아님)에만 설치하려면 SuitesParse의 최상위 수준에서이를 수행하십시오.
mkdir -p build && cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ..
cmake --build .
cmake --install .
라이브러리 검색 경로 (Linux의 LD_LIBRARY_PATH )에/home/me/suitesparse/lib를 추가하는 경우 다음을 수행 할 수 있습니다 (예 : 예를 들어).
S = /home/me/SuiteSparse
cc myprogram.c -I$(S)/include/suitesparse -lumfpack -lamd -lcholmod -lsuitesparseconfig -lm
C 및 C ++ 컴파일러를 변경하고 병렬로 컴파일하려면 다음과 같습니다.
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER==g++ ..
예를 들어 컴파일러를 GCC 및 G ++로 변경합니다.
이것은 Linux/Unix 및 Mac에서 작동합니다. 인텔 컴파일러가 있는지 여부와 CUDA가 있는지 여부를 자동으로 감지해야합니다.
SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake 참조하여 BLA를 선택하십시오.
당신은 또한 당신의 길에 suitesparse/lib를 추가해야 할 수도 있습니다. SuitesParse 사본이/home/me/suitesparse에있는 경우 ~/.bashrc 파일에 추가하십시오.
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export LD_LIBRARY_PATH
Mac의 경우 대신 사용하십시오.
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export DYLD_LIBRARY_PATH
파일의 기본 설치 위치는 아래에 있으며, 여기서 패키지는 SuitesParse의 패키지 중 하나입니다.
* `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
/home/me/SuiteSparse 폴더에 suitesparse를 배치한다고 가정 해 봅시다.
SuiteSparse/lib 폴더를 런타임 라이브러리 경로에 추가하십시오. Linux에서는 /home/me/SuiteSparse suitesparse 사본의 위치라고 가정하면 ~/.bashrc 스크립트에 이것을 추가하십시오.
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/SuiteSparse/lib
export LD_LIBRARY_PATH
Mac의 경우 대신 ~/.zshrc 스크립트에서 SuitesParse /Users/me/SuiteSparse 배치했다고 가정하여 다음을 사용하십시오.
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Users/me/SuiteSparse/lib
export DYLD_LIBRARY_PATH
Suitesparse를 모두 make local 로 컴파일하십시오.
다음으로 GraphBlas Matlab 라이브러리를 컴파일하십시오. Suitesparse 폴더에있는 동안 시스템 쉘에서 make install 사용하여 시스템 전체에 IT를 설치하려는 경우 make gbmatlab 입력하거나 자신의 SuiteSparse/Lib에서 라이브러리를 사용하려는 경우 make gblocal .
그런 다음 Matlab 명령 창에서 CD를 SuitesParse 디렉토리로하여 SuiteSparse_install 입력하십시오. 모든 패키지가 컴파일되고 여러 데모가 실행됩니다. 철저한 테스트를 실행하려면 SuiteSparse_test 수행하십시오.
Matlab PathTool 또는 SavePath 명령으로 향후 세션을 위해 Matlab 경로를 저장하십시오. 시스템 전체의 권한이 없기 때문에 해당 메소드가 실패하면 일반적으로 문서/matlab/startup.m에서 새 경로를 startup.m 파일에 추가하십시오. SuiteSparse_paths M-File을 사용하여 각 MATLAB 세션 시작시 모든 경로를 설정할 수도 있습니다.
명령으로 CMAKE에 대한 특정 옵션을 설정할 수 있습니다 (예 : 예 :
cmake -DCHOLMOD_PARTITION=OFF -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug ..
이 명령은 cholmod/파티션 모듈을 제외한 모든 suitesparse를 컴파일합니다 ( -DCHOLMOD_PARTITION=OFF 때문에). 디버그 모드가 사용됩니다 (빌드 유형). 정적 라이브러리는 구축되지 않습니다 ( -DBUILD_STATIC_LIBS=OFF 가 설정 됨).
SUITESPARSE_ENABLE_PROJECTS :
세미콜론 분리 된 프로젝트 목록 또는 all . 기본값 : all 경우 다음 프로젝트가 구축됩니다.
suitesparse_config;mongoose;amd;btf;camd;ccolamd;colamd;cholmod;cxsparse;ldl;klu;umfpack;paru;rbio;spqr;spex;graphblas;lagraph
또한 CSPARSE를 구축하기 위해 csparse 해당 목록에 포함시킬 수 있습니다.
CMAKE_BUILD_TYPE :
기본값 : Release , Debug 을 사용하십시오.
SUITESPARSE_USE_STRICT :
SuitesParse에는 특정 패키지에 대해 SUITESPARSE_USE_* 또는 (package)_USE_* 양식의 사용자 정의 가능한 많은 설정이 있습니다. 일반적으로 이러한 설정은 엄격하지 않습니다. 예를 들어, SUITESPARSE_USE_OPENMP 가 ON 있으면 OpenMP가 선호되지만 suitesParse는 OpenMP없이 사용할 수 있으므로 OpenMP를 찾을 수없는 경우 오류가 발생하지 않습니다. 그러나 SUITESPARSE_USE_STRICT 가 ON 있으면 모든 *_USE_* 설정이 엄격하게 처리되고 ON 경우 오류가 발생하지만 해당 패키지 또는 설정을 사용할 수 없습니다. *_USE_SYSTEM_* 설정은 항상 엄격한 것으로 취급됩니다. 기본값 : OFF .
SUITESPARSE_USE_CUDA :
ON 으로 설정되면 CUDA는 모든 SuitesParse에 대해 활성화됩니다. 기본값 : ON ,
MSVC가있는 Windows의 CUDA는이 릴리스와 함께 작동하는 것으로 보이지만 프로토 타입으로 간주되어야하며 완전히 작동하지 않을 수 있습니다. Windows에서 CUDA를 테스트하기위한 리소스가 제한되어 있습니다. 문제가 발생하면 CUDA를 비활성화하고 GitHub에 문제로 게시하십시오.
CHOLMOD_USE_CUDA :
기본값 : ON . SUITESPARSE_USE_CUDA 와 CHOLMOD_USE_CUDA 는 cholmod에서 cuda를 사용하도록 활성화되어야합니다.
SPQR_USE_CUDA :
기본값 : ON . SUITESPARSE_USE_CUDA 와 SPQR_USE_CUDA 는 spqr에서 cuda를 사용하도록 활성화되어야합니다.
CMAKE_INSTALL_PREFIX :
설치 위치를 정의합니다 (Linux의 기본값은 /usr/local ). 예를 들어,이 명령은 최상위 레벨 SuiteSparse 폴더의 폴더 build 에있는 동안 설치 디렉토리를 후속 Sudo Cmake (Install)에서 사용하는 /stuff 로 설정합니다 sudo cmake --install . :
cmake -DCMAKE_INSTALL_PREFIX=/stuff ..
sudo cmake --install .
SUITESPARSE_PKGFILEDIR :
CMAKE CONFIG 및 PKG-CONFIG 파일이 설치되는 디렉토리. 기본적으로 CMAKE 구성 파일은 (정적) 라이브러리가 설치 될 디렉토리의 하위 폴더 cmake 에 설치됩니다 (예 : lib ). pkg-config 용 .pc 파일은 (정적) 라이브러리가 설치 될 디렉토리의 하위 폴더 pkgconfig 에 설치됩니다.
이 옵션을 사용하면 (정적) 라이브러리와 다른 위치에 설치할 수 있습니다. 이를 통해 SuitesParse 라이브러리의 여러 구성을 동시에 설치할 수 있습니다 (예 : 각각 다른 CMAKE_RELEASE_POSTFIX 및 CMAKE_INSTALL_LIBDIR 도 설정하여). 다운 스트림 프로젝트에서 해당 구성을 선택하려면 각 CMAKE 구성 파일 또는 PKG-Config 파일을 포함하는 경로로 CMAKE_PREFIX_PATH (CMAKE) 또는 PKG_CONFIG_PATH (PKG-Config를 사용하는 빌드 시스템)를 설정하십시오.
SUITESPARSE_INCLUDEDIR_POSTFIX :
SuiteSparse에서 헤더의 설치 대상을위한 Postfix. 기본값 : suitesparse이므로 기본값은 디렉토리를 포함 CMAKE_INSTALL_PREFIX/include/suitesparse
BUILD_SHARED_LIBS :
ON 있다면 공유 라이브러리가 구축됩니다. 기본값 : ON .
BUILD_STATIC_LIBS :
ON 있다면 정적 라이브러리가 구축됩니다. Default : ON , 그래프 블라스를 제외하고 켜짐, compile을 컴파일하는 데 시간이 오래 걸리면 BUILD_SHARED_LIBS OFF 않는 한 그래프 블라스의 기본값이 OFF 있습니다.
SUITESPARSE_CUDA_ARCHITECTURES :
CUDA 커널을 nvcc 로 컴파일 할 때 사용할 Cuda 아키텍처를 나열하는 "all" 또는 "35;50;75;80" 과 같은 문자열. "all" 옵션에는 CMake 3.23 이상이 필요합니다. 기본값 : "52;75;80" .
BLA_VENDOR :
문자열. Unset을 남겨 두거나 "ANY" 를 사용하여 BLAS 라이브러리 (기본값)를 선택하십시오. 또는 findblas.cmake에 의해 정의 된 BLA_VENDOR 의 이름으로 설정하십시오. https://cmake.org/cmake/help/latest/module/findblas.html#blas-lapack-vendors를 참조하십시오
SUITESPARSE_USE_64BIT_BLAS :
ON 있다면 64 비트 블라스를 찾으십시오. OFF 있다면 : 32 비트 전용. 기본값 : OFF .
SUITESPARSE_USE_PYTHON :
ON 있다면 SuiteSparse의 모든 패키지에 대한 Python 인터페이스 (현재 SPEX 만)를 만듭니다. OFF : 파이썬 인터페이스를 만들지 마십시오. 기본값 : ON .
SUITESPARSE_USE_OPENMP :
ON 인 경우 OpenMP는 사용 가능한 경우 기본적으로 사용됩니다. 기본값 : ON .
OpenMP를 사용하지 않으면 GraphBlas, lagraph 및 Paru가 크게 느려집니다. Cholmod는 OpenMP없이 다소 느려집니다 (여전히 평행 한 BLAS/LAPACK이있는 한). 3 개의 패키지 (Umfpack, Cholmod 및 SPQR)는 병렬 BLAS/LAPACK 라이브러리에 크게 의존하며 해당 라이브러리는 내부적으로 OpenMP를 사용할 수 있습니다. 전체 애플리케이션에서 OpenMP를 비활성화하려면 단일 스레드 BLAS/LAPACK 또는 OpenMP (Apple Accelerate 프레임 워크)를 사용하지 않는 병렬 BLAS/LAPACK을 선택하십시오. 단일 스레드 BLAS/LAPACK 라이브러리를 사용하면 Umfpack, Cholmod 및 SPQR이 크게 느려집니다.
경고 : OpenMP 또는 PTHREADS없이 빌드 된 경우 그래프 블라스가 스레드 안전 할 수 없습니다 (자세한 내용은 GraphBlas 사용자 안내서 참조).
SUITESPARSE_CONFIG_USE_OPENMP :
ON 있다면 SuiteSparse_config 사용 가능한 경우 OpenMP를 사용합니다. 기본값 : SUITESPARSE_USE_OPENMP . 필수는 아니며 SuiteSparse_time omp_get_wtime 하도록하는 데 사용됩니다.
CHOLMOD_USE_OPENMP :
ON 면 OpenMP는 사용할 수있는 경우 Cholmod에서 사용됩니다. 기본값 : SUITESPARSE_USE_OPENMP .
GRAPHBLAS_USE_OPENMP :
ON 인 경우 OpenMP는 사용 가능한 경우 GraphBlas에서 사용됩니다. 기본값 : SUITESPARSE_USE_OPENMP .
LAGRAPH_USE_OPENMP :
ON 면 OpenMP는 사용 가능한 경우 lagraph에서 사용됩니다. 기본값 : SUITESPARSE_USE_OPENMP .
PARU_USE_OPENMP :
ON 면 OpenMP가 Paru에서 사용 가능한 경우 사용됩니다. 기본값 : SUITESPARSE_USE_OPENMP .
SPEX_USE_OPENMP :
ON 인 경우 OpenMP는 사용 가능한 경우 SPEX에서 사용됩니다. 기본값 : SUITESPARSE_USE_OPENMP .
SUITESPARSE_DEMOS :
ON 있다면 각 패키지에 대한 데모 프로그램을 구축하십시오. 기본값 : OFF .
SUITESPARSE_USE_SYSTEM_BTF :
ON 경우 빌드 시스템에 설치된 BTF 라이브러리를 사용하십시오. OFF 있다면 필요한 경우 BTF를 종속성으로 자동 구축하십시오. 기본값 : OFF .
SUITESPARSE_USE_SYSTEM_CHOLMOD :
ON 있다면 빌드 시스템에 설치된 cholmod 라이브러리를 사용하십시오. OFF 있다면 필요한 경우 자동으로 Cholmod를 종속성으로 빌드하십시오. 기본값 : OFF .
SUITESPARSE_USE_SYSTEM_AMD :
ON 경우 빌드 시스템에 설치된 AMD 라이브러리를 사용하십시오. OFF 있으면 필요한 경우 AMD를 종속성으로 자동 구축하십시오. 기본값 : OFF .
SUITESPARSE_USE_SYSTEM_COLAMD :
ON 경우 빌드 시스템에 설치된 Colamd 라이브러리를 사용하십시오. OFF 있다면 필요한 경우 COLAMD를 종속성으로 자동 구축하십시오. 기본값 : OFF .
SUITESPARSE_USE_SYSTEM_CAMD :
ON 경우 빌드 시스템에 설치된 CAMD 라이브러리를 사용하십시오. OFF 있다면 필요한 경우 Camd를 종속성으로 자동 구축하십시오. 기본값 : OFF .
SUITESPARSE_USE_SYSTEM_CCOLAMD :
ON 경우 빌드 시스템에 설치된 CCOLAMD 라이브러리를 사용하십시오. OFF 있으면 필요한 경우 CCOLAMD를 종속성으로 자동 빌드하십시오. 기본값 : OFF .
SUITESPARSE_USE_SYSTEM_GRAPHBLAS :
ON 있다면 빌드 시스템에 설치된 그래프 블라스 라이브러리를 사용하십시오. OFF 있으면 필요한 경우 그래프 블라스를 종속성으로 자동으로 빌드하십시오. 기본값 : OFF .
SUITESPARSE_USE_SYSTEM_SUITESPARSE_CONFIG :
ON 경우 빌드 시스템에 설치된 SuiteSparse_config 라이브러리를 사용하십시오. OFF 있다면 필요한 경우 SuiteSparse_config 종속성으로 자동으로 빌드하십시오. 기본값 : OFF .
SUITESPARSE_USE_FORTRAN
ON 있다면 Fortran 컴파일러를 사용하여 C가 Fortan을 호출하는 방법을 결정하고 여러 옵션 Fortran 루틴을 구축하십시오. OFF 있으면 SUITESPARSE_C_TO_FORTRAN 사용하여 C가 Fortran을 호출하는 방법을 정의하십시오. 기본값 : ON .
SUITESPARSE_C_TO_FORTRAN
C가 Fortran을 호출하는 방법을 정의하는 문자열 (즉, BLAS 라이브러리에서 내보낸 기능). 이 설정은 작동하지 않으면 Fortran 컴파일러를 감지하거나 SUITESPARSE_USE_FORTRAN OFF 있는 경우 사용됩니다. 이 문자열은 인수 목록과 사전 처리기 매크로의 본문으로 읽습니다. 그 매크로에 대한 첫 번째 주장은 소문자의 Fortran 함수 이름입니다. 두 번째 인수는 대문자의 동일한 함수 이름입니다. 본문은 어떤 함수 이름 Fortran 함수가 호출되는지 정의합니다. 이는 Fortran이 사례에 민감하지 않으며 다른 Fortran 컴파일러가 다른 이름 Mangling Conventions를 사용하기 때문에 필요합니다. MSVC C/C ++ 컴파일러가 사용되는 경우이 기본값은 "(name,NAME) name" (예 : 후행 밑줄이없는 소문자)로 표시됩니다. 이것이 Windows의 Intel Fortran 컴파일러의 Mangling Convention이라는 이름입니다. 다른 C/C ++ 컴파일러가 사용되면 기본값은 "(name,NAME) name##_" (즉, 후행 밑줄이있는 소문자)로 표시됩니다. 이것이 바로 일반적으로 사용되는 Fortran 컴파일러 (Windows, gfortran , flang , ...) 이외의 플랫폼의 ifx 와 같은 Mangling Convention이라는 이름입니다. 후자의 이름 Mangling Convention은 OpenBlas (플랫폼의 독립 또는 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.