Методы OpenBLAS

OpenBLAS — это высокопроизводительная библиотека линейной алгебры с открытым исходным кодом, реализующая BLAS (Basic Linear Algebra Subprograms) и некоторые функции LAPACK. OpenBLAS нацелен на повышение производительности вычислений, особенно в операциях с матрицами и векторными вычислениями, которые важны в научных и инженерных задачах, таких как машинное обучение, численные методы и симуляции.

Основные особенности OpenBLAS:

  • Поддержка многопоточности: OpenBLAS может эффективно использовать несколько процессорных ядер для параллельных вычислений, что значительно ускоряет выполнение операций на многопроцессорных системах.
  • Оптимизация под архитектуры процессоров: OpenBLAS включает оптимизированные сборки для различных процессоров, таких как Intel, AMD, ARM и других. Библиотека автоматически определяет характеристики процессора и выбирает наиболее подходящие реализации функций.
  • Поддержка широкого спектра операций BLAS: OpenBLAS реализует основные функции BLAS, такие как операции с векторами (например, векторное сложение и скалярное произведение), матрицами (умножение) и векторно-матричные операции.
  • Совместимость с LAPACK: Библиотека поддерживает ряд функций LAPACK (Linear Algebra PACKage), которые нужны для более сложных операций линейной алгебры, таких как решения систем линейных уравнений, вычисление собственных значений матриц и другие.
  • Высокая производительность: По сравнению с другими библиотеками BLAS, OpenBLAS часто показывает лучшие результаты благодаря ручной оптимизации под конкретные процессорные архитектуры.

 

Применение

OpenBLAS широко используется в приложениях, связанных с численными вычислениями, таких как:

  • Обучение нейронных сетей и другие задачи машинного обучения.
  • Научные вычисления, например, моделирование физических процессов.
  • Обработка больших объемов данных и их анализ.

Библиотека интегрирована во многие популярные научные программные пакеты, такие как NumPy, SciPy и TensorFlow, которые зависят от высокопроизводительных операций линейной алгебры для эффективной работы.

OpenBLAS — отличный выбор для тех, кто ищет решение с открытым исходным кодом для высокопроизводительных вычислений, особенно при работе с большими матрицами и векторами.

Функция

Действие

SingularValueDecompositionDC

Singular Value Decomposition, "divide and conquer" алгоритм. Данный алгоритм считается наиболее быстрым среди других алгоритмов SVD (lapack-функция GESDD).

SingularValueDecompositionQR

Singular Value Decomposition, QR алгоритм. Данный алгоритм считается классическим алгоритмом SVD (lapack-функция GESVD).

SingularValueDecompositionQRPivot

Singular Value Decomposition, алгоритм QR with pivoting (lapack-функция GESVDQ).

SingularValueDecompositionBisect

Singular Value Decomposition, алгоритм bisection (lapack-функция GESVDX).

SingularValueDecompositionJacobiHigh

Singular Value Decomposition, алгоритм Jacobi high level (lapack-функция GEJSV).

SingularValueDecompositionJacobiLow

Singular Value Decomposition, алгоритм Jacobi low level (lapack-функция GESVJ). В некоторых случаях вычисляет малые сингулярные значения и их сингулярные векторы гораздо более точно, чем другие подпрограммы SVD.

SingularValueDecompositionBidiagDC

Singular Value Decomposition, алгоритм divide and conquer для бидиагональной матрицы (lapack-функция BDSDC).

SingularValueDecompositionBidiagBisect

Singular Value Decomposition, алгоритм bisection для бидиагональных матриц (lapack-функция BDSVDX).

EigenSolver

Вычисление собственных значений и собственных векторов обычной квадратной матрицы классическим алгоритмом (lapack-функция GEEV).

EigenSolver2

Вычисление обобщённых собственных значений и собственных векторов для пары обычных квадратных матриц (lapack-функция GGEV).

EigenSolverX

Вычисление собственных значений и собственных векторов обычной квадратной матрицы в режиме эксперта (Expert mode), то есть с возможностью влиять на алгоритм расчёта и возможностью получить сопутствующие расчётные данные (lapack-функция GEEVX).

EigenSolverShur

Вычисление собственных значений, верхнетреугольной матрицы в форме Шура и матрицы векторов Шура (lapack-функция GEES). Смотри Разложение Шура.

EigenSymmetricDC

Вычисление собственных значений и собственных векторов симметричной или эрмитовой (комплексно-сопряжённой) матрицы при помощи алгоритма "divide and conquere" (lapack-функции SYEVD, HEEVD).

EigenSymmetricQR

Вычисление собственных значений и собственных векторов симметричной или эрмитовой (комплексно-сопряжённой) матрицы при помощи классического алгоритма QR (lapack-функции SYEV, HEEV).

EigenSymmetricRobust

Вычисление собственных значений и собственных векторов симметричной или эрмитовой (комплексно-сопряжённой) матрицы при помощи алгоритма Multiple Relatively Robust Representations, MRRR (lapack-функции SYEVR, HEEVR).

EigenSymmetricBisect

Вычисление собственных значений и собственных векторов симметричной или эрмитовой (комплексно-сопряжённой) матрицы при помощи алгоритма bisection (lapack-функции SYEVX, HEEVX).

SingularSpectrumAnalysisSpectrum

Функция-метод расчёта относительных вкладов спектральных компонент по собственным значениям.

SingularSpectrumAnalysisForecast

Функция-метод расчёта реконструированных и прогнозируемых данных с использованием спектральных компонент входного временного ряда.

SingularSpectrumAnalysisReconstructComponents

Функция-метод расчёта реконструированных компоненент входного временного ряда и их вклады.

SingularSpectrumAnalysisReconstructSeries

Функция-метод расчёта реконструированного временного ряда с использованиеми первых component_count компонент.