Существуют ли какие-либо квадратичные арифметические разреженные матрицы?

10

Я работаю над некой обусловленной большой разреженной линейной системой уравнений. Я хочу использовать двойную арифметику или квадро-двойную арифметику для их решения. Я знаю, что существует пакет под названием MPACK, разработанный Накатой, Махо, который может выполнять числовые линейные алгебраические вычисления в четырехугольной арифметике. Тем не менее, он предназначен для плотной матрицы, а не разреженной матрицы. Знаете ли вы, есть ли какой-нибудь квадратичный арифметический набор разреженных матриц?

Ханью Е.
источник
С какими матрицами вы работаете? Это симметрично, эрмитово, положительно определенно? Вы хотите сделать разреженный LU или использовать итерационные методы?
Виктор Лю

Ответы:

3

Начиная с версии 3.2 , PETSc поддерживает разреженные вычисления с четверной точностью на gcc / gfortran 4.6 и новее.

Вам понадобятся BLAS и LAPACK с четверной точностью, которые PETSc может предоставить вам (вместе с поддержкой четырех) с помощью следующей (частичной) команды configure:

./configure --with-precision=__float128 --download-f2cblaslapack

Увидеть FAQ для получения дополнительной информации.

Кроме того, я согласен с nOOb , если это вообще возможно, попытаться упорядочить систему, прежде чем перейти к четверной точности.

Арон Ахмадия
источник
1
Это четверная точность (128-битные реалы), а не четверная (256-битные реалы). Тем не менее, четверной точности, как правило, достаточно, чтобы понять проблемы стабильности, возникающие при двойной точности, и обычно вы хотите масштабировать систему и дискретизировать ее так, чтобы двойной точности было достаточно для производства.
Джед Браун
2

Плохо обусловленные системы лучше решаются путем регуляризации, чем путем увеличения численной точности. Ищите «неправильную регуляризацию» для кровавых подробностей.

n00b
источник
2

Я мог бы попробовать библиотеку Трилино. Они имеют шаблонные библиотеки разреженных матриц под Tpetra (которая должна заменить Epetra, их оригинальную библиотеку разреженных матриц). Вы можете создавать шаблоны double, complex, quad и т. Д., И, возможно, они имеют самый большой выбор решателей (как прямых, так и итеративных) рядом с PETSc.

Редактировать: после прочтения комментариев непосредственная полезность Tpetra кажется немного сомнительной с точностью до четверки ...

Джесси Чан
источник
К сожалению, большинство решателей еще не работают с Tpetra :-(
Вольфганг Бангерт
Это прискорбно. Я надеялся, но не был уверен в том, насколько далеко зашло развитие Tpetra (отсюда и «предполагается заменить Epetra»: P). Я думал, что, по крайней мере, библиотека Белоса (т.е. решатели Trilinos, не основанные на обертках вокруг сторонних кодов) поддерживает Tpetra?
Джесси Чан
Я думаю, что есть Belos2. Несомненно, проект Trilinos отдает свои ресурсы Tpetra, и это будет стандартным пакетом в будущем. Я думаю, что они еще не совсем там, хотя.
Вольфганг Бангерт
Я даже не подозреваю, что меня __float128поддерживает Tpetra, не говоря уже о четырехместном. Tpetra не является автономной и не все заголовки, и, даже если это было так, такие вещи, как std::complexработать только с floatи double.
Джед Браун
1

Набор инструментальных средств Multiprecision для MATLAB поддерживает разреженные матрицы и специально оптимизирован для вычислений с четверной точностью.

Вот временные детали для разреженных решателей с четверной точностью: Прямые решатели для разреженных матриц

(Я автор набора инструментов).

Павел Холобородько
источник