From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 28 Sep 2020 11:19:40 +0300 From: Vladislav Zavjalov To: ALT Linux Team development discussions Message-ID: <20200928081939.GA31322@imap.altlinux.org> References: <20200920103655.GA26263@imap.altlinux.org> <20200920132814.GC26263@imap.altlinux.org> <0357280a-c233-15a0-511c-e0f729d7728f@basealt.ru> <20200925125501.GA14736@imap.altlinux.org> <0f7b3356-3518-c60e-7cf1-6150e2722ab1@basealt.ru> <20200925225214.52d8ecfa33794822509e2966@altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200925225214.52d8ecfa33794822509e2966@altlinux.org> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [devel] =?koi8-r?b?0MHLxdTZIMTM0SDeydPMxc7Oz8fPINPexdTB?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Sep 2020 08:19:40 -0000 Archived-At: List-Archive: List-Post: On Fri, Sep 25, 2020 at 10:52:14PM +0300, Andrey Savchenko wrote: > Здесь есть две ситуации: > 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) и тоже между ними переключаться. Но это уже > некоторая морока. Спасибо! Понимание постепенно растет. Надо будет потом тоже такой текст сделать, "как у нас все устроено". А может, и уже сейчас надо. Моя идея была в том, чтобы в качестве первого шага сделать два пакета: openblas (openblas, собранный со своим lapack) и, условно говоря, refblaslapack (с референсными blas и lapack, из исходников lapack). Наверное, можно их переключать альтернативами, но, правильно ли я понимаю, что альтернативы для библиотек - это довольно скользкий механизм? Программа собирается и линкуется с одной библиотекой, потом ей подсовывается другая, и никаких механизмов проверки, что они предоставляют одни символы нет? Например, что будет, если в одну из библиотек попадут символы из xblas или еще какое-то расширение... В качестве второго шага можно сделать serial/openmp/pthread версии, и их как раз кажется правильно переключать альтернативами.