2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 сборка clapack
Сообщение24.05.2010, 10:39 
Аватара пользователя


20/12/08
236
изниоткуда
Пытаюсь собрать clapack.

Беру отсюда: http://www.netlib.org/clapack/clapack.tgz
Код:
CFLAGS+="-fPIC"
make f2clib
make blaslib
mkdir blas_obj
cd blas_obj
ar x ../blas_LINUX.a
gcc -shared *.o -o libcblas.so
mv libcblas.so /usr/local/lib
cd ../
rm -R blas_obj

Дальше пытаюсь подгрузить shared object и получаю "undefined symbol: d_cnjg"
Многочисленные попытки что-то подкрутить или взять другую версию clapack приводят лишь к другому имени символа после "undefined symbol".

Ладно, взял из дебиановских репов atlas-ную cblas (с ней все в порядке):
Код:
make cleanall
make f2clib
BLASLIB = ../../libcblaswr.a -L/usr/local/lib/sse2 -lcblas -latlas
make cblaswrap
make lapacklib
mkdir lapack_obj
cd lapack_obj
ar x ../lapack_LINUX.a
gcc -shared *.o -o libclapack.so
mv libclapack.so /usr/local/lib
cd ../
rm -R lapack_obj

Подгружая clapack.so, получаю "undefined symbol: pow_dd"

Замучился, честно говоря. Поэтому два вопроса уважаемой общественности:

Не являясь хорошим кодером на Сях, допускаю наличие у себя какой-то грубой ошибки. Может быть, подскажете, где?

Если же все в порядке и без друидской магии не обошлось, то подскажите, где можно взять уже собранную clapack (полную, не lapack_atlas)? в репах deb и rpm не нашел (м.б. плохо искал), на netlib.org бинарники clapack не выложены.

 Профиль  
                  
 
 Re: сборка clapack
Сообщение24.05.2010, 11:01 
Заслуженный участник


19/07/08
1266
Вы скорее всего забыли подключить какую-то библиотеку. Какую -- сказать тяжело не повторяя ваших действий.
И не зная, что у вас за система, какие версии компиляторов, и т.д. и т.п.
Но главный вопрос в том, почему вам именно cLapack нужен? Обычный фортрановский Lapack отлично подключается к программам на С. Есть свои тонкости, но на мой взгляд это на порядок проще и более последовательно.

 Профиль  
                  
 
 Re: сборка clapack
Сообщение24.05.2010, 11:15 
Аватара пользователя


20/12/08
236
изниоткуда
Archlinux, gcc 4.5, blas 20070405-2, lapack 3.2.1-1

Почему именно clapack? Потому что подключать собираюсь не к Си, а к common lisp (:)), там вызывать Си существенно проще. А еще потому что так у меня будет возможность собрать clapack с помощью оптимизированной blas (из того же atlas'а, например).

 Профиль  
                  
 
 Re: сборка clapack
Сообщение24.05.2010, 12:06 
Заслуженный участник


19/07/08
1266
Скачал, откомпилировал. Не трогал ничего. Тесты работают. Убунта 10.04, gcc 4.4.3.
Внешний блас не подключал. Видимо, дело в этом. Вы пробовали собирать с бласом, который идёт в комплекте? А потом заменить на тот блас, который вы хотите?
Да, и что вы подразумеваете под "подгрузить shared object"? Как это конкретно выглядит?

allchemist в сообщении #323353 писал(а):
Потому что подключать собираюсь не к Си, а к common lisp (:)), там вызывать Си существенно проще.

Я не специалист в lisp, но судя по тому что фортран из C вызывается как родной, в "существенно проще" верится с трудом. И тем извращённее выглядит ваше желанее вставить ещё один язык посередине. Надо понимать, что cLapack это некоторый костыль, который стоит использовать только если есть компилятор C и нет фортрана.
allchemist в сообщении #323353 писал(а):
А еще потому что так у меня будет возможность собрать clapack с помощью оптимизированной blas (из того же atlas'а, например).

??? Обычный Lapack отлично собирается с любым blas. Для этого достаточно указать в Makefile что надо использовать blas не из Lapack. Кстати, этот способ рекомендован в документации.

 Профиль  
                  
 
 Re: сборка clapack
Сообщение24.05.2010, 16:38 
Аватара пользователя


20/12/08
236
изниоткуда
Цитата:

Внешний блас не подключал. Видимо, дело в этом. Вы пробовали собирать с бласом, который идёт в комплекте? А потом заменить на тот блас, который вы хотите?

Пробовал, по всякому пробовал. Просто надо выпрямлять руки.

Цитата:
Да, и что вы подразумеваете под "подгрузить shared object"? Как это конкретно выглядит?

То же, что и линковка.

Цитата:
Я не специалист в lisp, но судя по тому что фортран из C вызывается как родной, в "существенно проще" верится с трудом.

Разница в стратегии вычисления: в Си - call-by-value, в фортране - только call-by-reference. Это создает ряд трудностей, которые выливаются не столько в сложность закодить, сколько в увеличения оверхеда на вызов функции (создание лишних объектов в foreign memory).

Цитата:
Надо понимать, что cLapack это некоторый костыль, который стоит использовать только если есть компилятор C и нет фортрана.

похоже, я это уже понял :)

Цитата:
Обычный Lapack отлично собирается с любым blas

теперь буду знать, спасибо. это меняет дело, в некотором смысле. :)

 Профиль  
                  
 
 Re: сборка clapack
Сообщение24.05.2010, 17:02 
Заслуженный участник


19/07/08
1266
allchemist в сообщении #323463 писал(а):
То же, что и линковка.
Попробуйте откомпилировать
Код:
$make all
ничего не трогая в скачанной библиотеке. Ну, естественно кроме
Код:
$ cp make.inc.example make.inc
. Если не сработает, значит проблемы в системе.
Если сработает -- он в какой-то момент делает и проверяет тестовые программы. Можно взять тестовую программу и посмотреть, что там внутри и как он её компилирует. Возможно вы забыли что-то тривиальное типа -lm =)

 Профиль  
                  
 
 Re: сборка clapack
Сообщение24.05.2010, 18:39 
Аватара пользователя


20/12/08
236
изниоткуда
нет, это все собирается отлично.
проблемы с созданием разделяемой библиотеки (shared object) с ее последующей подгрузкой.
как вы собирали .so из .a?

 Профиль  
                  
 
 Re: сборка clapack
Сообщение24.05.2010, 22:45 
Заслуженный участник


19/07/08
1266
allchemist в сообщении #323516 писал(а):
проблемы с созданием разделяемой библиотеки (shared object) с ее последующей подгрузкой.
как вы собирали .so из .a?

Честно говоря, никогда не было такой задачи. Обычно обходился статическими библиотеками, думая, что если всё работает при необходимости можно собрать и динамические пользуясь каким-нибудь HOWTO. Вроде этого.
Вообще, всегда думал что если всё делать правильно, достаточно поменять ключики компилятора.
Если у вас есть проблемы, могу попробовать поиграться. Самому интересно стало. Но всё же, я не до конца понял на каком этапе возникают проблемы. Вы пробовали сделать работающий пример со статической компиляцией, из которого можно было бы сделать пример с динамической компиляцией?

 Профиль  
                  
 
 Re: сборка clapack
Сообщение25.05.2010, 11:02 
Аватара пользователя


20/12/08
236
изниоткуда
За ссылку спасибо.
Если вдруг не разберусь, попрошу Вас помочь.

Проблемы в том, что использование статической библиотеки в моем случае невозможно по техническим причинам.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group