Пересборка пакета для увеличения производительности (Нужно пересобрать Atlas и Lapack)

Knoppix

Модераторы: Warderer, Модераторы разделов

Аватара пользователя
Ortis
Сообщения: 117
ОС: Mandriva 2011, Kubuntu 12.04

Пересборка пакета для увеличения производительности

Сообщение Ortis »

Я пользователь Дебиана около 2 лет, но ни разу не собирал сам пакеты, только пользовался готовыми, как с официальных, так и со сторонних репозиториев. Имеется следующая проблема: необходимо считать научные задачки, вычисления занимают часы или даже несколько суток. При вычислениях большую работу делаю через Lapack, поэтому хочется пересобрать Lapack и Atlas с использованием хотя бы SSE3 (расчёты ведутся на процессоре семейства core2). Никакие другие флаги менять я не собираюсь. Как это сделать простейшим способом?
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Пересборка пакета для увеличения производительности

Сообщение watashiwa_daredeska »

Коротко: проще всего модифицировать существующий пакет.

Что нужно:
1. Поставить пакеты build-essential и dpkg-dev.
2. Добавить в sources.list репозитории исходников — достаточно тех, в которых лежат те пакеты, которые Вас интересуют. Для этого скопируйте в sources.list строчку нужного репозитория и замените в начале строки "deb" на "deb-src". Не забудьте сделать apt-get update после этого.
3. Установить нужные пакеты исходников со всеми зависимостями, необходимыми для сборки. Проще всего это сделать, наверное, командой apt-src install package (команда ставится из пакета apt-src). В будущем, эта команда может обновлять исходники до новых версий пакета сохраняя Ваши модификации.
4. Модифицировать, что нужно. Конкретно для вашего случая: сборка пакета производится makefile'ом debian/rules, копать надо начинать с него. (см. Main building script: debian/rules)
5. Добавить запись в debian/changelog — из нее при сборке будет взята версия пакета. Запись должна иметь определенный формат, поэтому лучше делать по образу и подобию остальных. В версии нужно менять только ту часть, которая идет после дефиса. Желательно в большую сторону. (см. Debian changelog: debian/changelog, Version).
6. Собрать пакет командой dpkg-buildpackage -rfakeroot в каталоге пакета (в том, в котором каталог debian, а не в самом debian/ или где еще). Если ничего не накосячено, пакет успешно соберется и появится в каталоге уровнем выше.
7. PROFIT.

Чтобы удобно было использовать, я бы рекомендовал сложить собранные пакеты в свой локальный репозиторий и поиграть с apt-preferences, чтобы дистрибутивные версии не заменяли собранные пакеты когда ни попадя.

P.S. Всё, кроме установки пакетов, делается с правами пользователя, а не root.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Пересборка пакета для увеличения производительности

Сообщение sash-kan »

а в ридми не написали, как пересобрать?
http://packages.debian.org/changelogs/pool...version3.8.3-25
QUOTE писал(а):See README.Debian on how to rebuild Atlas optimized packages.

или написали недостаточно подробно?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Ortis
Сообщения: 117
ОС: Mandriva 2011, Kubuntu 12.04

Re: Пересборка пакета для увеличения производительности

Сообщение Ortis »

sash-kan писал(а):
09.11.2011 14:49
а в ридми не написали, как пересобрать?
http://packages.debian.org/changelogs/pool...version3.8.3-25
See README.Debian on how to rebuild Atlas optimized packages.

или написали недостаточно подробно?

Я не смог выцепить достаточно информации, хотя и приступал к ней 2 раза. Впрочем, не поручусь, что это невозможно.
Спасибо сказали:
Аватара пользователя
Ortis
Сообщения: 117
ОС: Mandriva 2011, Kubuntu 12.04

Re: Пересборка пакета для увеличения производительности

Сообщение Ortis »

watashiwa_daredeska писал(а):
09.11.2011 12:53
Коротко: проще всего модифицировать существующий пакет.

Что нужно:
1. Поставить пакеты build-essential и dpkg-dev.
2. Добавить в sources.list репозитории исходников — достаточно тех, в которых лежат те пакеты, которые Вас интересуют. Для этого скопируйте в sources.list строчку нужного репозитория и замените в начале строки "deb" на "deb-src". Не забудьте сделать apt-get update после этого.
3. Установить нужные пакеты исходников со всеми зависимостями, необходимыми для сборки. Проще всего это сделать, наверное, командой apt-src install package (команда ставится из пакета apt-src). В будущем, эта команда может обновлять исходники до новых версий пакета сохраняя Ваши модификации.
4. Модифицировать, что нужно. Конкретно для вашего случая: сборка пакета производится makefile'ом debian/rules, копать надо начинать с него. (см. Main building script: debian/rules)
5. Добавить запись в debian/changelog — из нее при сборке будет взята версия пакета. Запись должна иметь определенный формат, поэтому лучше делать по образу и подобию остальных. В версии нужно менять только ту часть, которая идет после дефиса. Желательно в большую сторону. (см. Debian changelog: debian/changelog, Version).
6. Собрать пакет командой dpkg-buildpackage -rfakeroot в каталоге пакета (в том, в котором каталог debian, а не в самом debian/ или где еще). Если ничего не накосячено, пакет успешно соберется и появится в каталоге уровнем выше.
7. PROFIT.

Чтобы удобно было использовать, я бы рекомендовал сложить собранные пакеты в свой локальный репозиторий и поиграть с apt-preferences, чтобы дистрибутивные версии не заменяли собранные пакеты когда ни попадя.

P.S. Всё, кроме установки пакетов, делается с правами пользователя, а не root.

Спасибо большое!

Пункты 1-2 выполнил. Для 3 потребовалось доставить ещё несколько бинарных пакетов: liblapack-pic libblas-test cdbs, поставил на закачку, но интернет сегодня дохлый. Завтра продолжу.
Спасибо сказали:
Аватара пользователя
Ortis
Сообщения: 117
ОС: Mandriva 2011, Kubuntu 12.04

Re: Пересборка пакета для увеличения производительности

Сообщение Ortis »

watashiwa_daredeska писал(а):
09.11.2011 12:53
4. Модифицировать, что нужно. Конкретно для вашего случая: сборка пакета производится makefile'ом debian/rules, копать надо начинать с него. (см. Main building script: debian/rules)

Запускаю debian/rules, плюётся и ничего не делает. Не совсем понял пока, почему.

Код: Выделить всё

aelius@c2d-3:~/ComputerScience/rebuild/atlas-3.8.3$ ./debian/rules
/usr/share/cdbs/1/rules/simple-patchsys.mk:31: WARNING:  simple-patchsys.mk is deprecated - please use source format 3.0 (quilt) instead
test -x debian/rules

Прочитал руководство на Странице Debian, прочитал /debian/rules --help, решения пока не нашёл.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Пересборка пакета для увеличения производительности

Сообщение watashiwa_daredeska »

Ortis писал(а):
18.11.2011 12:14
Запускаю debian/rules
Его не надо запускать. Его запускает dpkg-buildpackage.
Спасибо сказали: