Linal
(библиотека распространяется по лицензии BSD из трех пунктов)
Библиотека Linal содержит подпрограммы линейной алгебры, в том числе векторные и матрично-векторные операции:
- вычисление суммы векторов;
- вычисление норм и скалярных произведений;
- умножение матрицы на вектор;
- решатель системы линейных уравнений;
- ввод/вывод векторов и матриц.
Скачать linal-1.0.tar.bz2 (28 Кб)»
Поддерживаемые бэкэнды
Решатель системы линейных уравнений:
- для заполненных матриц — метод Гаусса;
- для разреженных матриц:
Подпрограммы векторных и матрично-векторных операций:
- простой однопроцессорный вариант;
- OpenMP;
- CUDA.
При наличии OpenMP, поддержка включается автоматически.
При наличии CUDA, собирается библиотека linal_cu с тем же API, которая выполняет все векторные и матрично-векторные операции на GPU. При использовании библиотеки с поддержкой CUDA считается, что все функции для векторных и матрично-векторных операций получают на вход массив, содержащийся в памяти GPU. Функции ввода-вывода работают с массивами, находящимися в памяти хоста.
Из бекендов решателя, GPU поддерживает только GMRES. Одновременно использовать linal и linal_cu нельзя.
Все функции библиотеки поддерживают типы float и double. Однако, следует иметь ввиду, что, при использовании float, в бекенде UMFPACK происходит конвертация в double, так как UMFPACK не поддерживает float.
Пример работы с библиотекой смотри в файле tests/test_solver.cpp.