[devel] [#293095] FAILED del=blas
Vladislav Zavjalov
slazav на altlinux.org
Вт Янв 11 11:53:55 MSK 2022
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).
И все получившиеся варианты переключать альтернативами. То что они
произойдут из одного пакета, будет дополнительной гарантией, что они не
разъедутся.
Мне казалось, что пакеты позволяют это сделать.
Подробная информация о списке рассылки Devel