Методы 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 часто показывает лучшие результаты благодаря ручной оптимизации под конкретные процессорные архитектуры.

 
Большинство LAPACK-функций библиотеки OpenBLAS используют целочисленный параметр info для возврата статуса завершения функции или подпрограммы: успешно ли она отработала, были ли обнаружены ошибки во входных параметрах или возникли численные проблемы.

Во всех случаях значение info, равное 0, означает, что LAPACK-функция выполнена успешно. При любом другом значении выставляется ошибка ERR_MATRIX_OPENBLAS (5707) или ERR_MATRIX_OPENBLAS_PARAMETER (5708).

У многих LAPACK-функций есть режим запроса необходимого размера рабочей памяти для выполнения функции с заданными параметрами. В этом режиме функция не производит вычислений, а только проверяет корректность входных параметров. В случае успеха она возвращает требуемый размер рабочей памяти; в противном случае в параметре info возвращается номер ошибочного параметра. При этом выставляется ошибка ERR_MATRIX_OPENBLAS_PARAMETER.

Чтобы узнать, какой код info был возвращён при неуспешном выполнении LAPACK-функции, следует использовать функцию MQLInfoInteger(MQL_LAST_OPENBLAS_ERROR).

Некоторые методы, например ReflectBidiagonalToQP, FactorizationQR, FactorizationRQ2 и другие, последовательно вызывают несколько LAPACK-функций. Чтобы узнать, в какой именно функции произошла ошибка, следует использовать функцию MQLInfoString(MQL_LAST_OPENBLAS_FUNCTION).

 

Применение

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

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

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

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

Функция

Действие

SingularValueDecompositionDC

SVD-разложение методом "разделяй и властвуй". Считается самым быстрым среди SVD-алгоритмов (LAPACK-функция GESDD).

SingularValueDecompositionQR

SVD-разложение QR-алгоритмом. Классический алгоритм SVD (LAPACK-функция GESVD).

SingularValueDecompositionQRPivot

SVD-разложение QR-алгоритмом с выбором ведущего элемента (LAPACK-функция GESVDQ).

SingularValueDecompositionBisection

SVD-разложение методом бисекции (LAPACK-функция GESVDX).

SingularValueDecompositionJacobiHigh

SVD-разложение высокоуровневым методом Якоби (LAPACK-функция GEJSV).

SingularValueDecompositionJacobiLow

SVD-разложение низкоуровневым методом Якоби (LAPACK-функция GESVJ). В некоторых случаях вычисляет малые сингулярные значения и соответствующие сингулярные векторы значительно точнее других SVD-подпрограмм.

SingularValueDecompositionBidiagDC

SVD-разложение бидиагональной матрицы методом "разделяй и властвуй" (LAPACK-функция BDSDC).

SingularValueDecompositionBidiagBisect

SVD-разложение бидиагональных матриц методом бисекции (LAPACK-функция BDSVDX).

SingularValueDecompositionBidiagQR

Вычисляет SVD-разложение общей матрицы, предварительно приведенной к бидиагональному виду методом ReduceToBidiagonal. LAPACK-функция BDSQR.

EigenSolver

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

EigenSolverX

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

EigenSolverSchur

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

EigenSolver2

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

EigenSolver2X

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

EigenSolver2Schur

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

EigenSolver2Blocked

Вычисление обобщенных собственных значений и собственных векторов для пары обычных квадратных матриц при помощи блочного алгоритма (LAPACK-функция GGEV3). Обе матрицы должны быть одинакового размера. Параметры метода точно такие же, как и у EigenSolver2.

EigenSolver2SchurBlocked

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

EigenHessenbergSchurQ

Вычисляет собственные значения матрицы Хессенберга H и матриц T и Z из разложения Шура H = Z T Z**T, где T — верхняя квазитреугольная матрица (форма Шура), а Z — ортогональная матрица векторов Шура. LAPACK function HSEQR. См. также Разложение Шура.

EigenVectorsTriangularZ

Вычисляет собственные векторы верхней квазитреугольной или комплексной верхнетреугольной матрицы, полученной с помощью функций EigenHessenbergSchurQ или EigenSolverSchur. A = Q * T * Q**H, где T — верхняя квазитреугольная матрица (форма Шура), а Q — ортогональная матрица векторов Шура. LAPACK function TREVC.

EigenVectorsTriangularZBlocked

Вычисляет собственные векторы верхней квазитреугольной или комплексной верхнетреугольной матрицы, полученной с помощью функций EigenHessenbergSchurQ или EigenSolverSchur. A = Q * T * Q**H, где T — верхняя квазитреугольная матрица (форма Шура), а Q — ортогональная матрица векторов Шура. LAPACK-функция TREVC3. Это блочная версия метода TREVC (уровень 3 OpenBLAS). Работает быстрее, но может быть менее точной.

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).

EigenSymmetricDC2s

Вычисление всех собственных значений и, при необходимости, собственных векторов вещественной симметричной или эрмитовой (комплексно-сопряжённой) матрицы с использованием двухэтапного алгоритма приведения к тридиагональному виду. Если требуется вычисление собственных векторов, применяется алгоритм divide and conquer («разделяй и властвуй») (функции LAPACK SYEVD_2STAGE, HEEVD_2STAGE).

EigenSymmetricQR2s

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

EigenSymmetricRobust2s

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

EigenSymmetricBisect2s

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

EigenSymmetric2DC

Вычисление всех собственных значений и, при необходимости, собственных векторов обобщенной симметрично определенной собственной задачи вида A*x=(lambda)*B*x,  A*Bx=(lambda)*x или B*A*x=(lambda)*x.(функции LAPACK SYGVD, HEGVD).

EigenSymmetric2QR

Вычисление всех собственных значений и, при необходимости, собственных векторов обобщенной симметрично определенной собственной задачи вида A*x=(lambda)*B*x, A*Bx=(lambda)*x или B*A*x=(lambda)*x. (функции LAPACK SYGV, HEGV).

EigenSymmetric2Bisect

Вычисление всех собственных значений и, при необходимости, собственных векторов обобщенной симметрично определенной собственной задачи вида A*x=(lambda)*B*x, A*Bx=(lambda)*x или B*A*x=(lambda)*x. (функции LAPACK SYGVX, HEGVX).

EigenTridiagonalDC

Вычисление собственных значений и собственных векторов симметричной трехдиагональной матрицы с использованием алгоритма "divide and conquer" (LAPACK-функция STEVD).

EigenTridiagonalQR

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

EigenTridiagonalRobust

Вычисление собственных значений и собственных векторов симметричной трехдиагональной матрицы при помощи алгоритма Multiple Relatively Robust Representations, MRRR (LAPACK-функция STEVR).

EigenTridiagonalBisect

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

EigenTridiagonalQL

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

EigenTridiagonalDCQ

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

EigenTridiagonalQRQ

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

EigenTridiagonalPosDefQ

Вычисление собственных значений и собственных векторов симметричной положительно определенной трехдиагональной матрицы с использованием QR-алгоритма (LAPACK-функция PTEQR).

LinearEquationsSolution

Вычисляет систему линейных уравнений с квадратной матрицей коэффициентов A и несколькими правыми частями. Имеет вид A*X = B, где A — общая квадратная матрица размера n на n, столбцы матрицы B представляют собой отдельные правые части, а столбцы матрицы X содержат соответствующие решения. Функция LAPACK GESV.

LinearEquationsSolutionTriangular

Вычисляет систему линейных уравнений с квадратно-треугольной матрицей коэффициентов A и несколькими правыми частями. Имеет вид A*X = B, где A — общая квадратная матрица размера n на n, столбцы матрицы B представляют собой отдельные правые части, а столбцы матрицы X содержат соответствующие решения. Функция LAPACK TRTRS.

InverseTriangular

Выполняет вычисление обратной матрицы для верхнетреугольной или нижнетреугольной матрицы A. LAPACK-функция TRTRI.

CondNumReciprocalTriangular

Оценивает величину, обратную числу обусловленности общей верхнетреугольной или нижнетреугольной матрицы A в норме 1 или в бесконечной норме. LAPACK-функция TRCON.

LinearEquationsSolutionSy

Вычисляет систему линейных уравнений с симметричной или эрмитово сопряженной матрицей A и несколькими правыми частями. Имеет вид A*X = B, где A — симметричная или эрмитово сопряженная матрица размером n на n, столбцы матрицы B представляют собой отдельные правые части, а столбцы матрицы X содержат соответствующие решения. Функции из библиотеки LAPACK: SYSV и HESV.

LinearEquationsSolutionComplexSy

Вычисляет систему линейных уравнений с комплексной симметричной (не эрмитово сопряженной!) матрицей A и несколькими правыми частями. Имеет вид A*X = B, где A — комплексная симметричная матрица размера n на n, столбцы матрицы B представляют собой отдельные правые части, а столбцы матрицы X содержат соответствующие решения. Функция LAPACK SYSV.

LinearEquationsSolutionSyPD

Вычисляет систему линейных уравнений с симметричной или эрмитово сопряженной положительно определенной матрицей A и несколькими правыми частями. Система вида A*X = B, где A — симметричная или эрмитово сопряженная положительно определенная матрица размером n на n, столбцы матрицы B представляют собой отдельные правые части, а столбцы матрицы X содержат соответствующие решения. Функция LAPACK POSV.

LinearEquationsSolutionGeTri

Вычисляет систему линейных уравнений с общей (несимметричной) трехдиагональной матрицей коэффициентов A и несколькими правыми частями. Имеет вид A*X = B, где A — общая трехдиагональная матрица размера n на n, столбцы матрицы B представляют собой отдельные правые части, а столбцы матрицы X содержат соответствующие решения. Функция LAPACK GTSV.

LinearEquationsSolutionSyTriPD

Вычисляет систему линейных уравнений с симметричной трехдиагональной положительно определенной матрицей A и несколькими правыми частями. Имеет вид A*X = B, где A — симметричная трехдиагональная матрица размера n на n, столбцы матрицы B представляют собой отдельные правые части, а столбцы матрицы X содержат соответствующие решения. Функция LAPACK PTSV.

SylvesterEquation

Решает уравнение Сильвестра для вещественных или комплексных квадратных матриц: A*X + X*B = scale*C где A — общая матрица размера m на m, а B — общая матрица размера n на n. Используются LAPACK-функции GEES и TRSYL.

SylvesterEquationTriangular

Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц:   op(A)*X + X*op(B) = scale*C или op(A)*X - X*op(B) = scale*C где op(A) = A, A**T или A**H, а A и B — верхнетреугольные матрицы. LAPACK-функция TRSYL.

SylvesterEquationTriangularBlocked

Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: op(A)*X + X*op(B) = scale*C или op(A)*X - X*op(B) = scale*C где op(A) = A, A**T или A**H, а A и B — верхнетреугольные матрицы. LAPACK-функция TRSYL3.

SylvesterEquationSchur

Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: A*X + X*B = C где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n. LAPACK-функция TRSYL.

SylvesterEquationSchurBlocked

Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: A*X + X*B = C где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n.

LAPACK-функция TRSYL3.

LeastSquaresSolution

Решает переопределенные или недоопределенные вещественные / комплексные системы линейных уравнений, содержащие матрицу A размером m на n или ее транспонированную / сопряженно-транспонированную версию, с использованием QR- или LQ- разложения матрицы A. Предполагается, что A — это матрица полного ранга. LAPACK-функция GELS.

LeastSquaresSolutionDC

Вычисляет решение задачи наименьших квадратов с минимальной нормой для вещественной или комплексной системы minimize 2-norm(| b - A*x |) с использованием сингулярного разложения (SVD) матрицы A. Матрица A имеет размер m на n и может быть вырожденной по рангу. Алгоритм разделяй и властвуй (divide and conquer) предъявляет минимальные требования к точности арифметики с плавающей запятой. Функция LAPACK GELSD.

LeastSquaresSolutionSVD

Вычисляет решение задачи наименьших квадратов с минимальной нормой для вещественной или комплексной системы minimize 2-norm(| b - A*x |) с использованием сингулярного разложения (SVD) матрицы A. Матрица A имеет размер m на n и может быть вырожденной по рангу. LAPACK function GELSS.

LeastSquaresSolutionWY

Решает переопределенные или недоопределенные вещественные / комплексные системы линейных уравнений, содержащие матрицу A размером m на n или ее транспонированную / сопряженно-транспонированную версию, с использованием QR- или LQ- разложения матрицы A с компактным WY-представлением матрицы Q. Предполагается, что A — это матрица полного ранга. LAPACK-функция GELST.

LeastSquaresSolutionsQRPivot

Вычисляет решение задачи наименьших квадратов с минимальной нормой для вещественной или комплексной системы minimize 2-norm(| b - A*x |) с использованием полного ортогонального разложения матрицы A. Матрица A имеет размер m на n и может быть вырожденной по рангу. LAPACK-функция GELSY.

LeastSquaresSolutionQRTallSkinny

Решает переопределенные или недоопределенные вещественные или комплексные системы линейных уравнений, включающие матрицу A размером m на n или ее транспонированную / сопряженно-транспонированную версию, используя высокое узкое QR-разложение (tall skinny QR) или короткое широкое LQ-разложение (short wide LQ) матрицы A. Предполагается, что A — это матрица полного ранга. LAPACK-функция GETSLS.

LeastSquaresGaussMarkov2

Solves a general Gauss-Markov linear model problem: minimize || y ||_2 subject to d = A*x + B*y, using a generalized QR factorization of matrices A and B. LAPACK function GGGLM.

FactorizationQR

Вычисляет QR-разложение общей матрицы размера m на n: A = Q * R. LAPACK-функция GEQRF.

FactorizationQRNonNeg

Вычисляет QR-разложение общей матрицы размера m на n: A = Q * R, где R — верхнетреугольная матрица с неотрицательными элементами на диагонали. LATPACK-функция GEQRFP.

FactorizationQRPivot

Вычисляет QR-разложение общей матрицы размера m на n с перестановкой столбцов: A * P = Q * R. LAPACK-функция GEQP3.

FactorizationQRTallSkinny

Вычисляет блочное QR-разложение высокой узкой матрицы размера m на n (m>n): A = Q * R. Функция LAPACK LATSQR.

FactorizationLQ

Выполняет LQ-разложение общей матрицы размером m на n: A = L * Q. Функция LAPACK GELQF.

FactorizationLQShortWide

Вычисляет блочное LQ-разложение низкой широкой матрицы размера m на n (m<n): A = L * Q. Функция LAPACK LASWLQ.

FactorizationQL

Выполняет QL-разложение общей матрицы размером m на n: A = Q * L. Функция LAPACK GEQLF.

FactorizationRQ

Выполняет RQ-разложение общей матрицы размером m на n: A = R * Q. Функция LAPACK GERQF.

FactorizationRZ

Приводит действительную или комплексную верхнетрапециевидную матрицу A размера M на N (M<=N) к верхнетреугольному виду с помощью ортогональных преобразований. Функция LAPACK TZRZF.

FactorizationQR2

Вычисляет обобщенное QR-разложение двух матриц: A размера n на m и B размера n на p: A = Q * R, B = Q * T * Z. Функция LAPACK GGQRF.

FactorizationRQ2

Вычисляет обобщенное RQ-разложение матрицы A размера m на n и матрицы B размера p на n: A = R * Q, B = Z * T * Q. Функция LAPACK GGRQF.

FactorizationPLU

Вычисляет LU-разложение общей матрицы A размером m на n с использованием частичного выбора ведущего элемента и перестановок строк. Разложение имеет вид A = P * L * U. LAPACK-функция GETRF.

FactorizationPLUQ

Вычисляет LU-разложение общей матрицы A размером n на n с использованием полного выбора ведущего элемента (с перестановкой строк и столбцов). Разложение имеет вид: A = P * L * U * Q, где P — матрица перестановок строк, L — нижнетреугольная матрица с единицами по диагонали, U — верхнетреугольная матрица, а Q — матрица перестановок столбцов. LAPACK-функция GETC2.

FactorizationPLUGeTrid

Вычисляет LU-разложение общей (несимметричной) трехдиагональной матрицы A размером n на n с использованием частичного выбора ведущего элемента и перестановок строк. Разложение имеет вид A = P * L * U. LAPACK-функция GTTRF.

FactorizationLDL

Вычисляет разложение для вещественной симметричной или комплексной эрмитовой матрицы A с использованием диагонального выбора ведущего элемента по методу Банча-Кауфмана. LAPACK-функции SYTRF и HETRF.

FactorizationLDLComplexSy

Вычисляет разложение вещественной комплексной симметричной (не эрмитово сопряженной!) матрицы A с использованием диагонального выбора ведущего элемента по методу Банча-Кауфмана. Функция LAPACK SYTRF.

FactorizationLDLSyTridPD

Вычисляет разложение симметричной положительно определенной (для вещественных данных) или эрмитовой положительно определенной (для комплексных данных) трехдиагональной матрицы A. LAPACK-функция PTTRF.

FactorizationCholesky

Вычисляет разложение для вещественной симметричной или комплексной эрмитовой положительно-определенной матрицы A. LAPACK-функция POTRF.

FactorizationCholeskySyPS

Вычисляет разложение Холецкого с полным выбором ведущего элемента (complete pivoting) для вещественной симметричной (или комплексной эрмитовой) положительно полуопределенной матрицы A размером n на n. Функция LAPACK PSTRF.

FactorizationPLURaw

Вычисляет LU-разложение общей матрицы A размером m на n с использованием частичного выбора ведущего элемента и перестановок строк. Разложение имеет вид A = P * L * U,

где P — матрица перестановок, L — нижнетреугольная матрица с единицами на диагонали (или нижняя трапециевидная матрица, если m > n), а U — верхнетреугольная матрица (или верхняя трапециевидная матрица, если m < n). LAPACK function GETRF.

FactorizationPLUQRaw

Вычисляет LU-разложение общей матрицы A размером n на n с использованием полного выбора ведущего элемента (с перестановкой строк и столбцов). Разложение имеет вид A = P * L * U * Q,

где P — матрица перестановок строк, L — нижнетреугольная матрица с единицами по диагонали, U — верхнетреугольная матрица, а Q — матрица перестановок столбцов. LAPACK-функция GETC2.

FactorizationPLUGeTridRaw

Вычисляет LU-разложение общей (несимметричной) трехдиагональной матрицы A размером n на n с использованием частичного выбора ведущего элемента и перестановок строк. Разложение имеет вид A = P * L * U, где P — матрица перестановок, L — нижнетреугольная матрица с единицами по диагонали, а U — верхнетреугольная. LAPACK function GTTRF.

FactorizationLDLRaw

Computes the factorization of a real symmetric or complex Hermitian matrix A using the Bunch-Kaufman diagonal pivoting method. LAPACK functions SYTRF, HETRF.

FactorizationLDLComplexSyRaw

Вычисляет разложение вещественной комплексной симметричной матрицы A с использованием диагонального выбора ведущего элемента по методу Банча-Кауфмана.  Функция LAPACK SYTRF.

PLULinearEquationsSolution

Решает систему линейных уравнений A * X = B,  A**T * X = B или A**H * X = B с использованием LU-разложения квадратной матрицы коэффициентов AF, вычисленного методом FactorizationPLURaw, для нескольких правых частей. LAPACK-функция GETRS.

PLUInverse

Вычисляет обратную матрицу для LU-разложения общей матрицы AF, полученного методом FactorizationPLURaw. LAPACK-функция GETRI.

PLUCondNumReciprocal

Оценивает обратное число обусловленности общей матрицы A в норме 1 или в бесконечной норме, используя LU-разложение, полученное методом FactorizationPLURaw. LAPACK-функция GECON.

PLUQLinearEquationsSolution

Решает систему линейных уравнений A * X = scale * RHS для общей матрицы A размером n на n, используя LU-разложение с полной перестановкой, вычисленное методом FactorizationPLUQRaw. LAPACK-функция GESC2.

PLUGeTridLinearEquationsSolution

Решает систему линейных уравнений A * X = B,  A**T * X = B или A**H * X = B с трехдиагональной матрицей A, используя LU-разложение, вычисленное методом FactorizationPLUGeTridRaw, для нескольких правых частей. LAPACK-функция GTTRS.

PLUGeTridCondNumReciprocal

Оценивает величину, обратную числу обусловленности общей трехдиагональной матрицы A в норме 1 или в бесконечной норме, используя LU-разложение, полученное методом FactorizationPLUGeTridRaw. LAPACK-функция GTCON.

LDLLinearEquationsSolution

Решет систему линейных уравнений  A * X = B  с вещественной симметричной или комплексной эрмитовой неопределенной матрицей, используя разложение A = U**T * D * U или A = L * D * L**T, вычисленное методом FactorizationLDLRaw с несколькими правыми частями. LAPACK-функции SYTRS, HETRS.

LDLInverse

Вычисляет обратную матрицу для вещественной симметричной или комплексной эрмитовой неопределенной матрицы, используя разложение A = U**T * D * U or A = L * D * L**T, вычисленное методом FactorizationLDLRaw. LAPACK-функции SYTRI, HETRI.

LDLCondNumReciprocal

Оценивает величину, обратную числу обусловленности вещественной симметричной или комплексной эрмитовой неопределенной матрицы A, используя разложение LDLT, вычисленное методом FactorizationLDLRaw. LAPACK-функции SYCON, HECON.

LDLComplexSyLinearEquationsSolution

Решает систему линейных уравнений A * X = B  с комплексной симметричной неопределенной матрицей, используя разложение A = U**T * D * U или A = L * D * L**T, вычисленное методом FactorizationLDLComplexSyRaw, для нескольких правых частей. LAPACK-функция SYTRS.

LDLComplexSyInverse

Вычисляет обратную матрицу для комплексной симметричной неопределенной матрицы, используя разложение A = U**T * D * U or A = L * D * L**T, вычесленное методом FactorizationLDLComplexSyRaw. LAPACK-функция SYTRI.

LDLComplexSyCondNumReciprocal

Оценивает обратное значение числа обусловленности комплексной симметричной неопределённой матрицы A с использованием LDLT-разложения, вычисленного методом FactorizationLDLComplexSyRaw. LAPACK-функция SYCON.

LDLSyTridPDLinearEquationsSolution

Решает систему линейных уравнений  A * X = B  с вещественной симметричной или комплексной эрмитовой положительно определенной трехдиагональной матрицей, используя разложение A = L * D * L**T, вычисленное методом FactorizationLDLSyTridPD, для нескольких правых частей. LAPACK-функция PTTRS.

LDLSyTridPDCondNumReciprocal

Оценивает величину, обратную числу обусловленности вещественной симметричной или комплексной эрмитовой положительно определенной трехдиагональной матрицы A, используя разложение LDLT, вычисленное методом FactorizationLDLSyTridPD. LAPACK-функция PTCON.

CholeskyLinearEquationsSolution

Решает систему линейных уравнений A * X = B , где A — вещественная симметричная или комплексная эрмитова положительно определенная матрица, с использованием разложения A = L * L**T, вычисленного методом FactorizationCholesky с несколькими правыми частями. Соответствует функции POTRS из библиотеки LAPACK.

CholeskyInverse

Вычисляет обратную матрицу для вещественной симметричной или комплексной эрмитовой положительно определенной матрицы A с использованием LLT-разложения, вычисленного методом FactorizationCholesky. LAPACK-функция POTRI.

CholeskyCondNumReciprocal

Оценивает обратное число обусловленности (reciprocal condition number) вещественной симметричной или комплексной эрмитовой положительно определенной матрицы A с использованием LDL-разложения, вычисленного методом FactorizationCholesky. Соответствует LAPACK-функции POCON.

Pseudo Inverse

В библиотеке OpenBLAS нет специальной функции для вычисления псевдообратной матрицы. Однако для этой цели может использоваться сингулярное разложение (SVD)

Polar Decomposition

В библиотеке OpenBLAS нет специальной функции для вычисления полярного разложения матрицы. Однако для этой цели может использоваться сингулярное разложение (SVD)

ReduceToBidiagonal

Преобразует произвольную вещественную или комплексную матрицу A размера m×n к верхнему или нижнему бидиагональному виду B с помощью ортогонального преобразования: Q**T * A * P = B. При m >= n матрица B будет верхней бидиагональной; при m < n — нижней. Функция LAPACK GEBRD.

ReflectBidiagonalToQP

Генерирует ортогональные матрицы Q и P**T (или P**H для комплексных типов), определяемые методом ReduceToBidiagonal при приведении вещественной или комплексной матрицы A к бидиагональному виду: A = Q * B * P**T. Матрицы Q и P**T представляют собой произведения элементарных отражений H(i) или G(i) соответственно. Функции LAPACK ORGBR и UNGBR.

ReduceSymmetricToTridiagonal

Преобразует вещественную симметричную или комплексную эрмитову матрицу A в трехдиагональная форму B с помощью ортогонального преобразования подобия: Q**T * A * Q = B. LAPACK-функции SYTRD и HETRD.

ReflectTridiagonalToQ

Генерирует ортогональную матрицу Q, которая представляется в виде произведения n-1 элементарных отражений порядка n, как при использовании метода ReduceSymmetricToTridiagonal

ReduceToHessenberg

Преобразует вещественную или комплексную общую матрицу A размера n на n к верхней форме Хессенберга H с помощью ортогонального преобразования подобия: Q**T * A * Q = H. Функция LAPACK GEHRD.

ReflectHessenbergToQ

Генерирует ортогональную матрицу Q, которая определяется как произведение n-1 элементарных рефлекторов порядка n, возвращаемых функцией ReduceToHessenberg: Q = H(1) H(2). . . H(n-1). Функция LAPACK ORGHR.

MatrixNorm

Возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента прямоугольной матрицы общего вида. Функция LAPACK LANGE.

MatrixNormGeTrid

Возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента трехдиагональной матрицы. LAPACK-функция LANGT.

MatrixNormHessenberg

Возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента верхней матрицы Хессенберга. LAPACK-функция LANHS.

MatrixNormSy

Возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента действительной симметричной или комплексной эрмитовой матрицы. LAPACK-функции LANSY, LANHE.

MatrixNormComplexSy

MatrixNormComplexSy — возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента комплексной симметричной (не эрмитовой) матрицы. LAPACK-функция LANSY.

MatrixNormSyTrid

Возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента действительной симметричной или комплексной эрмитовой трехдиагональной матрицы. LAPACK-функции LANST, LANHT.

MatrixNormTriangular

Возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента трапециевидной матрицы размером m на n или треугольной матрицы. LAPACK-функция LANTR.

MatrixBalance

Балансирует общую вещественную или комплексную квадратную матрицу A. Сначала выполняется перестановка A с помощью преобразования подобия для выделения собственных значений в первых 1 до ILO-1 и последних IHI+1 до N элементов на диагонали. Затем выполняется диагональное преобразование подобия для строк и столбцов от ILO до IHI, чтобы сделать нормы строк и столбцов максимально близкими. Оба шага являются опциональными. Балансировка может уменьшить 1-норму матрицы и повысить точность вычисленных собственных значений и/или собственных векторов. Функция LAPACK GEBAL.

EigenVectorsBackward

Формирует правые или левые собственные векторы вещественной или комплексной общей матрицы с помощью обратного преобразования, примененного к собственным векторам сбалансированной матрицы, полученной функцией MatrixBalance. Функция LAPACK GEBAK.

ReduceToHessenbergBalanced

Преобразует вещественную или комплексную общую сбалансированную матрицу A размера n на n к верхней форме Хессенберга H с помощью ортогонального преобразования подобия: Q**T * A * Q = H. Функция LAPACK GEHRD.

ReflectHessenbergBalancedToQ

Генерирует ортогональную матрицу Q, которая определяется как произведение элементарных отражений от ReduceToHessenbergBalanced: Q = H(ilo) H(ilo+1). . . H(ihi-1). Функция LAPACK ORGHR.

EigenHessenbergBalancedSchurQ

Вычисляет собственные значения матрицы Хессенберга H и матриц T и Z из разложения Шура H = Z T Z**T, где T — верхняя квазитреугольная матрица (форма Шура), а Z — ортогональная матрица векторов Шура. Опционально Z может быть перемножена справа с входной ортогональной матрицей Q, что позволяет получить факторизацию Шура матрицы A, которая была приведена к форме Хессенберга H ортогональной матрицей Q: A = Q*H*Q**T = (QZ)*T*(QZ)**T. Функция LAPACK HSEQR.

DynamicModeDecomposition

Вычисляет DMD для пары матриц срезов данных. Функция LAPACK GEDMD.

DynamicModeDecompositionQR

Вычисляет DMD для пары матриц срезов данных с использованием QR-факторизации для сжатия данных. Функция LAPACK GEDMDQ.

SingularSpectrumAnalysisSpectrum

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

SingularSpectrumAnalysisForecast

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

SingularSpectrumAnalysisReconstructComponents

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

SingularSpectrumAnalysisReconstructSeries

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

L1TrendFilterLambdaMax

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

L1TrendFilter

Метод расчета L1-тренда для данных вектора. Параметр регуляризации lambda может быть задан как в абсолютных единицах (relative=false), так и в единицах λmax.

BlasL2GeMV

Вычисляет произведение матрицы общего вида размера m на n на вектор: y = alpha * op(A) * x + beta * y. BLAS-функция GEMV.

BlasL2SyMV

Вычисляет произведение симметричной матрицы размера n на n на вектор: y = alpha*A*x + beta*y. BLAS-функция SYMV.

BlasL2HeMV

Вычисляет произведение эрмитовой матрицы размера n на n на вектор: y = alpha*A*x + beta*y. BLAS-функция HEMV.

BlasL2TrMV

Вычисляет произведение треугольной матрицы размера n на n на вектор: y = op(A) * x. BLAS-функция TRMV.

BlasL2GeR

Выполняет обновление ранга 1 матрицы общего вида размера m на n: AU = alpha*x*y + A. BLAS-функции GER, GERU.

BlasL2GeRC

Выполняет сопряженное обновление ранга 1 матрицы общего вида размера m на n: AU = alpha * x * conjg(y) + A. BLAS-функция GERC.

BlasL2SyR

Выполняет обновление ранга 1 симметричной матрицы размера n на n: AU = alpha*x*x + A. BLAS-функция SYR.

BlasL2HeR

Выполняет сопряженное обновление ранга 1 эрмитовой матрицы размера n на n: AU = alpha * x * conjg(x) + A. BLAS-функция HER2.

BlasL2SyR2

Выполняет обновление ранга 2 симметричной матрицы размера n на n: AU = alpha*x*y + alpha*y*x + A. BLAS-функция SYR2.

BlasL2HeR2

Выполняет сопряженное обновление ранга 2 эрмитовой матрицы размера n на n: AU = alpha * x * conjg(y) + conjg(alpha) * y * conjg(x) + A. BLAS-функция HER2.

BlasL3GeMM

Вычисляет произведение матриц общего вида: C = alpha * op(A) * op(B) + beta * C, где C — матрица размера m на n, op(A) — матрица размера m на k, op(B) — матрица размера k на n. BLAS-функция GEMM.

BlasL3SyMM

Вычисляет произведение матриц, где входная матрица A симметричная. C = alpha*A*B + beta*C  или C = alpha*B*A + beta*C, где A — симметричная матрица размера m на m при side='L' или размера n на n в противном случае; B и C — матрицы размера m на n. BLAS-функция SYMM.

BlasL3HeMM

Вычисляет произведение матриц, где входная матрица A эрмитова. C = alpha*A*B + beta*C  или C = alpha*B*A + beta*C, где A — эрмитова матрица размера m на m при side='L' или размера n на n в противном случае; B и C — матрицы размера m на n. BLAS-функция HEMM.

BlasL3TrMM

Вычисляет произведение матриц, где входная матрица A треугольная. C = alpha*op(A)  или C = alpha*B*op(A), где A — треугольная матрица размера m на m при side='L' или размера n на n в противном случае; B и C — матрицы размера m на n. BLAS-функция TRMM.

BlasL3LACRM

Умножает комплексную матрицу на квадратную действительную матрицу: C = A * B, где A — комплексная матрица размера m на n; B — действительная матрица размера n на n; C — комплексная матрица размера m на n. BLAS-функция LACRM.

BlasL3LARCM

Умножает квадратную действительную матрицу на комплексную матрицу: C = A * B, где A — действительная матрица размера m на m; B — комплексная матрица размера m на n; C — комплексная матрица размера m на n. BLAS-функция LARCM.

BlasL3SyRK

Выполняет симметричное обновление ранга k: CU = alpha * A * A**T + beta*C  или CU = alpha * A**T * A + beta*C. BLAS-функция SYRK.

BlasL3HeRK

Выполняет эрмитово обновление ранга k: CU = alpha * A * A**H + beta*C  или CU = alpha * A**H * A + beta*C. BLAS-функция HERK.

BlasL3SyR2K

Выполняет симметричное обновление ранга 2k: CU = alpha * A * B**T + alpha * B * A**T + beta*C  или CU = alpha * A**T * B + alpha * B**T * A + beta*C. BLAS-функция SYR2K.

BlasL3HeR2K

Выполняет эрмитово обновление ранга 2k: CU = alpha * A * B**H + alpha * B * A**H + beta*C  или CU = alpha * A**H * B + alpha * B**H * A + beta*C. BLAS-функция HER2K.