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

Andrey Savchenko bircoph на altlinux.org
Пт Сен 25 22:52:14 MSK 2020


On Fri, 25 Sep 2020 18:15:46 +0300 Anton Farygin wrote:
> 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, многопоточностью. И использовать только его.
> А как другие дистрибутивы выкручиваются ?

Здесь есть две ситуации: 
1) используется стандартный интерфейс (C)BLAS/LAPACK(E);
2) используются дополнительные фичи конкретных библиотек.

Во втором случае, очевидно, идёт линковка с конкретными
библиотеками.

А вот первый в Debian очень грамотно решили: поскльку стандартный
интерфейс одинаков, библиотеки с помощью alternatives можно
переключать run-time кому какая больше нравится. По сути, меняются
симлинки, а оригинальные библиотеки изначально распихиваютсся по
своим директориям с переименованием soname по необходимости.
https://wiki.debian.org/DebianScience/LinearAlgebraLibraries

В Gentoo в рамках GSoC реализовали аналогичное решение: можно
собрать все библиотеки с USE="eselect-ldso" и посрдеством eselect
выбирать ту, что больше нравится. Это тоже делается run-time.
https://wiki.gentoo.org/wiki/Blas-lapack-switch

При желании можно даже собрать два варианта одной и той же
библиотеки (например, openblas нельзя собрать одновременно
с pthread и openmp, поэтому можно собрать один вариант с pthread,
а другой с openmp) и тоже между ними переключаться. Но это уже
некоторая морока.

Best regards,
Andrew Savchenko
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20200925/2b2965b9/attachment.bin>


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