Перейти к содержанию
    

Тонкости работы LAPACK

Гость pdk

Имеется следующая проблема:

понадобилось мне разложение Шура, поиски привели к функции DHSEQR из LAPACK, с помощью f2c перевел с фортрана на c все что понадобилось (всего ~50 файлов), работает, но очень медленно.

Для матрицы N=38 0.32сек ( i920, MSVS без оптимизации).Сложность задачи всего 20*n^3 = 1MFLOP для N=38.

В MATLAB же даже для N=1000 функция schur выполняется мгновенно (судя по документации внутри тот же LAPACK ).

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имеется следующая проблема:

понадобилось мне разложение Шура, поиски привели к функции 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 eort to write, debug and tune a nal production

version of the new QR algorithm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LAPACK - исчадие ада :), где любой, даже простейший алгоритм, оказывается разбит на огромное множество функций. А уж переводить с Фортрана на С удовольствие маленькое, и хотя это на первый взгляд не очень сложная работа, но ошибки лепятся только так.

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

 

P.S. Если кто знает, где можно добыть этот Справоник в электронном виде, - отзовитесь! Мечтаю такой иметь, но все, что удается скачать из интернета - под паролем "пошлите SMS-ку", а там деньги списывают, а пароля не дают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. Если кто знает, где можно добыть этот Справоник в электронном виде, - отзовитесь! Мечтаю такой иметь, но все, что удается скачать из интернета - под паролем "пошлите SMS-ку", а там деньги списывают, а пароля не дают.

 

Вот тут вот без пароля, SMS-ки, денег и совершенно без обмана:)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость pdk

Прорвался!

Дело оказалось в следующем: имеется функция dlamch которая вычисляет всякие мин/максы зависящие от конкретного вещественного типа, внутри её есть static переменная благодаря которой трудоемкие вычисления выполняются однократно.... а вот static при конвертации я и потерял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

> Справочник алгоритмов на языке АЛГОЛ.

> Вот _тут_ вот без пароля, SMS-ки, денег и совершенно без обмана

Либрусек говорит "Access denied" -- требуется абонемент?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Без проблем скачал справочник на "Библиотеке Ихтика"

http://ihtika.net/?qwe=loginfromfile&f...3256989c860bc51

Изменено пользователем tulebaev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...