LINUX.ORG.RU

LAPACK 3.3.0

 , ,


0

3

LAPACK (Linear Algebra PACKage) — библиотека для решения задач линейной алгебры, написанная с использованием высокооптимизированной библиотеки BLAS (Basic Linear Algebra Subprograms). LAPACK широко используется различными крупными компаниями для математических вычислений. В частности в Intel MKL, AMD Core Math Library, Sun Performance Library, HP's Mathematical Software Library, а также многих других.

В новой версии, благодаря вкладу компании Intel, добавлен стандартный API для языка C (внимание: распространяется в отдельном тарболле с названием lapacke.tgz). Также LAPACK стал полностью потокобезопасным (thread safe). SLAMCH и DLAMCH были последними небезопасными функциями. А также добавлено вычисление полной CS-декомпозиции(?) и ускорены некоторые функции.

Официальный сайт

>>> Подробности

★★★

Проверено: annoynimous ()

Исправляли, исправляли, да не выисправляли.

В новой версии благодаря

В новой версии, благодаря

yoghurt ★★★★★ ()

Хорошая новость. Теперь еще амдэшникам ACML надо бы подтянуть до актуальной версии.

terminat0r ()

C интерфейс это конечно хорошо, но уже как-то привычно дергать всё по-фортрановски через указатели.

Reset ★★★★★ ()

А оно параллельное или как? На кластере можно запустить? Я в этом не спец, но просто прикинул, что если есть библиотека неких базовый операций, которые сами по себе параллельны, то со всякими MPI мудохаца не нужно. Или я не прав?

dizza ★★★★★ ()

> Также LAPACK стал полностью потокобезопасным (thread safe)

Шёл 2010-й год...

Нет, математика там хорошая, спору нет, но как так можно...

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

LAPACK, как и BLAS — стандарт, поэтому ищите подходящие для ваших нужд реализации. В новости речь идет, как я понимаю, об эталонной реализации.

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

Для кластера есть scalapack, но там имеются не все алгоритмы из lapack'а.

Reset ★★★★★ ()

> LAPACK широко используется различными крупными компаниями для математических вычислений. В частности в Intel MKL...

Т.е. математические библиотеки Intel, AMD, Sun, HP используют код LAPACK с netlib.org ? И зачем они тогда нужны? :) Думается, они все лишь предоставляет «классический» интерфейс LAPACK для тех кому это надо, а закодировано там всё на суровом асме.

Фактически и BLAS, и LAPACK стоит рассматривать как интерфейсы функций линейной алгебры, которые каждый реализует как умеет. Да, на netlib.org можно скачать некоторую типовую реализацию на фортране, но насколько я понимаю, на практике она нигде не используется в чистом виде.

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

LAPACK для компов с общей памятью. Для разделяемой памяти (кластеров) есть scaLAPACK. Но вообще для реальных задач лучше что-нибудь более высокоуровневое использовать, например, PETSc.

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

> на практике она нигде не используется в чистом виде.

Используется в форме ATLAS. Вообще, lapack, это «высокоуровневая» линейная алгебра. На «низком» уровне находится BLAS, который обычно и тюнят под железо.

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

Нет, под железо затачивают blas, а lapack если и тюнят, то совсем минимально. Он же высокоуровневый.

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

Да. Конечно, LAPACK максимально использует BLAS, в предположении что он заточен на локальное желелзо. Так что именно производительность BLAS является узким местом. Но, наверное, LAPACK тоже оптимизируют, а не используют как есть с netlib.

Ну а ATLAS, по-моему, это уже не эталонная реализация. Да её можно забрать с netlib.org, но там же есть и типовой BLAS на фортране.

ATLAS, кстати, по моим тестам на удивление неплохую производительность даёт. Наверное его используют где-то. Хотя всё-равно он проигрывает Goto-BLAS (Гото - это японец ;) ) и BLAS из Intel MKL.

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

> ATLAS ... проигрывает Goto-BLAS (Гото - это японец ;) ) и BLAS из Intel MKL.

Да, так и есть. У ATLAS только одно преимущество - он free.

MKL - закрытый nonfree

GotoBLAS - nonfree, хоть и opensource

Led ★★★☆☆ ()

Вот это я понимаю прикладные программные разработки. Гложет чувство зависти.

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

C интерфейс это конечно хорошо, но уже как-то привычно дергать всё по-фортрановски через указатели.

По фортрановски — это через указатели? о_О Семь лет писал математику на Фортране, указателями пользовался 2 раза, и то можно было, как теперь кажется, без этого обойтись. Фортран как раз хорош тем, что никакие указатели для вычислений не нужны.

Кстати, где тут Сильвия, утверждавшая, что LAPACK больше не нужен, поскольку его полностью заменили на clapack?

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

По фортрановски — это через указатели?

Когда фортрановские функции используешь из Си, то да :) А я его только из Си и использую :)

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

Не использовал goto blas, но на моих q8400s и q9550 производительность близкую к теоретической для данных камней показывает именно atlas. По скорости у меня получается так: atlas > acml > mkl >> generic blas

Reset ★★★★★ ()

Фортран — хорош и годен. А теперь покажите мне библиотеку на Лиспе, которая жила бы так же долго и имела привязку хотя бы к Си.

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

>Вот это я понимаю прикладные программные разработки. Гложет чувство зависти.

Программирование, связанное с интенсивными вычислениями, обычно на порядок проще чем программирование бизнес-приложений.

Это Лешек Мацяшек.

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

> Фортран — хорош и годен. А теперь покажите мне библиотеку на Лиспе, которая жила бы так же долго и имела привязку хотя бы к Си.

CASы пойдут? Типа maxima или Axiom?

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

> Программирование, связанное с интенсивными вычислениями, обычно на порядок проще чем программирование бизнес-приложений.

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

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

Есть только одна проблема. Качество полученного кода вызывает кровавые слёзы. И программа хороша, и считает быстро, но как надо отладить или модифицировать...

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

> А теперь покажите мне библиотеку на Лиспе, которая жила бы так же долго и имела привязку хотя бы к Си.

Правило №1: В каждом треде, касающемся программирования, должен быть толстотролль, который упомянет лисп.

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

> Качество полученного кода вызывает кровавые слёзы. И программа хороша, и считает быстро, но как надо отладить или модифицировать...

Всё равно это будет быстрее, чем в случае красивого, но не _рабочего_ (в смысле не делающего то, что нужно) кода.

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

У программистов? Может быть. В текущей науке часто время - это более важный фактор. Время написания кода намного превышает время счета. Поэтому не грузись насчет качества, главное, чтоб физика не страдала. В тоже время всякие инженерные задачи вероятно требуют обратного.

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

> Но вообще для реальных задач лучше что-нибудь более высокоуровневое использовать, например, PETSc.

PETSc тоже использует LAPACK или ScaLAPACK.

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

> По скорости у меня получается так: atlas > acml > mkl >> generic blas

а на сколько велика разница?

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

На dgemm примерно так: 40gflops > 36 gflops > 28 gflops >> ~1 gflops

Reset ★★★★★ ()

2011 год на носу, а вменяемой математической библиотеки нет до сих пор :(

И приходится все алгоритмы самому реализовать.

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

> 40gflops > 36 gflops > 28 gflops >> ~1 gflops

То есть получается что мкл в полуторку медленей атласа? По мне эта разница чуть более чем дофига. У меня получалось примерно одинаково, ну да есть разница, но на проценты. К тому же зависит от размера матриц довольно сильно. Смотрел год-полтора назад, может что изменилось с того времени. Остановился на мкл, ибо там много чего еще кошерного есть окромя бласа.

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

То есть получается что мкл в полуторку медленей атласа?

да

К тому же зависит от размера матриц довольно сильно

естественно зависит, я смотрел на матрицах размерности > 5000

Reset ★★★★★ ()

Раз уж зашла про это речь

а кто что-нибудь скажет про Eigen? Я пользуюсь им в плюсах для матричной арифметики, и по сравнению с BLAS код получается примерно в 1000 раз более короткий и читаемый. А если судить по их бенчмарку, то еще и более быстрый.

gaga ()
Ответ на: Раз уж зашла про это речь от gaga

Re: Раз уж зашла про это речь

> Eigen

хрень какаято. атлас опустили ниже некуда. откуда у них руки растут?

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

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

Сейчас мне нужна реализация аппроксимации изображений симплекс-сплайнами. И опять реализация отсутствует.

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

lapack отвечает только за линейную алгебру

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

> > Также LAPACK стал полностью потокобезопасным (thread safe)

Шёл 2010-й год...

Нет, математика там хорошая, спору нет, но как так можно...

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

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

Подозреваю, что их потуги сводятся к убиранию статиков и глобальных переменных. Больше ничего такого, что может мешать многопоточности, в lapack нет.

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

Если открыть, скажем github, и посмотреть кто-что пишет, то можно понять, что разработка на серьезном уровне процентов на 50 состит из написания велосипедов или написания вообще не реализованных штук.

Те, кто кричат про стандартные решения везде и повсюду, ничего не писали серьезного. Так что все нормально.

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

> Время написания кода намного превышает время счета.

Это вы ребятам с World Community Grid раскажите, пусть посмеются

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

> 2011 год на носу, а вменяемой математической библиотеки нет до сих пор :(

GSL, GMP, LAPACK вот. Что еще надо?

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

>По скорости у меня получается так: atlas > acml > mkl >> generic blas

У меня почему то всегда программы с исп. mkl быстрее чем что либо другое. Но это не тест dgemm, а вполне специфическое приложение на поиск eigenvalues с stebz и stein. Думаю некоторую разницу дали в вашем случае еще и разные компиляторы? Это все тестировалось на одном процессоре, и если да то на амд или интел?

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

На intel q8400s и q9550 результаты примерно одинаковые. На 8400 все пропорционально медленнее, но качественно картина не меняется.

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

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

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

> Кстати gsl имеет некошерную лицензию, что исключает её серьезное использование.

Это какую же, ребе?

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