From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 11 Jan 2022 11:53:55 +0300 From: Vladislav Zavjalov To: ALT Linux Team development discussions Message-ID: <20220111085355.GA11726@imap.altlinux.org> References: <20220111004639.GC16721@altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220111004639.GC16721@altlinux.org> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [devel] [#293095] FAILED del=blas 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: Tue, 11 Jan 2022 08:53:56 -0000 Archived-At: List-Archive: List-Post: On Tue, Jan 11, 2022 at 03:46:39AM +0300, Dmitry V. Levin wrote: > Коллеги, > > Если удалять все пакеты, зависящие от blas, то получается многовато > пакетов, поэтому пакет blas надо чинить. Я когда-то собирал для себя информацию про текущее состояни системы blas/lapack, приложу сюда, вдруг кому-то пригодится, чтоб не запутаться в многочисленных пакетах. Я погляжу на починку blas, но не слишком уверен в своих силах, времени и т.п. ## Blas/Lapack Классические наборы функций для задач линейной алгебры. Blas (Basic Linear Algebra Subroutines) - работа с матрицами и векторами, Lapack (Linear Algebra PACKage) - решение систем линейных уравнений. Lapack использует Blas для работы. Существуют во множестве разных вариантов, которые можно по всякому друг с другом комбинировать. * blas -- стандартный "референсный" Blas. http://www.netlib.org/blas/ В Altlinux представлен пакетом blas. Используется только на архитектуре RiscV, где openblas не собирается. Да и там, кажется, без него можно было обойтись, использовав lapack со своим встроенным blas. * xblas -- blas повышенной точности. https://www.netlib.org/xblas/ Используется как дополнение (а не как замена) blas. В Altlinux представлен пакетом xblas. * openblas -- Оптимизированная версия Blas, с поддержкой многопоточных вычислений и т.п. https://github.com/xianyi/OpenBLAS Считается, что это - наиболее универсальная версия, которую следует везде использовать. Внутри себя носит lapack (с reference blas), clapack, relapack, xblas, но в Altlinux собирается без них. Также в Altlinux сейчас не включена поддержка многопоточности, ни thread, ни openmp. В Altlinux предоставляет заголовочные файлы от clapack (но не библиотеки!) При сборке разных программ (я натыкался на это в gmsh и getdp) считается, что если в системе есть openblas, то он должен предоставлять и свой lapack. Поскольку у нас lapack отдельный, то автоматика не работает и приходится вручную указывать, с чем следует линковаться. * lapack -- стандартный "референсный" lapack. http://www.netlib.org/lapack/ Внутри себя носит референсный blas, а также cblas (интерфейс для языка C), Но может быть собран с другими версиями blas. Дополнительно может использовать xblas (функции повышенной точности). В Altlinux собран с openblas и xblas. Также из этого пакета ставятся man-pages для blas и lapack. Как я понял, изначальный замысел был в том, чтобы сделать этот пакет "главным", чтобы в спек-файлах ставить зависимости именно на liblapack. * clapack -- интерфейс языка C к lapack. В Altlinux собран с openblas. Клиент: libqm-dsp. * lapackpp -- интерфейс языка C++ для lapack. А Altlinux собран с openblas. Клиентов не имеет. * scalapack -- Scalable LAPACK http://www.netlib.org/scalapack/ Предоставляет также pblas * libatlas -- Automatically Tuned Linear Algebra Software http://math-atlas.sourceforge.net/ Blas + небольшая часть lapaсk, оптимизированная под конкретную машину на этапе сборке. Вещь хорошая и полезная, но при распространении в виде уже собранных бинарных пакетов вся его сила теряется. В этом случае лучше использовать openblas. В Altlinux представлен даво не обновлявшимся пакетом atlas, только на архитектурах i586 и x86_64. Клиентов не имеет. Видимо, этот пакет следует удалить. * eml -- Elbrus Math Libraries http://www.mcst.ru/ blas, lapack и fftw для компьютеров Эльбрус У меня когда-то была утопическая идея: сделать один пакет: openblas и из него собирать все варианты. Во-первых, там забандлен lapack, внутри которого - reference blas, так что можно собрать reference версию. Также, разумеется, собрать оптимизированную версию openblas+lapack. Собрать многопоточную версию (threads, и, может быть, openmpi). И все получившиеся варианты переключать альтернативами. То что они произойдут из одного пакета, будет дополнительной гарантией, что они не разъедутся. Мне казалось, что пакеты позволяют это сделать.