[devel] пакеты для численного счета

Anton Farygin rider на basealt.ru
Пт Сен 25 18:15:46 MSK 2020


On 25.09.2020 15:55, Vladislav Zavjalov wrote:
> 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 надо явно указывать. А
> фортрану сишные заголовки вообще не нужны.
>
>
Так что делать то ?

Я добавил -llapack и оно собралось, но всё это как-то не красиво.




Подробная информация о списке рассылки Devel