реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Тонкости работы LAPACK, на c
pdk
сообщение Aug 5 2010, 09:27
Сообщение #1


Частый гость
**

Группа: Validating
Сообщений: 107
Регистрация: 25-05-05
Из: Moscow
Пользователь №: 5 377



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

Кому приходилось сталкиваться с переносом кода из LAPACK, есть ли там тонкости?
Go to the top of the page
 
+Quote Post
Oldring
сообщение Aug 5 2010, 09:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(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, есть ли там тонкости?


Классическая книжка Голуба по матричным вычислениям вас спасет.
Там проще написать с нуля, чем переносить. Там десяток строк всё разложение Шура, а не полсотни файлов.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
pdk
сообщение Aug 5 2010, 10:06
Сообщение #3


Частый гость
**

Группа: Validating
Сообщений: 107
Регистрация: 25-05-05
Из: Moscow
Пользователь №: 5 377



В книгу обязательно загляну, но фраза из документации 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
Go to the top of the page
 
+Quote Post
Xenia
сообщение Aug 5 2010, 15:06
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



LAPACK - исчадие ада smile.gif, где любой, даже простейший алгоритм, оказывается разбит на огромное множество функций. А уж переводить с Фортрана на С удовольствие маленькое, и хотя это на первый взгляд не очень сложная работа, но ошибки лепятся только так.
Лично мне по душе алгоритмы из Справочника. Он так и упоминается везде как Справочник с большой буквы, ибо это есть непревзойденный Уилкинсон Дж., Райнш К. — Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра. То что, там используется язык Алгол, пугать не должно - тот язык интуитивно понятен каждому, кто уже знает С. Зато огромный плюс в том, что матрицы в Алголе имеют двухиндексную адресацию, подобно С, а не идиотскую фортрановскую систему держать матрицы в одномерном массиве, изощряясь исчислением в нем индекса.

P.S. Если кто знает, где можно добыть этот Справоник в электронном виде, - отзовитесь! Мечтаю такой иметь, но все, что удается скачать из интернета - под паролем "пошлите SMS-ку", а там деньги списывают, а пароля не дают.
Go to the top of the page
 
+Quote Post
Самурай
сообщение Aug 5 2010, 15:57
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



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


Вот тут вот без пароля, SMS-ки, денег и совершенно без обманаsmile.gif))
Go to the top of the page
 
+Quote Post
pdk
сообщение Aug 6 2010, 06:25
Сообщение #6


Частый гость
**

Группа: Validating
Сообщений: 107
Регистрация: 25-05-05
Из: Moscow
Пользователь №: 5 377



Прорвался!
Дело оказалось в следующем: имеется функция dlamch которая вычисляет всякие мин/максы зависящие от конкретного вещественного типа, внутри её есть static переменная благодаря которой трудоемкие вычисления выполняются однократно.... а вот static при конвертации я и потерял.
Go to the top of the page
 
+Quote Post
tulebaev
сообщение Aug 19 2010, 06:50
Сообщение #7





Группа: Новичок
Сообщений: 5
Регистрация: 25-07-08
Пользователь №: 39 210



> Справочник алгоритмов на языке АЛГОЛ.
> Вот _тут_ вот без пароля, SMS-ки, денег и совершенно без обмана
Либрусек говорит "Access denied" -- требуется абонемент?
Go to the top of the page
 
+Quote Post
tulebaev
сообщение Aug 27 2010, 07:09
Сообщение #8





Группа: Новичок
Сообщений: 5
Регистрация: 25-07-08
Пользователь №: 39 210



Без проблем скачал справочник на "Библиотеке Ихтика"
http://ihtika.net/?qwe=loginfromfile&f...3256989c860bc51

Сообщение отредактировал tulebaev - Aug 27 2010, 07:10
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 03:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016