Ускорения для разложения по сингулярным числам произвольной десятичной точности и обращения матриц

Я использую mpmath для произвольной десятичной точности. Я создаю большие квадратные матрицы (30 х 30 и 100 х 100). Для моего кода я выполняю декомпозицию сингулярных значений и инверсию матриц, используя встроенные пакеты mpmath.

Моя проблема в том, что mpmath медленный, даже с gmpy фоны. Мне нужна точность до 50 десятичных знаков (если решение быстрое, я предпочитаю масштабировать до большего количества десятичных знаков).

Есть ли решение для ускорения этих задач линейной алгебры в Python?

Кто-то задал подобный вопрос здесь, но есть 2 различия:

  1. Ответы не касались разложения в единственном числе
  2. Ответы дали методы оценки обратного, но они не пытались показать, что приближение к истинному ответу происходит быстрее, чем метод mpmath. Я попробовал решение, данное в этом посте, и обнаружил, что оно медленнее, чем внутренний алгоритм mpmath.

0 ответов

Выход в этом случае - переписать код, который нужно ускорить, на чистый c / с ++ с использованием самых быстрых алгоритмов. Например, попробуйте использовать библиотеку GPM на C++ напрямую, без использования оберток python. После этого подключите этот код к коду Python с помощью pybind11. Пример с pybind11: https://github.com/pybind/python_example

Другие вопросы по тегам