10 октября 2024 года, версия Suitesparse 7.8.3
SweeSparse-это набор пакетов, связанных с редкой матрицей, написанных или соавтором Тим Дэвис, доступных по адресу https://github.com/drimothyaldendavis/suitesparse.
Основной автор SuitesParse (коды и алгоритмы, исключение Metis): Тим Дэвис
Соавторы кода, в алфавитном порядке (не включая Метис или Лаграф): Патрик Айстой, Мохсен Азнавех, Дэвид Бейтман, Джинхао Чен, Янцин Чен, Иэн Дафф, Джо Итон, Лес Фостер, Уильям Хагер, Рэй Киммер, Скотт Колодзи, Хрэз Лаурен. Домендзейн, Эрик Морено-Ценвено, Маркус Мюцель, Кори Нолел, Эканатан Паламадай, Шивасанкаран Раджаманикем, Санджай Ранка, Виссам Сид-Лахдар и Нури Йралалан.
Lagraph был разработан самым большим количеством разработчиков всех пакетов в Suitesparse и заслуживает своего собственного списка. Список также отображается в 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
Метис авторируется Джорджем Кариписом.
Дополнительные дизайнеры алгоритма: Эсмонд Нг и Джон Гилберт.
Обратитесь к каждому пакету для получения лицензии, авторского права и информации автора.
Обратитесь к каждому пакету для документации на каждом пакете, обычно в подпапке DOC.
Пакеты в Suitesparse и файлы в этом каталоге:
AMD
Примерный минимальный заказ. Это встроенная функция AMD в Matlab.
Авторы: Тим Дэвис, Патрик Айстой, Иэн Дафф
bin
где программы размещаются при составлении, для make local
BTF
перестановка для блокировки треугольной формы
Авторы: Тим Дэвис, Эканатан Паламадаи
build
Папка для дерева сборки по умолчанию
CAMD
Ограниченный примерный заказ минимальной степени
Авторы: Тим Дэвис, Патрик Аместой, Иэн Дафф, Яньцин Чен
CCOLAMD
Ограниченный столбец приблизительный заказ минимальной степени
Авторы: Тим Дэвис, Шивасанкаран Раджаманикам, Стефан Ларимор.
Сотрудники по дизайну алгоритма: Эсмонд Нг, Джон Гилберт (для Коламда)
ChangeLog
Краткое изложение изменений в Fultesparse. См. */Doc/ChangeLog для получения подробной информации для каждого пакета.
CHOLMOD
Разреженная Чусская факторизация. Требуется AMD, Colamd, CCOLAMD, BLAS и LAPACK. По желанию использует Metis. Это chol и x=Ab в Matlab.
Автор всех модулей: Тим Дэвис
Чолмод/Модифицировать Авторы модулей: Тим Дэвис и Уильям В. Хагер
Cholmod/supeesparse_metis: модифицированная версия Метиса, встроенная в библиотеку Чолмода. Для получения подробной информации см. Файлы readme.txt. Автор: Джордж Карипис. Это слегка модифицированная копия, включенная в SuitesParse, через лицензию с открытым исходным кодом, предоставленную Джорджем Кариписом. SuitesParse не может использовать немодифицированную копию Metis.
CITATION.bib
Цитаты для пакетов Suitesparse, в формате Bibtex.
CMakeLists.txt
Необязательно, чтобы составить все Suitesparse. См. ниже.
CODE_OF_CONDUCT.md
Руководящие принципы сообщества
COLAMD
Столбец приблизительный минимальный заказ. Это встроенная функция Colamd в Matlab.
Авторы (кода): Тим Дэвис и Стефан Ларимор
Сотрудники по дизайну алгоритма: Эсмонд Н.Г., Джон Гилберт
Contents.m
Список содержимого для «Помощь в Suitesparse» в Matlab.
CONTRIBUTING.md
Как внести свой вклад в Suitesparse
CONTRIBUTOR-LICENSE.txt
Требуемое соглашение о участнике
CSparse
Краткий пакет Sparse Matrix, разработанный для моей книги «Прямые методы для разреженных линейных систем», опубликованный SIAM. Предназначен в основном для обучения. Обратите внимание, что код (c) Тим Дэвис, как указано в книге.
Для производства используйте CXSPARSE вместо этого. В частности, как CSParse, так и CxSparse имеют одинаковое включение имени файла: cs.h Этот пакет используется для встроенного DMPERM в MATLAB.
Автор: Тим Дэвис
CXSparse
CSParse расширился. Включает поддержку сложных матриц и как Int, так и длинных целых чисел. Используйте это вместо CSParse для использования производства; Это создает libcsparse.so (или dylib на Mac) с тем же названием, что и CSParse. Это суперсет CSParse. Любой код, который ссылается на CSPARSE, также должен быть в состоянии связаться с CXSPARSE.
Автор: Тим Дэвис, Дэвид Бейтман
Example
Простой пакет, который опирается почти на все Suitesparse
.github
Рабочие процессы для тестирования CI на GitHub.
GraphBLAS
Алгоритмы графика на языке линейной алгебры.
https://graphblas.org
Авторы: Тим Дэвис, Джо Итон, Кори Ноле
include
make install Place-Visible, включите файлы для каждого пакета здесь, после того, как make local .
KLU
Разреженная факторизация LU, в первую очередь для моделирования схемы. Требуется AMD, Colamd и BTF. При желании используется Cholmod, CAMD, CCOLAMD и Metis.
Авторы: Тим Дэвис, Эканатан Паламадаи
LAGraph
Библиотека алгоритмов графика, основанная на графах. См. Также https://github.com/graphblas/lagraph
Авторы: многие.
LDL
Очень краткий пакет факторизации ЛПНП
Автор: Тим Дэвис
lib
make install мест общими библиотеками для каждого пакета здесь, после того, как make local .
LICENSE.txt
Собранные лицензии для каждого пакета.
Makefile
Необязательно, чтобы компилировать все SuitesParse, используя make , которая используется в качестве простой обертки для cmake в каждом подпроекте.
make
Скомпилируют библиотеки Suitesparse. Последующая make install будет установлена в CMAKE_INSTALL_PATH (может по умолчанию /usr/local/lib на Linux или Mac).
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 , сделать, make local или make global .
make uninstall
Недосаты make install .
make distclean
Удаляет все файлы, не в распределении, в том числе ./bin , ./share , ./lib , и ./include .
make purge
То же, что и make distclean .
make clean
Удаляет все файлы не в распределении, но сохраняет составленные библиотеки и демонстрации, ./lib , ./share и ./include .
Каждый отдельный субпроект также имеет каждый из вышеперечисленных make .
Вещи, которые вам не нужно делать:
make docs
Создает пользовательские руководства из файлов Latex
make cov
Запуск тестов покрытия операторов (только Linux)
MATLAB_Tools
Различные M-материалы для использования в Matlab
Автор: Тим Дэвис (все части)
для spqr_rank : автор Les Foster и Tim Davis
Contents.m
Список содержимого
dimacs10
загружает матрицы для коллекции Dimacs10
Factorize
объектно-ориентированный x=Ab для matlab
find_components
Находит подключенные компоненты на изображении
GEE
Простая гауссовая ликвидация
getversion.m
Определите версию Matlab
gipper.m
Создать архив Matlab
hprintf.m
распечатать гиперссылки в командном окне
LINFACTOR
предшественник для Factorize пакета
MESHND
вложенное распоряжение на рассечении обычных сетей
pagerankdemo.m
иллюстрирует, как работает PageRank
SFMULT
C=S*F где S скудна, а F заполнен
shellgui
Покажите ракушку
sparseinv
Рубное обратное подмножество
spok
Проверьте, действительна ли редкая матрица
spqr_rank
Пакет SPQR_RANK. MATLAB Toolbox для дефицита ранга.
SSMULT
C=A*B , где A и B оба редки. Это было основой для встроенного C=A*B в Matlab, пока он не был заменен графами в Matlab R2021A.
SuiteSparseCollection
Для коллекции Matrix SuitesParse
waitmex
Waitbar для использования внутри мексированной функции
Mongoose
график распределения.
Авторы: Нури Ералалан, Скотт Колодзи, Уильям Хагер, Тим Дэвис
ParU
Параллельный несимметричный паттерн мультифронтальный метод.
В настоящее время предварительный релиз.
Авторы: Мохсен Азнаве и Тим Дэвис
RBio
Читать/написать редкие матрицы в формате Резерфорда/Боинг
Автор: Тим Дэвис
README.md
этот файл
SPEX
Решает разреженные линейные системы в точной арифметике.
Требуется библиотеки GNU GMP и MPRF.
Вскоре это будет заменено более общим пакетом, SPEX V3, который включает этот метод (точный редкий LU) и другие (Sparse Toper Cholesky и Sparsy точное обновление/Downtate). API V3 значительно изменится.
Авторы: Крис Лоренко, Джинхао Чен, Эрик Морено-Ценвено, Лорена Лорена Мехия Домендзейн и Тим Дэвис.
Смотрите https://github.com/clouren/spex для последней версии.
SPQR
Разреженная QR -факторизация. Это встроенный qr и x=Ab в Matlab. Также называется SuiteSparseqr.
Включает две библиотеки GPU: SPQR/GPUQREngine и SPQR/SuiteSparse_GPURuntime .
Автор кода процессора: Тим Дэвис
Автор модулей GPU: Тим Дэвис, Нури Ералалан, Виссам Сид-Лахдар, Санджай Ранка
ssget
Интерфейс Matlab для коллекции матрицы Suitesparse
Автор: Тим Дэвис
SuiteSparse_config
Библиотека с общими функциями и конфигурацией для всех вышеперечисленных пакетов. CSparse , GraphBLAS , LAGraph и MATLAB_Tools не используют SuiteSparse_config .
Автор: Тим Дэвис
SuiteSparse_demo.m
Демо -версию SuitesParse для Matlab
SuiteSparse_install.m
Установите SuiteSparse для Matlab
SuiteSparse_paths.m
Установите пути для SuitesParse Matlab Mexfunctions
SuiteSparse_test.m
исчерпывающий тест для SuitesParse в Matlab
UMFPACK
Разреженная факторизация Лу. Требуется AMD и BLAS .
Это встроенный lu и x=Ab в Matlab.
Автор: Тим Дэвис
Алгоритм Дизайн Сотрудники: Иэн Дафф
Обратитесь к каждому пакету для получения лицензии, авторского права и информации автора. Все коды авторируются или соавтоспособны Тимоти А. Дэвисом (электронная почта: [email protected]), за исключением Метиса (Джордж Карипис), GraphBLAS/cpu_features (Google), Graphblas/LZ4, ZSTD и XXHASH (от Yann Collet, теперь в Facebook) и Graphblas/cuda/jitify.hpp. Части графиков/CUDA являются авторскими правами (C) NVIDIA. Пожалуйста, обратитесь к каждой из этих лицензий.
Спасибо за упаковку Suitesparse! Вот несколько предложений:
Graphblas занимает много времени для компиляции, потому что он создает много быстрых «заводских работ» во время компиляции. Если вы хотите сократить время компиляции и размер библиотеки, включите режим GRAPHBLAS_COMPACT , но оставьте компилятор JIT. Затем Graphblas будет компилировать ядра, в которых она нуждается во время выполнения, через свой компилятор JIT. Производительность будет такой же, как и FactoryKernels после составления ядра JIT. Пользовательские компилированные ядра размещены в ~/.SuiteSparse , по умолчанию. Вам не нужно распространять источник для Graphblas, чтобы включить компилятор JIT: Just libgraphblas.so и GraphBLAS.h достаточно.
Графблас нуждается в OpenMP! Это в основном параллельный код, поэтому, пожалуйста, распространите его с помощью OpenMP. Производительность пострадает иначе.
Ускорение CUDA: Cholmod и SPQR могут извлечь выгоду из своих ядер CUDA. Если у вас нет CUDA или вы не хотите включать его в свой дистрибут, эта версия библиотек SufeSparse пропускает здание CHOLMOD_CUDA и SPQR_CUDA и не связывается с библиотеками GPUQREngine и SuiteSparse_GPURuntime .
SuitesParse-это мета-пакет многих пакетов, каждый из которых со своими опубликованными статьями. Чтобы привести всю коллекцию, используйте URL:
Пожалуйста, также укажите конкретные документы для использования, которые вы используете. Это длинный список; Если вам нужен более короткий список, просто цитируйте самый последний «Алгоритм XXX:» для каждого пакета.
Для Matlab x = A b см. Ниже для AMD, Colamd, Cholmod, UMFPACK и SuiteSParseQR (SPQR).
Для графиков и c = ab в Matlab (Sparse-times-sparse):
Та Дэвис. Алгоритм 1037: Suitesparse: Graphblas: Алгоритмы параллельного графика на языке редкой линейной алгебры. ACM Trans. Математика Мягкий 49, 3, статья 28 (сентябрь 2023 г.), 30 страниц. https://doi.org/10.1145/3577195
Т. Дэвис, Алгоритм 1000: SuitesParse: Graphblas: Алгоритмы графика на языке разреженной линейной алгебры, ACM Trans on Matematic Software, Vol 45, № 4, декабрь 2019, статья № 44. Https://doi.org/10.1145/3322125.
Для Лаграфа:
G. Szárnyas et al., «Лаграф: линейная алгебра, библиотеки сетевого анализа и изучение алгоритмов графиков», 2021 IEEE International Parallel и Distributed Processing Symposium Workshops (IPDPSW), Портленд, Орегон, США, 2021, с. 243-252. https://doi.org/10.1109/ipdpsw52791.2021.00046.
Для CSParse/Cxsparse:
Та Дэвис, Прямые методы для разреженных линейных систем, серия SIAM по основам алгоритмов, SIAM, Philadelphia, PA, 2006. https://doi.org/10.1137/1.978089878881
Для SuiteSparseqr (SPQR): (также цитируйте AMD, Colamd):
TA DAVIS, Алгоритм 915: SuitesParseQR: многофронтальная многопоточная рецензирующая QR-факторизация, ACM Trans. по математическому программному обеспечению, 38 (1), 2011, с. 8: 1--8: 22. https://doi.org/10.1145/2049662.2049670
Для SuitesParseQR/GPU:
Сенсер Нури Йералан, Та Дэвис, Виссам М. Сид-Лахдар и Санджай Ранка. 2017. Алгоритм 980: разреженная QR -факторизация на графическом процессоре. ACM Trans. Математика Мягкий 44, 2, статья 17 (июнь 2018 г.), 29 страниц. https://doi.org/10.1145/3065870
Для Cholmod: (также цитируйте AMD, Colamd):
Y. Chen, Ta Davis, WW Hager и S. Rajamanickam, Algorithm 887: Cholmod, супернодальная редкая факторизация и обновление/обновление/обновление, ACM Trans. по математическому программному обеспечению, 35 (3), 2008, с. 22: 1--22: 14. https://dl.acm.org/doi/abs/10.1145/1391989.1391995
Ta Davis и WW Hager, Dynamic Supernodes в Sparse Cholesky Update/Downtate и Triangular Reolves, ACM Trans. по математическому программному обеспечению, 35 (4), 2009, с. 27: 1--27: 23. https://doi.org/10.1145/1462173.1462176
Для модуля Cholmod/Modify: (также цитируйте AMD, Colamd):
Та Дэвис и Уильям В. Хагер, Модификации строк редкой Cholesky Factrization Siam Journal по анализу и приложениям Matrix 2005 26: 3, 621-639. https://doi.org/10.1137/S089547980343641X
Та Дэвис и Уильям В. Хагер, Многочисленные модификации редкой Cholesky Factrization Siam Journal по анализу и приложениям Matrix 2001 22: 4, 997-1013. https://doi.org/10.1137/S0895479899357346
Та Дэвис и Уильям В. Хагер, модификация редкой Чусской факторизации, Siam Journal по анализу и приложениям Matrix 1999 20: 3, 606-627. https://doi.org/10.1137/S0895479897321076
Для модулей чолмода/графического процессора:
Стивен С. Реннич, Дарко Стосич, Тимоти А. Дэвис, Ускоряющаяся редкая факторизация Хоулесского на графических процессорах, Параллельные вычисления, том 59, 2016, стр. 140-150. https://doi.org/10.1016/j.parco.2016.06.004
для AMD и CAMD:
P. Amestoy, Ta Davis, и Duff, Algorithm 837: Алгоритм приблизительного минимального порядка, ACM Trans. по математическому программному обеспечению, 30 (3), 2004, с. 381--388. https://dl.acm.org/doi/abs/10.1145/1024074.1024081
P. Amestoy, Ta Davis, и Duff, приблизительный алгоритм упорядочения минимальной степени, Siam J. Matrix Analysis and Applications, 17 (4), 1996, с. 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, с. 377--380. https://doi.org/10.1145/1024074.1024080
Ta Davis, Jr Gilbert, S. Larimore, E. NG, Алгоритм приблизительного минимального упорядочения столбца, ACM Trans. по математическому программному обеспечению, 30 (3), 2004, с. 353--376. https://doi.org/10.1145/1024074.1024079
Для UMFPACK: (также цитируйте AMD и Colamd):
TA DAVIS, Алгоритм 832: UMFPACK-многофронтальный метод с несимметричным рисунком с стратегией предварительного заказа столбца, ACM Trans. по математическому программному обеспечению, 30 (2), 2004, с. 196--199. https://dl.acm.org/doi/abs/10.1145/992200.992206
TA DAVIS, стратегия предварительного заказа столбца для многофронтального метода без симметричного Патерна, ACM Trans. по математическому программному обеспечению, 30 (2), 2004, с. 165--195. https://dl.acm.org/doi/abs/10.1145/992200.992205
TA DAVIS и DUFF, комбинированный однофронтальный/мультифронтальный метод для несимметричных разреженных матриц, ACM Trans. по математическому программному обеспечению, 25 (1), 1999, с. 1--19. https://doi.org/10.1145/305658.287640
TA DAVIS и DUFF, несимметричный многофронтальный метод SPARSE LU FACTRIGIZEN, SIAM J. MATRIX АНАЛИЗ И вычисления, 18 (1), 1997, с. 140--158. https://doi.org/10.1137/S0895479894246905
Для факторизации M-файла:
Та Дэвис, Алгоритм 930: Фактор, объектно-ориентированный линейный решатель системы для MATLAB, ACM Trans. по математическому программному обеспечению, 39 (4), 2013, с. 28: 1-28: 18. https://doi.org/10.1145/2491491.2491498
Для KLU и BTF (также цитируйте AMD и Colamd):
Та Дэвис и Эканатан Паламадай Натараджан. 2010. Алгоритм 907: KLU, прямой разреженный решатель для задач моделирования схемы. ACM Trans. Математика Мягкий 37, 3, статья 36 (сентябрь 2010 г.), 17 страниц. https://dl.acm.org/doi/abs/10.1145/1824801.1824814
Для ЛПНП:
Та Дэвис. Алгоритм 849: Краткий раз редкий пакет факторизации Чолского. ACM Trans. Математика Мягкий 31, 4 (декабрь 2005 г.), 587–591. https://doi.org/10.1145/1114268.1114277
Для SSGet и Matrix Collection:
Та Дэвис и Ифан Ху. 2011. Коллекция Sparse Matrix Университета Флориды. ACM Trans. Математика Мягкий 38, 1, статья 1 (ноябрь 2011 г.), 25 страниц. https://doi.org/10.1145/2049662.2049663
Kolodziej et al., (2019). Интерфейс сайта коллекции SuitesParse Matrix. Журнал программного обеспечения с открытым исходным кодом, 4 (35), 1244. https://doi.org/10.21105/joss.01244
для spqr_rank :
Лесли В. Фостер и Та Дэвис. 2013. Алгоритм 933: надежный расчет численного ранга, нулевых пространственных оснований, псевдоизонных решений и основных решений с использованием SuiteSparseqr. ACM Trans. Математика Мягкий 40, 1, статья 7 (сентябрь 2013 г.), 23 страницы. https://doi.org/10.1145/2513109.2513116
Для мангуза:
Та Дэвис, Уильям В. Хагер, Скотт П. Колодзи и С. Нури Йералан. 2020. Алгоритм 1003: Монгуз, библиотека графика и раздела. ACM Trans. Математика Мягкий 46, 1, статья 7 (март 2020 г.), 18 страниц. https://doi.org/10.1145/3337792
для Spex:
Кристофер Лоренко, Джинхао Чен, Эрик Морено-Центро и Та Дэвис. 2022. Алгоритм 1021: SPEX LEAD LU, точно решающий разреженные линейные системы через редкую левшую целочисленную целочисленную факторизацию LU. ACM Trans. Математика Мягкий Июнь 2022 года. Https://doi.org/10.1145/3519024
ПРИМЕЧАНИЕ. Если вы используете OpenBlas, обязательно используйте версию 0.3.27 или позже.
Чтобы выбрать свои BLAS/LAPACK, см. Инструкции в SuitesParseblas.cmake в SuiteSparse_config/cmake_modules . Если SuiteSparse_config находит BLA с 64-битными целыми числами (например, BLA Intel MKL ILP64), он настраивает SuiteSparse_config.h с помощью SUITESPARSE_BLAS_INT , определяемый как int64_t . В противном случае, если найдено 32-разловое BLA, этот тип определяется как int32_t . Если позже, UMFPACK, Cholmod или SPQR собираются и связаны с BLA, которые имеют различный целый ряд, вы должны переопределить определение с -DBLAS64 (чтобы утвердить использование 64 -битных целых чисел в BLA) или -DBLAS32 (для утверждения использования 32 -битных целых чисел в BLA).
Размер целого числа BLA не имеет ничего общего с 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
Чтобы использовать по умолчанию (охотиться на BLA), не устанавливайте BLA_VENDOR и не установите его на пустую строку. В этом случае, если SUITESPARSE_USE_64BIT_BLAS включен, предпочтение отдается 64-битным BLA, но 32-разрядная библиотека BLA будет использоваться, если будет найдено 64-разрядную библиотеку. Однако, если оба SUITESPARSE_USE_64BIT_BLAS и SUITESPARSE_USE_STRICT включены, то рассматривается только 64-битные BLAS.
При выборе конкретной библиотеки BLAS настройка SUITESPARSE_USE_64BIT_BLAS строго соблюдается. Если установлено в True, будет использоваться только 64-битная библиотека BLAS. Если false (по умолчанию), будет использоваться только 32-разрядная библиотека BLAS. Если такого BLA не найдено, сборка потерпит неудачу.
Введите следующее в этом каталоге (требует, чтобы System Privieldge выполняла sudo make install ):
mkdir -p build && cd build
cmake ..
cmake --build .
sudo cmake --install .
Все библиотеки будут созданы и установлены в папке по умолчанию по общенациональной системе (/usr/local/lib на Linux). Все включают файлы, необходимые для приложений, которые используют SuitesParse, установлены в/usr/local/include/supeSparse (на Linux).
Чтобы создать только подмножество библиотек, установите SUITESPARSE_ENABLE_PROJECTS при настройке с помощью CMAKE. Например, для создания и установки 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. Обязательно укажите тип сборки как релиз; Например, чтобы построить SuiteSparse в Windows в командном окне, запустите:
mkdir -p build && cd build
cmake ..
cmake --build . --config Release
cmake --install .
Обязательно сначала установите все необходимые библиотеки: BLAS и LAPACK для UMFPACK, Cholmod и SPQR, а также GMP и MPFR для SPEX. Обязательно используйте последние библиотеки; SPEX требует MPFR 4.0.2 и GMP 6.1.2 (эти номера версий не соответствуют суффиксу XYZ Libgmp.so.xyz и libmpfr.so.xyz; для подробностей см. В Руководстве пользователя SPEX).
Чтобы составить библиотеки и установить их только в Suitesparse/Lib (не/usr/local/lib), сделайте это вместо этого на верхнем уровне Suitesparse:
mkdir -p build && cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ..
cmake --build .
cmake --install .
Если вы добавите/home/me/supeesparse/lib в свой путь поиска в библиотеке ( LD_LIBRARY_PATH в Linux), вы можете сделать следующее (например):
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. Он должен автоматически обнаружить, есть ли у вас компиляторы Intel или нет, и есть ли у вас CUDA.
См. SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake , чтобы выбрать BLA.
Вам также может потребоваться добавить Suitesparse/Lib на ваш путь. Например, если ваша копия SuiteSparse находится в/home/me/supeesparse, добавьте это в свой файл ~/.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
Предположим, вы размещаете Suitesparse в папку /home/me/SuiteSparse .
Добавьте папку SuiteSparse/lib в свой путь библиотеки времени выполнения. В Linux добавьте это в свой сценарий ~/.bashrc , предполагающий /home/me/SuiteSparse - это место вашей копии SuitesParse:
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 .
Затем составьте библиотеку Matlab Graphblas. В системной оболочке, находясь в папке Suitesparse, введите make gbmatlab если вы хотите установить общую систему с помощью make install , или make gblocal если вы хотите использовать библиотеку в собственном SuitesParse/LIB.
Затем в командном окне Matlab, CD в каталог SuitesParse и введите SuiteSparse_install . Все пакеты будут скомпилированы, и будет запускать несколько демонстраций. Чтобы запустить (длинный!) Ишительный тест, Do SuiteSparse_test .
Сохраните свой путь Matlab для будущих сессий с командами Matlab Pathtool или SavePath. Если эти методы терпят неудачу, потому что у вас нет разрешения на общую систему, добавьте новые пути в свой файл startup.m, обычно в документах/matlab/startup.m. Вы также можете использовать SuiteSparse_paths M-файл, чтобы установить все свои пути в начале каждого сеанса MATLAB.
Вы можете установить конкретные параметры для Cmake с помощью команды (например):
cmake -DCHOLMOD_PARTITION=OFF -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug ..
Эта команда будет компилировать все Suitesparse, за исключением модуля Cholmod/раздела (из -за -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 ,
CUDA в Windows с MSVC, по -видимому, работает с этим выпуском, но его следует рассматривать как прототип и не может быть полностью функциональным. У меня есть ограниченные ресурсы для тестирования CUDA в Windows. Если вы сталкиваетесь с проблемами, отключите CUDA и опубликуете это как вопрос на GitHub.
CHOLMOD_USE_CUDA :
По умолчанию: ON . Оба SUITESPARSE_USE_CUDA и CHOLMOD_USE_CUDA должны быть включены для использования CUDA в Cholmod.
SPQR_USE_CUDA :
По умолчанию: ON . Оба SUITESPARSE_USE_CUDA и SPQR_USE_CUDA должны быть включены для использования CUDA в SPQR.
CMAKE_INSTALL_PREFIX :
Определяет местоположение установки (по умолчанию на Linux IS /usr/local ). Например, эта команда, в то время как в папке build папке в папке SuiteSparse на верхнем уровне установит каталог установки на /stuff , используемый последующим sudo cmake --install . :
cmake -DCMAKE_INSTALL_PREFIX=/stuff ..
sudo cmake --install .
SUITESPARSE_PKGFILEDIR :
Справочник, где будут установлены файлы Cmake Config и PKG-Config. По умолчанию файлы конфигурации Cmake будут установлены в подпапке cmake в каталоге, где будут установлены (статические) библиотеки (например, lib ). Файлы .pc для pkg-config будут установлены в подпапке pkgconfig в каталоге, где будут установлены (статические) библиотеки.
Эта опция позволяет устанавливать их в месте, отличном от (статических) библиотек. Это позволяет одновременно устанавливать несколько конфигураций библиотек SuitesParse (например, также установив различные CMAKE_RELEASE_POSTFIX и CMAKE_INSTALL_LIBDIR для каждого из них). Чтобы поднять соответствующую конфигурацию в нижестоящих проектах, установить, например, CMAKE_PREFIX_PATH (для CMAKE) или PKG_CONFIG_PATH (для систем сборки с использованием PKG-CONFIG) для пути, содержащего соответствующие файлы конфигурации CMAKE или файлы PKG-CONFIG.
SUITESPARSE_INCLUDEDIR_POSTFIX :
Postfix для установки цели заголовка из SuitesParse. По умолчанию: SuitesParse, поэтому каталог по умолчанию: CMAKE_INSTALL_PREFIX/include/suitesparse
BUILD_SHARED_LIBS :
Если ON , общие библиотеки построены. По умолчанию: ON .
BUILD_STATIC_LIBS :
Если ON , статические библиотеки построены. По умолчанию: ON , за исключением Graphblas, которые занимают много времени для компиляции, поэтому по умолчанию для Graphblas OFF , если не OFF BUILD_SHARED_LIBS .
SUITESPARSE_CUDA_ARCHITECTURES :
Строка, такая как "all" или "35;50;75;80" , в которой перечислены архитектуры CUDA для использования при составлении ядра CUDA с nvcc . Вариант "all" требует Cmake 3.23 или более поздней версии. По умолчанию: "52;75;80" .
BLA_VENDOR :
Строка. Оставьте USET или используйте "ANY" , чтобы выбрать любую библиотеку BLAS (по умолчанию). Или установить на имя BLA_VENDOR , определяемого Findblas.cmake. См.: Https://cmake.org/cmake/help/latest/module/findblas.html#blas-lapack-vendors
SUITESPARSE_USE_64BIT_BLAS :
Если ON , ищите 64-битные BLA. Если OFF : только 32-битный. По умолчанию: OFF .
SUITESPARSE_USE_PYTHON :
Если ON , постройте интерфейсы Python для любого пакета в Suitesparse, в котором есть один (в настоящее время только Spex). Если OFF : не строить ни одного интерфейса Python. По умолчанию: ON .
SUITESPARSE_USE_OPENMP :
Если ON , OpenMP используется по умолчанию, если он доступен. По умолчанию: ON .
Graphblas, Lagraph и Paru будут значительно медленнее, если OpenMP не используется. Чолмод будет несколько медленнее без OpenMP (если он все еще имеет параллельные BLAS/LAPACK). Три пакета (UMFPACK, Cholmod и SPQR) в значительной степени полагаются на параллельные библиотеки BLAS/LAPACK, и эти библиотеки могут использовать OpenMP внутри. Если вы хотите отключить OpenMP во всем приложении, выберите однопоточные BLAS/LAPACK или параллельный BLAS/LAPACK, который не использует OpenMP (например, Framework Apple Accelerate). Использование однопоточной библиотеки BLAS/Lapack приведет к тому, что UMFPACK, Cholmod и SPQR будут значительно медленными.
Предупреждение: Graphblas не могут быть защищены тем, если он будет построен без OpenMP или Pthreads (подробности см. Руководство пользователя graphblas).
SUITESPARSE_CONFIG_USE_OPENMP :
Если ON , SuiteSparse_config использует OpenMP, если он доступен. По умолчанию: SUITESPARSE_USE_OPENMP . Это не необходимо и только используется, чтобы позволить SuiteSparse_time call 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 , автоматически создайте холмод в качестве зависимости, если это необходимо. По умолчанию: 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 , используйте библиотеки Graphblas, установленные в системе сборки. Если 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 используются различные конвенции, искалеченные. Если используется компилятор MSVC C/C ++, это по умолчанию "(name,NAME) name" (т.е. нижний чехол без подключения к подчеркиванию). Это название «Украшительное соглашение» для компилятора Intel Fortran в Windows. Если используются какие -либо другие компиляторы C/C ++, это по умолчанию "(name,NAME) name##_" (т.е. нижний регистр с подчеркиванием подчеркивания). Это название «Человещее соглашение» для большинства широко используемых компиляторов Fortran (например, ifx на других платформах, помимо Windows, gfortran , flang , ...). Последнее название «Удовлетворение» также используется по умолчанию 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. Список слишком длинный.
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.