2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Пакет многократной точности для BLAS и LAPACK
Сообщение18.08.2022, 18:57 
Один из самых востребованных пакетов линейной алгебры, реализованных с произвольной точностью:
https://github.com/nakatamaho/mplapack? ... i108436139
Все тесты прошли. Полная установка заняла 10 часов.

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение23.08.2022, 20:26 
Очень важно, что BLAS распараллеливается (при этом ничего дополнительно программировать не надо), т.к. практически все важные алгоритмы линейной алгебры (например, решение систем линейных уравнений, диагонализация, сингулярный анализ) используют BLAS. Перемножение двух квадратных матриц 4000 * 4000 занимает 40 с. на 12-ти ядерном компьютере для точности double-double (~32 десятичных знака). Тип binary128, реализованный программно в некоторых компиляторах (~33 десятичных знака) дает результат 105 с. Ось Ubuntu 22.04.1 под Windows (wsl2). Т.е. все расчеты можно проводить под виндами, используя полученные инклюды и либы (более 670 000 000 байт) при установке пакета.

 
 
 
 Posted automatically
Сообщение11.10.2022, 09:49 
 i  Тема перемещена из форума «Software» в форум «Околонаучный софт»
Причина переноса: тематика.

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение11.10.2022, 17:41 
traffic_lights
При числе обусловленности 1е-8, с какой точностью ищется "наименьший" (соотв. наименьшему С.З.) собственный вектор? То есть какой максимальный модуль отклонения получается? Для теста можно помножить случайную квадратную матрицу на нее же транспонированную, и если $rCond < 1e-8$, то протестить.

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение11.10.2022, 22:58 
ozheredov в сообщении #1566484 писал(а):
traffic_lights
При числе обусловленности 1е-8, с какой точностью ищется "наименьший" (соотв. наименьшему С.З.) собственный вектор? То есть какой максимальный модуль отклонения получается? Для теста можно помножить случайную квадратную матрицу на нее же транспонированную, и если $rCond < 1e-8$, то протестить.

Если имеется ввиду обусловленность $10^8$ по Евклидовой норме, то лапак обычно и так хорошо найдет все собственные вектора в двойной точности. Там в начале 2000 Ralha из Португалии додумался как устойчиво бидиагонализоваться, что все становилось устойчиво до обусловленности близкой к обратной от машинной точности. Помню выражение лица Деммеля, когда он читал постер с этими результатами на IWASEP3. А теперь это все и устойчивый ранг-ревеалинг в лапаке нативно, так что с такой обусловленностью там проблем не бывает.

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение11.10.2022, 23:53 
ilghiz в сообщении #1566523 писал(а):
Если имеется ввиду обусловленность $10^8$ по Евклидовой норме


Имеется в виду наибольшее собственное значение, деленное на наименьшее.

ilghiz в сообщении #1566523 писал(а):
Помню выражение лица Деммеля


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

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение12.10.2022, 00:26 
ozheredov в сообщении #1566534 писал(а):
Если ТС или Вы имеете возможность провести упомянутый выше тест, с удовольствием взгляну на результаты. Остальное меня не убеждает.

На обычном лапаке я конечно могу провести тест, но я ваш тест не понял.
Цитата:
При числе обусловленности 1е-8, с какой точностью ищется "наименьший" (соотв. наименьшему С.З.) собственный вектор? То есть какой максимальный модуль отклонения получается? Для теста можно помножить случайную квадратную матрицу на нее же транспонированную, и если $rCond < 1e-8$, то протестить.

То есть берем случайную матрицу и умножаем на транспонированную. Ок, получили положительно определенную с плохой обусловленностью. А дальше-то что делать?

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение12.10.2022, 00:35 
ilghiz в сообщении #1566538 писал(а):
То есть берем случайную матрицу и умножаем на транспонированную. Ок, получили положительно определенную с плохой обусловленностью.

Все правильно.
ilghiz в сообщении #1566538 писал(а):
А дальше-то что делать?

А вот дальше я не продумал :oops:
У меня была мысль, что "наименьший" (в смысле своего СЗ) вектор надо знать теоретически, но потом в голове глюкнуло и я перешел к случайным матрицам.
А можно я Вам кину матрицу в ЛС а Вы найдете ее два - три минимальных вектора? Их теоретические значения я знаю.

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение12.10.2022, 00:42 
traffic_lights в сообщении #1563347 писал(а):
Перемножение двух квадратных матриц 4000 * 4000 занимает 40 с. на 12-ти ядерном компьютере для точности double-double (~32 десятичных знака).

Странно как-то. Я когда-то тоже писал такой блас, но только для double-double и float-float, последний исключительно для Нвидии, так как у них тогда двойная точность очень медленно на графических картах была.

Так вот одна пара mad для double-double требует 20 обычных double флопов. 12 ядерник за 3ГГц такт дает 8 флопc, то есть 12*3*8/20=14.4ГФлопсов в double-double, и произведение 4К квадратных матриц должно выполниться за 4*4*4*2/14.4=8.9 секунд, то есть или 12 ядерник из 2010 года с 12 мультитредными и 6 реальными ядрами и 4 флопами на ядро, или что-то где-то очень криво реализовано. Сама архитектура double-double при старании ужасно хорошо ложится на процессорный конвейер, если сразу 4 madd считать, а тут, похоже, об этом подзабыли и конвейер-то пустует.

-- 11.10.2022, 23:43 --

ozheredov в сообщении #1566541 писал(а):
А можно я Вам кину матрицу в ЛС а Вы найдете ее два - три минимальных вектора? Их теоретические значения я знаю.

Конечно шлите, попробую обязательно!

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение12.10.2022, 00:46 
ilghiz
Thanks, пришлю )

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение12.10.2022, 10:04 
Порядки ошибок в собственных векторах и собственных значениях не совпадают (для собственных векторов критична близость соответствующих собственных значений, так что число обусловленности не имеет прямого отношения к точности собственных векторов).

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение14.10.2022, 22:34 
Пользуйтесь только динамическими библиотеками. При использовании статических библиотек могут возникнуть проблемы в точности расчетов (их можно обойти, но размеры экзешников сильно "распухнут").

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение15.10.2022, 20:52 
traffic_lights в сообщении #1566706 писал(а):
Пользуйтесь только динамическими библиотеками. При использовании статических библиотек могут возникнуть проблемы в точности расчетов...

Честно говоря эта фраза указывает на тот факт, что библиотека очень сырая и изобилует багами. В то же время, я знаком с товарищем Nakata Maho еще примерно с 2006-2007, и где-то в 2008 и он и я начали делать эту самую double-double но у него распиариться получилось чуть быстрее, чем у меня и я перестал этим заниматься. Но я совершенно не могу сказать, что Nakata Maho косячник - у него всегда все было очень надежно и стабильно. Поэтому фраза в топике, который я цитирую вызывает удивление, либо ТС - что-то тут пиарит, или ТС не в курсе, или еще как, но после таких слов просто очень сильные сомнения к ТС возникают. Сомнений в надежности софта Nakata Maho у меня нет. Может ТС этот софт просто криво собрал и у него столько кривизны вылезло и он как-то тут аргументированно про это расскажет, может ему помощь в сборке нужна, а он боится попросить :)

 
 
 
 Re: Пакет многократной точности для BLAS и LAPACK
Сообщение15.10.2022, 23:31 
ilghiz в сообщении #1566793 писал(а):
traffic_lights в сообщении #1566706 писал(а):
Пользуйтесь только динамическими библиотеками. При использовании статических библиотек могут возникнуть проблемы в точности расчетов...

Честно говоря эта фраза указывает на тот факт, что библиотека очень сырая и изобилует багами ...

Ошибаетесь - почитайте о статических библиотеках. У меня прошли все тесты с динамическими и статическими библиотеками (умело собранными) с одинаковыми результатами. Статические библиотеки использую для студентов.

 
 
 [ Сообщений: 14 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group