Насколько полезен PETSc для плотных матриц?

14

Везде, где я видел, учебник / документы PETSc и т. Д. Говорят, что это полезно для линейной алгебры и обычно указывает, что разреженные системы принесут пользу. Как насчет плотных матриц? Я обеспокоен тем, о решении для плотного .AAx=bA

Я написал свой собственный код для CG и QMR на Фортране. Основная конструкция является разрывать код псевда и добавить BLAS подпрограмм везде , где это возможно ( ddot, dnrmи dgemv) с небольшим самонастраиваемым. Как это будет сравниваться с PETSc?

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

Любая помощь очень ценится.

расследование
источник

Ответы:

7

Если у вас плотные матрицы со структурой (например, быстрые преобразования, дополнения Шура и т. Д.), PETSc может быть полезен. В этих случаях вы не будете собирать полную матрицу.

Для собранных плотных систем в настоящее время PETSc использует PLAPACK, но распределение матриц в собственном формате PETSc не является лучшим для минимизации связи (для большинства операций). Джек Полсон, Мэтт Кнепли и я обсудили перенос плотной линейной алгебры PETSc на использование Elemental , более современной библиотеки плотных линейных алгебр Джека. Это еще не произошло, но мы сделаем это, когда у нас будет время.

Если вы хотите полнофункциональную библиотеку плотной линейной алгебры, используйте Elemental. Вероятно, для этих операций всегда будет более полный API, чем PETSc. Если вам нужно взаимодействовать с разреженными или несобранными системами, имеет смысл придерживаться PETSc и извлекать то, что вам нужно, чтобы использовать Elemental для плотных деталей (или помочь нам написать интерфейс PETSc для Elemental).

Джед браун
источник
Что бы вы ответили, если бы я работал над системой общей памяти?
Допрос
1
Вы можете использовать несколько процессов MPI или несколько потоков. Я не вижу особого смысла в написании параллельного программного обеспечения, которое работает только с разделяемой памятью, потому что обычно локальность памяти, о которой вы думаете, когда пишете для распределенной памяти, повышает производительность по сравнению со всеми, кроме лучших многопоточных реализаций. Если вам нужен только «последовательный» API, который использует потоки внутри для плотной линейной алгебры, вы можете использовать многопоточный BLAS.
Джед Браун
Я хочу, чтобы мои коды работали на моей базовой рабочей станции Xeon 12 (сейчас я не смотрю на кластеры). Я использую Intel MKL для (с резьбой) BLAS. Вы все еще рекомендуете попробовать PETSc?
Допрос
Если вам нужен только BLAS, вы довольны им и уже написали код, просто используйте его. Если вам нужна большая гибкость и / или возможность использовать распределенную память, вы можете использовать PETSc.
Джед Браун
Гибкость в плане? Распределенная память?
Допрос
5

О(N3)О(N2)

Поскольку вы упомянули, что находитесь в системе с разделяемой памятью, я бы порекомендовал libFLAME и / или PLASMA , но я не думаю, что они будут значительно быстрее, чем BLAS от производителя для операций вашего уровня 1 и уровня 2.

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

Джек Полсон
источник
Итак, из того, что я получаю, каждая последующая библиотека параллельной плотной линейной алгебры будет пытаться оптимизировать такие операции, как вычисление собственного вектора, решение системы, а не BLAS. Также Elemental выглядит действительно впечатляюще. Я обязательно побегу, когда смогу.
Дознание
Они обычно оптимизируют уровень 3 BLAS. Причина в том, что большинство людей, использующих библиотеку, будут выполнять большие вычисления, которые обычно можно сопоставить с BLAS уровня 3.
Джек Поулсон
Это потому, что BLAS 1/2 не может стать лучше? (Может быть, из-за свойства поверхности к объему?) O (N ^ 2) данных и O (N ^ 2) вычислений?
Дознание
Это потому, что BLAS 1 и 2 обычно являются членами более низкого порядка в вычислениях. Вся «игра» высокопроизводительной плотной линейной алгебры состоит в том, чтобы правильно смотреть на каждую операцию, чтобы вы могли вызывать xGEMM и друзей на как можно большую часть работы.
Джек Поулсон
Кроме того, да, тот факт, что они выполняют примерно такое же количество флопов, что и memops, является причиной того, что их избегают в максимально возможной степени.
Джек Полсон