Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Тонкости работы LAPACK
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
pdk
Имеется следующая проблема:
понадобилось мне разложение Шура, поиски привели к функции DHSEQR из LAPACK, с помощью f2c перевел с фортрана на c все что понадобилось (всего ~50 файлов), работает, но очень медленно.
Для матрицы N=38 0.32сек ( i920, MSVS без оптимизации).Сложность задачи всего 20*n^3 = 1MFLOP для N=38.
В MATLAB же даже для N=1000 функция schur выполняется мгновенно (судя по документации внутри тот же LAPACK ).

Кому приходилось сталкиваться с переносом кода из LAPACK, есть ли там тонкости?
Oldring
Цитата(pdk @ Aug 5 2010, 13:27) *
Имеется следующая проблема:
понадобилось мне разложение Шура, поиски привели к функции DHSEQR из LAPACK, с помощью f2c перевел с фортрана на c все что понадобилось (всего ~50 файлов), работает, но очень медленно.
Для матрицы N=38 0.32сек ( i920, MSVS без оптимизации).Сложность задачи всего 20*n^3 = 1MFLOP для N=38.
В MATLAB же даже для N=1000 функция schur выполняется мгновенно (судя по документации внутри тот же LAPACK ).

Кому приходилось сталкиваться с переносом кода из LAPACK, есть ли там тонкости?


Классическая книжка Голуба по матричным вычислениям вас спасет.
Там проще написать с нуля, чем переносить. Там десяток строк всё разложение Шура, а не полсотни файлов.
pdk
В книгу обязательно загляну, но фраза из документации LAPACK намекает что все может быть сложнее:
Цитата
Although we started from a working experimental code and
we reused some of the older Lapack 3.0 code (in xLAHQR), nevertheless it
took many weeks of full time e ort to write, debug and tune a nal production
version of the new QR algorithm
Xenia
LAPACK - исчадие ада smile.gif, где любой, даже простейший алгоритм, оказывается разбит на огромное множество функций. А уж переводить с Фортрана на С удовольствие маленькое, и хотя это на первый взгляд не очень сложная работа, но ошибки лепятся только так.
Лично мне по душе алгоритмы из Справочника. Он так и упоминается везде как Справочник с большой буквы, ибо это есть непревзойденный Уилкинсон Дж., Райнш К. — Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра. То что, там используется язык Алгол, пугать не должно - тот язык интуитивно понятен каждому, кто уже знает С. Зато огромный плюс в том, что матрицы в Алголе имеют двухиндексную адресацию, подобно С, а не идиотскую фортрановскую систему держать матрицы в одномерном массиве, изощряясь исчислением в нем индекса.

P.S. Если кто знает, где можно добыть этот Справоник в электронном виде, - отзовитесь! Мечтаю такой иметь, но все, что удается скачать из интернета - под паролем "пошлите SMS-ку", а там деньги списывают, а пароля не дают.
Самурай
Цитата(Xenia @ Aug 5 2010, 19:06) *
P.S. Если кто знает, где можно добыть этот Справоник в электронном виде, - отзовитесь! Мечтаю такой иметь, но все, что удается скачать из интернета - под паролем "пошлите SMS-ку", а там деньги списывают, а пароля не дают.


Вот тут вот без пароля, SMS-ки, денег и совершенно без обманаsmile.gif))
pdk
Прорвался!
Дело оказалось в следующем: имеется функция dlamch которая вычисляет всякие мин/максы зависящие от конкретного вещественного типа, внутри её есть static переменная благодаря которой трудоемкие вычисления выполняются однократно.... а вот static при конвертации я и потерял.
tulebaev
> Справочник алгоритмов на языке АЛГОЛ.
> Вот _тут_ вот без пароля, SMS-ки, денег и совершенно без обмана
Либрусек говорит "Access denied" -- требуется абонемент?
tulebaev
Без проблем скачал справочник на "Библиотеке Ихтика"
http://ihtika.net/?qwe=loginfromfile&f...3256989c860bc51
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.