[devel] пакеты для численного счета
Vladislav Zavjalov
slazav на altlinux.org
Пт Сен 25 15:55:01 MSK 2020
On Fri, Sep 25, 2020 at 03:20:56PM +0300, Anton Farygin wrote:
> On 20.09.2020 16:28, Vladislav Zavjalov wrote:
> > * openblas -- Оптимизированная версия Blas, с поддержкой
> > многопоточных вычислений и т.п.
> > https://github.com/xianyi/OpenBLAS
> >
> > Openblas может и сам предоставлять стандартный lapack, но у нас он собран с ключом
> > NO_LAPACK=1. При этом в заголовочные файлы функции из lapack попадают, а
> > в библиотеку - нет. В результате, при сборке разных программ возникают
> > проблемы на этапе линковки, даже если liblapack-devel есть в системе.
> > Приходится вручную указывать, что линковаться надо с libopenblas + liblapack.
>
> Это, наверное, плохо. Может быть стоит его собрать с внешним lapack ?
Так сейчас он и используется с внешним lapack. При этом lapack носит
свой blas, и устанавливает man-pages от него. А h-файлов в нем и нет,
они - от clapack. Так что все весьма запутано.
Как я понимаю, идея была сделать liblapack точкой входа, чтобы на него
ставить зависимости, а он уже вытягивал openblas и все нужное в системе
было.
Мне сейчас больше нравится идея собрать obenblas со всеми опциями, со
своими lapack, clapack, многопоточностью. И использовать только его.
Кроме того, наверное хорошо бы иметь отдельный референсный комплект
(blas+xblas+lapack+clapack). Его можно сделать на базе liblapack.
Единственное, что смущает - очень неочевидные названия в этом
случае: "если нужен blas+lapack - использовать либо openblas либо liblapaсk".
> + make -j16 'CFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2
> -I../include -I/usr/include/openblas -DNOSHORTS -DUSESIGTERM
> -DUSEGETTIME' 'LIBS=-L../lib -lsdp'
> make: Entering directory '/usr/src/RPM/BUILD/csdp-6.2.0/solver'
> cc -pipe -frecord-gcc-switches -Wall -g -O2 -I../include
> -I/usr/include/openblas -DNOSHORTS -DUSESIGTERM -DUSEGETTIME -c -o
> csdp.o csdp.c
> make: Leaving directory '/usr/src/RPM/BUILD/csdp-6.2.0/solver'
> make: Entering directory '/usr/src/RPM/BUILD/csdp-6.2.0/solver'
> cc -pipe -frecord-gcc-switches -Wall -g -O2 -I../include
> -I/usr/include/openblas -DNOSHORTS -DUSESIGTERM -DUSEGETTIME csdp.o
> -L../lib -lsdp -o csdp
> /usr/bin/ld.default: ../lib/libsdp.so: undefined reference to `dtrtri_'
> /usr/bin/ld.default: ../lib/libsdp.so: undefined reference to `dpotrf_'
> /usr/bin/ld.default: ../lib/libsdp.so: undefined reference to `dpotrs_'
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:5: csdp] Error 1
> make: Leaving directory '/usr/src/RPM/BUILD/csdp-6.2.0/solver'
> error: Bad exit status from /usr/src/tmp/rpm-tmp.39185 (%build)
Да, так это и выглядит. Убирание lapackовских заголовков из openblas
мне, кстати, не сильно помогло. Автоматика в cmake и autotools все равно
считает, что все должно быть в openblas, -llapack надо явно указывать. А
фортрану сишные заголовки вообще не нужны.
Подробная информация о списке рассылки Devel