2014 dxdy logo

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

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




 
 сборка clapack
Сообщение24.05.2010, 10:39 
Аватара пользователя
Пытаюсь собрать 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 
Вы скорее всего забыли подключить какую-то библиотеку. Какую -- сказать тяжело не повторяя ваших действий.
И не зная, что у вас за система, какие версии компиляторов, и т.д. и т.п.
Но главный вопрос в том, почему вам именно cLapack нужен? Обычный фортрановский Lapack отлично подключается к программам на С. Есть свои тонкости, но на мой взгляд это на порядок проще и более последовательно.

 
 
 
 Re: сборка clapack
Сообщение24.05.2010, 11:15 
Аватара пользователя
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 
Скачал, откомпилировал. Не трогал ничего. Тесты работают. Убунта 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 
Аватара пользователя
Цитата:

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

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

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

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

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

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

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

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

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

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

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

 
 
 
 Re: сборка clapack
Сообщение24.05.2010, 18:39 
Аватара пользователя
нет, это все собирается отлично.
проблемы с созданием разделяемой библиотеки (shared object) с ее последующей подгрузкой.
как вы собирали .so из .a?

 
 
 
 Re: сборка clapack
Сообщение24.05.2010, 22:45 
allchemist в сообщении #323516 писал(а):
проблемы с созданием разделяемой библиотеки (shared object) с ее последующей подгрузкой.
как вы собирали .so из .a?

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

 
 
 
 Re: сборка clapack
Сообщение25.05.2010, 11:02 
Аватара пользователя
За ссылку спасибо.
Если вдруг не разберусь, попрошу Вас помочь.

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

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group