LAPACK

14 views
Skip to first unread message

Evgenii Rudnyi

unread,
Nov 24, 2007, 1:02:50 PM11/24/07
to matrixprog...@googlegroups.com
Добрый вечер,

Вот некоторые результаты, которые я получил с LAPACK на моем ноутбуке.

Для факторизации обычной матрицы в LAPACK используется подпрограмма
dgetrf, которая основана на использовании BLAS уровня 3. В то же время для
той же цели можно воспользоваться dgetf2, где уже будет использоваться
только BLAS 2.

Как точку отсчета я взял LAPACK с BLAS, который вложен в LAPACK
(неоптимизированный BLAS). Для случайно сгенерированной матрицы 2000x2000
время факторизации составило

dgetf2 13.6 секунды
dgetrf 4.2 секунды

Видно, что переход с уровня BLAS2 на BLAS3 дает существенное ускорение.
Еще раз, в обоих случаях использовался неоптимизированный BLAS, просто
компиляция LAPACK и BLAS - того, что есть.

Следующий шаг - это использование ATLAS вместо BLAS. ATLAS также меняет
некоторые программы в LAPACK, скажем подпрограмму, где определяется размер
блока. С ATLAS результаты получились следующие

dgetf2 13.6 секунды
dgetrf 2.7 секунды

То есть, на уровне dgetf2 все осталось без изменений, а вот для dgetrf
заметно ускорение.

Это показывает, что наибольшее изменение приносит замена алгоритма, в
данном случае переход к блочным алгоритмам. Аппаратное ускорение также
важно, то эффект уже меньше.

Евгений

LG

unread,
Nov 26, 2007, 4:39:46 AM11/26/07
to matrixprogramming_ru
Добрый день, Евгений.

Ваше очень интересное сообщение меняет представление о том, как
нужно работать с матрицами. Мне кажется, к нему тесно примыкают
вопросы об
опрерационных системах и о процессорах. Только нужно знать, где
остановиться.

Леонид.

Evgenii Rudnyi

unread,
Dec 1, 2007, 4:11:18 PM12/1/07
to matrixprog...@googlegroups.com
> Ваше очень интересное сообщение меняет представление о том, как
> нужно работать с матрицами. Мне кажется, к нему тесно примыкают
> вопросы об
> опрерационных системах и о процессорах. Только нужно знать, где
> остановиться.

Мне кажется, что все зависит от цели. Так, я не хочу сказать, что
невозможно сделать новую библиотеку, которая будет быстрее LAPACK.
Скажем, ссть интересное альтернативное развитие в рамкам проекта FLAME

http://www.cs.utexas.edu/users/flame/

Хотя, должен сказать, я так и не нашел времени более внимательно
посмотреть на это.

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

Я помню, одно время я использовал библиотеку GNUSSL на C++, поскольку я
сам пишу уже давно на C++

http://ftp.gnu.org/pub/old-gnu/gnussl/

Все было очень итересно - крутые шаблоны, но затем я как-то сравнил ее
производительность с LAPACK. После этого я окончательно перешел на LAPACK.

Вот сейчас мне надо найти хороший решатель для разреженных
несимметричных матриц большой размерности (около 1 миллиона). UMFPACK,
который я использую, уже не тянет. Я списался с автором UMFPACK и он
сказал, что программа AMD, которая у него переупорядочивает матрицу, для
больших размерностей делает это уже не эффективно.

К слову сказать он сказал, что его CHOLMOD быстрее чем TAUCS и дал ссылку

http://portal.acm.org/citation.cfm?id=1236465

но у меня нет к ней доступа.

Так что мой план на ближайшее будущее - это попробовать MUMPS и PARDISO.
С MUMPS я уже работал для симметричных матриц - впечателение было
хорошее. MUMPS поддерживает также параллельные вычисления:

http://modelreduction.com/doc/papers/rudnyi06tam.pdf

С другой стороны Intel лицензировал PARDISO

http://www.intel.com/cd/software/products/asmo-na/eng/266853.htm

Это говорит, что должен быть неплохой решатель.

Евгений

KSergP

unread,
Dec 6, 2007, 4:13:37 AM12/6/07
to matrixprogramming_ru
Добрый день.

У меня возник вопрос, правильно ли я понимаю, что
функция dgetf2 основана на BLAS 2,
а
getrf на BLAS 3 ??

Evgenii Rudnyi

unread,
Dec 6, 2007, 2:54:39 PM12/6/07
to matrixprog...@googlegroups.com

Правильно. Про это написано в самом начале этой подпрограммы

http://www.netlib.org/lapack/double/dgetrf.f

и также можно увидеть, что она вызывает dgetf2 для блоков.

А здесь коротко написано про блочные алгоритмы

http://www.netlib.org/lapack/lug/node60.html

Block Algorithms and their Derivation

Reply all
Reply to author
Forward
0 new messages