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