Использует ли когда-нибудь PETSc библиотеки LAPACK для математики с разреженной матрицей?

10

Влияет ли компиляция PETSc с внешней библиотекой BLAS / LAPACK существенным образом на производительность разреженных матриц, или он использует эти библиотеки только для математики с плотной матрицей?

Дэн
источник
Вы можете использовать LU для предварительной обработки.
Стали

Ответы:

10

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

Он также использует Лапака для некоторого анализа, такого как оценки собственных значений и сингулярных значений Ланцоша или Арнольди, но они, как правило, не чувствительны к производительности.

Плотные операции «уровня 3» обычно появляются только в контексте, чувствительном к производительности, при использовании разреженных прямых решателей из сторонних библиотек (например, MUMPS, SuperLU, UMFPACK), и в этом случае заполнение в конечном итоге приводит к плотным проблемам, которые достаточно велики, чтобы извлечь выгоду из звонит BLAS.

Если вы полагаетесь на эти разреженные прямые решатели, применяемые для решения больших проблем, то стоит построить с настроенной реализацией BLAS, в противном случае это не имеет большого значения.

Джед браун
источник
Джед, как PETSc использует LAPACK для оценки собственных / единичных значений в случае распределенных матриц? Это тогда блочная рутина или ScaLAPACK?
Александр
Итерация Арнольди генерирует матрицу Гессенберга размерности, равную количеству итераций (скажем, 30 или 100). Собственные или особые значения матрицы Хессенберга вычисляются избыточно для каждого процесса с использованием LAPACK. Это гораздо быстрее, чем пытаться сделать это параллельно, поскольку размеры невелики и данные уже распределены с избыточностью. Похоже на Ланцоша.
Джед Браун