Ускорения для разложения по сингулярным числам произвольной десятичной точности и обращения матриц
Я использую mpmath для произвольной десятичной точности. Я создаю большие квадратные матрицы (30 х 30 и 100 х 100). Для моего кода я выполняю декомпозицию сингулярных значений и инверсию матриц, используя встроенные пакеты mpmath.
Моя проблема в том, что mpmath медленный, даже с gmpy
фоны. Мне нужна точность до 50 десятичных знаков (если решение быстрое, я предпочитаю масштабировать до большего количества десятичных знаков).
Есть ли решение для ускорения этих задач линейной алгебры в Python?
Кто-то задал подобный вопрос здесь, но есть 2 различия:
- Ответы не касались разложения в единственном числе
- Ответы дали методы оценки обратного, но они не пытались показать, что приближение к истинному ответу происходит быстрее, чем метод mpmath. Я попробовал решение, данное в этом посте, и обнаружил, что оно медленнее, чем внутренний алгоритм mpmath.
0 ответов
Выход в этом случае - переписать код, который нужно ускорить, на чистый c / с ++ с использованием самых быстрых алгоритмов. Например, попробуйте использовать библиотеку GPM на C++ напрямую, без использования оберток python. После этого подключите этот код к коду Python с помощью pybind11. Пример с pybind11: https://github.com/pybind/python_example