ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Vladislav Zavjalov <slazav@altlinux.org>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] [#293095] FAILED del=blas
Date: Tue, 11 Jan 2022 11:53:55 +0300
Message-ID: <20220111085355.GA11726@imap.altlinux.org> (raw)
In-Reply-To: <20220111004639.GC16721@altlinux.org>

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).

И все получившиеся варианты переключать альтернативами. То что они
произойдут из одного пакета, будет дополнительной гарантией, что они не
разъедутся.

Мне казалось, что пакеты позволяют это сделать.




      parent reply	other threads:[~2022-01-11  8:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-11  0:46 Dmitry V. Levin
2022-01-11  6:47 ` [devel] [#293099] FAILED del=fuse arbars
2022-01-11 10:00   ` Evgeny Sinelnikov
2022-01-11  8:53 ` Vladislav Zavjalov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220111085355.GA11726@imap.altlinux.org \
    --to=slazav@altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git