Сайт Алексея Озерицкого

Искусственный интеллект, суперкомпьютерные системы, параллельные вычисления, численные методы, алгоритмы

Linal

Библиотека Linal содержит подпрограммы линейной алгебры, в том числе векторные и матрично-векторные операции:

  • вычисление суммы векторов;
  • вычисление норм и скалярных произведений;
  • умножение матрицы на вектор;
  • решатель системы линейных уравнений;
  • ввод/вывод векторов и матриц.

Распространяется по лицензии BSD из трех пунктов, исходный код также опубликован на Bitbucket.

Скачать linal-1.0.tar.bz2 (28 Кб)

Поддерживаемые бэкэнды

Решатель системы линейных уравнений:

  • для заполненных матриц — метод Гаусса;
  • для разреженных матриц:
    • SuperLU;
    • UMFPACK;
    • GMRES (встроено, сторонние библиотеки для поддержки устанавливать не нужно).

Подпрограммы векторных и матрично-векторных операций:

  • простой однопроцессорный вариант;
  • 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.