Библиотеки BLAS и LAPACK
Поведение по умолчанию при выборе BLAS и LAPACK
При вызове сборки NumPy происходит автоматическое обнаружение библиотек BLAS и LAPACK. Система сборки попытается найти подходящую библиотеку, перебирая ряд известных библиотек в определённом порядке — от наиболее производительных к наименее: MKL, Accelerate, OpenBLAS, FlexiBLAS, BLIS, обычные libblas/liblapack. Этот порядок может изменяться в зависимости от платформы или версий. Данный порядок и перебираемые библиотеки могут быть изменены с помощью опций сборки blas-order и lapack-order, например:
$ python -m pip install . -C-Dblas-order=openblas,mkl,blis -C-Dlapack-order=openblas,mkl,lapack
Первая подходящая найденная библиотека будет использована. В случае, если подходящая библиотека не найдена, сборка NumPy выведет предупреждение и затем воспользуется (медленными!) внутренними функциями NumPy. Для запрета использования этих медленных функций можно использовать опцию сборки allow-noblas.
$ python -m pip install . -C-Dallow-noblas=false
По умолчанию будет использоваться интерфейс LP64 (32-битный целочисленный) для библиотек BLAS и LAPACK. Для построения с использованием интерфейса ILP64 (64-битный целочисленный) необходимо использовать опцию сборки use-ilp64.
$ python -m pip install . -C-Duse-ilp64=true
Выбор конкретных библиотек BLAS и LAPACK
Опции сборки blas и lapack по умолчанию установлены в «auto», что означает перебор всех известных библиотек. Если вы хотите использовать определённую библиотеку, можно установить эти опции сборки в имя библиотеки (обычно в нижнем регистре, то имя, которое ожидает pkg-config). Например, чтобы выбрать обычные libblas и liblapack (обычно Netlib BLAS/LAPACK на дистрибутивах Linux и может динамически переключаться между реализациями в conda-forge), используйте:
$ # for a development build $ spin build -C-Dblas=blas -C-Dlapack=lapack $ # to build and install a wheel $ python -m build -Csetup-args=-Dblas=blas -Csetup-args=-Dlapack=lapack $ pip install dist/numpy*.whl $ # Or, with pip>=23.1, this works too: $ python -m pip install . -Csetup-args=-Dblas=blas -Csetup-args=-Dlapack=lapack
Другие опции, которые должны работать (пока они установлены с поддержкой pkg-config; в противном случае они могут быть всё ещё обнаружены, но всё всё устроено более хрупко) включают openblas, mkl, accelerate, atlas и blis.
Использование pkg-config для обнаружения библиотек в нестандартном расположении
Механизм обнаружения BLAS и LAPACK заключается в том, что Meson пытается обнаружить указанные библиотеки сначала с помощью pkg-config, а затем с помощью CMake. Если у вас есть только автономный общий файл библиотеки (например, armpl_lp64.so в /a/random/path/lib/ и соответствующий заголовочный файл в /a/random/path/include/), то вам нужно создать свой собственный файл pkg-config. Он должен иметь соответствующее имя (в этом примере armpl_lp64.pc) и может быть размещён где угодно. Переменная среды PKG_CONFIG_PATH должна быть установлена для указания расположения файла .pc. Содержимое этого файла должно быть:
libdir=/path/to/library-dir # e.g., /a/random/path/lib
includedir=/path/to/include-dir # e.g., /a/random/path/include
version=1.2.3 # set to actual version
extralib=-lm -lpthread -lgfortran # if needed, the flags to link in dependencies
Name: armpl_lp64
Description: ArmPL - Arm Performance Libraries
Version: ${version}
Libs: -L${libdir} -larmpl_lp64 # linker flags
Libs.private: ${extralib}
Cflags: -I${includedir}
Для проверки правильности работы вы должны иметь возможность выполнить:
$ pkg-config --libs armpl_lp64 -L/path/to/library-dir -larmpl_lp64 $ pkg-config --cflags armpl_lp64 -I/path/to/include-dir
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/building/blas_lapack.html