Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новости библиотеки алгоритмов


Информационный Канал Subscribe.Ru

10.10.05 Новости за сентябрь задержались на десять дней. Можно было бы сделать выпуск вовремя, но выкладывать на сайт неполную версию разделов "решение систем линейных уравнений" и "операции с матрицами", в которой новые исходники перемежаются со старыми, не хотелось - а если не выкладывать, то в выпуске новостей просто было нечего писать. Но теперь всё, что я хотел успеть сделать до конца сентября, уже сделано, так что можно сообщить о результатах.

Наибольшему изменению подвергся раздел Операции с матрицами и векторами. Из библиотеки LAPACK перенесен ряд подпрограмм. Для трех классов матриц (общего вида, симметричных и положительно определенных симметричных) перенесены подпрограммы факторизации (LU/LDLT/Холецкого), обращения, вычисления определителя и оценки числа обусловленности. Для матриц обшего вида также пересены алгоритмы QR- и LQ-разложения, и новый, более функциональный и надежный, алгоритм SVD-разложения.

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

Раздел Решение систем линейных уравнений также подвергся модификации. Часть алгоритмов была классифицирована, как устаревшие, появились новые алгоритмы - на основе LU-разложения (для систем общего вида) и на основе разложений Холецкого и LDLT (для систем с симметричными матрицами).

Анонсированные ранее планы по ускорению базовых операций линейной алгебры частично реализованы - в библиотеку AP для С++ добавлены подпрограммы, ускоряющие линейные операции с векторами, столбцами и строками матриц (аналог Level 1 BLAS) за счет развертки циклов и использования указателей для доступа к внутренней памяти матриц. Как мне кажется, теперь быстродействие линейных операций находится на максимальном достижимом без использования SSE (или его аналогов) уровне.

Относительно оптимизации исходников на Delphi пока ничего сказать не могу. В Delphi реализован крайне неэффективный механизм работы с многомерными массивами, так что быстродействие алгоритмов линейной алгебры могло бы быть раз в пять выше, и оптимизация безусловно нужна. Вместе с тем, вряд ли в ближайшее время у меня найдется время на эту работу. Ну а оптимизация программ на Visual Basic... этот язык изначально не предназначен для скоростных вычислений, так что здесь и речи быть не может о какой-либо оптимизации, кроме алгоритмической.

Таким образом, на данный момент С++ версии алгоритмов линейной алгебры являются самыми скоростными из представленных на сайте. Следом за ними идет Delphi, отставая в несколько раз (точная величина отставания зависит от используемого компилятора С++), а Visual Basic скромно плетется в конце. Надеюсь в ближайшее время сравнить быстродействие алгоритмов линейной алгебры на разных компиляторах и в разных ситуациях, и представить общественности результаты.

Ну и последняя новость - проведен очередной редизайн сайта. У меня пока нет времени провести всесторонную проверку нового дизайна в различных браузерах (я не профессиональный дизайнер, так что у меня установлен только IE), если кто-то из посетителей заметит баги в новом дизайне, просьба сообщить об этом мне.

Бочканов Сергей
e-mail: grayscale@rambler.ru
www: http://alglib.manual.ru/

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.prog.alglibnews
Архив рассылки
Отписаться
Вспомнить пароль

В избранное