From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sun, 20 Sep 2020 16:28:14 +0300 From: Vladislav Zavjalov To: ALT Linux Team development discussions Message-ID: <20200920132814.GC26263@imap.altlinux.org> References: <20200920103655.GA26263@imap.altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200920103655.GA26263@imap.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: Sun, 20 Sep 2020 13:28:14 -0000 Archived-At: List-Archive: List-Post: Еще поразбирался с Blas/Lapack. Это старые-добрые фортрановские библиотеки "Basic Linear Algebra Subroutines" и "Linear Algebra PACKage" - работа с матрицами, и решение систем линейных уравнений. Lapack использует Blas. У нас сейчас есть следующее: * blas -- "стандартный" blas. http://www.netlib.org/blas/ * liblapack -- "стандартный" lapack. У нас собран с openblas. http://www.netlib.org/lapack/ * openblas -- Оптимизированная версия Blas, с поддержкой многопоточных вычислений и т.п. https://github.com/xianyi/OpenBLAS Openblas может и сам предоставлять стандартный lapack, но у нас он собран с ключом NO_LAPACK=1. При этом в заголовочные файлы функции из lapack попадают, а в библиотеку - нет. В результате, при сборке разных программ возникают проблемы на этапе линковки, даже если liblapack-devel есть в системе. Приходится вручную указывать, что линковаться надо с libopenblas + liblapack. * libatlas -- Оптимизированный blas + небольшая часть lapack. http://math-atlas.sourceforge.net/ У нас очень старая версия, собирается только под i586 и x86_64. Это довольно странная библиотека, и я не уверен, что ее следует держать в репозитории. Дело в том, что она оптимизирует функции из blas/lapack под конкретный процессор - на этапе сборки. Не очень понятно, имеют ли эти оптимизации смысл при распространении в виде бинарных пакетов. Например, явно написано, что оптимизации будут бессмысленны при включенном CPU throttling и лучше тогда использовать обычный blas. Как сделать "правильную" сборку - не очень понятно. Не уверен, что я понял все тонкости. Пока мне кажется разумным следующее: * Исправить openblas, чтобы с NO_LAPACK=1 он не делал вид, что предоставляет lapack. Если это сложно, то использовать его встроенный lapack + отвязать liblapack от openblas. * Может быть, удалить blas + liblapack и использовать только openblas. * Удалить libatlas, пересобрав клиентов с openblas. Еще бы понять, какие клиенты используют эти библиотеки...