LINUX.ORG.RU

Многопоточный LAPACK

 , , ,


0

1

Посоветуйте многопоточный lapack, и мануал по сборке, собрал ATLAS на своей системе, прирост скорости появился, но используется только одно ядро. Где-то читал, что при установке ATLAS сразу и многопоточные билдятся, но как их слинковать, понять не могу.
Напрямую LAPACK и BLAS не использую, через LAPACKE.

★★★★

Для атласа надо линковать либу ptf77blas. Прирост будет только на алгоритмах, использубщих blas level 3.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Нахождение обратной матрице к симметричной неопределенной вроде использует level3. Или нужно напрямую использовать blas, чтобы профит появился?

aptyp ★★★★
() автор топика
Ответ на: комментарий от aptyp

Еще есть вариант статикой слинковать liblapack.a libatlas.a libpt77blas.a

Reset ★★★★★
()
Ответ на: комментарий от morse

gotoBLAS практически рипнулась, заменена на openblas, который даже медленне нетюненного ATLAS, sub и acml проприетарно.

aptyp ★★★★
() автор топика
Ответ на: комментарий от aptyp

Я использую lapack (atlas), который сам собрал.

Ничего не понял. Раз собрал сам lapack, то и используй его и не линкуй системный. Вообще, atlas при компиляции может и lapack собрать, но делает он это исключительно для линковки lapack'овских so'шников с atlas'ом. lapack весь построен на блочных алгоритмах и если blas level3 у тебя распараллелена, то и lapack оказывается автоматически распараллеленным.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Да, использую собранный и аккуратно упакованный в пакет atlas, но он использует только одно ядро. Сейчас таки собрал plasma, она работает.

aptyp ★★★★
() автор топика
Ответ на: комментарий от Zodd

lapack работает с матрицами _только_ с помощью вызовов blas, при этом многие алгоритмы из его состава работают с матрицами блочно и используют функции blas level3, которые эффективно параллелятся. Соответственно, если нижележащая реализация blas распараллелена, то будет использоваться несколько ядер. Ничего дополнительно подключать не надо.

Reset ★★★★★
()
Ответ на: комментарий от aptyp

Я бы тогда проверил наличие параллельности на нижележащем слое, запустив dgemm.

Reset ★★★★★
()
Ответ на: комментарий от psv1967

Работает в параллельном виде он отлично. Я выжимал из него для своего проца gflops близкие к тем, что указаны на сайте интеля :)

Reset ★★★★★
()
Ответ на: комментарий от Reset

о, увидел на гитхабе опенбласа как установить многопоточность. спс.

aptyp ★★★★
() автор топика
Ответ на: комментарий от aptyp

мы чё исходный код будем выкладывать что ли?

Ну а ежели не будете, то какая разница? Под линукс интели дают за так, но для некоммерческого пользования.

anonymous
()
Ответ на: комментарий от anonymous

Ну а организации коммерческое использование, так что вот ТСу и не подходит

pylin ★★★★★
()
Ответ на: комментарий от Reset

А использовал только blas3 функции? PLASMA использует не многопоточный BLAS, распараллеливает на верхнем уровне, и соответствующее ускорение есть. Интересно, что будет, если использовать LAPACKE с параллельным BLAS.

aptyp ★★★★
() автор топика
Ответ на: комментарий от Reset

Собрал многопоточный OpenBLAS, PLASMA получается лучше.

aptyp ★★★★
() автор топика
Ответ на: комментарий от aptyp

А использовал только blas3 функции?

Да, blas1 и 2 не параллелятся почти никак.

Reset ★★★★★
()
Ответ на: комментарий от aptyp

OpenBLAS вообще не щупал. Сравнивал mkl, acml, atlas на функции dgemm (умножение произвольных матриц). На моих q8200 и q9550 получилось mkl<atlas<acml. Удивительно, но родная интелевская библиотека показала худшие результаты. Сравнивал где-то полтора года назад на текущих на тот момент версиях.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Ясно, просто мне нужно под виндой проект собрать, использующий atlas, пока не получается, думал на другое перейти. Спасибо!

aptyp ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.