Spec-Zone.ru › NumPy 1.18

Компиляция из исходного кода

Здесь представлен общий обзор компиляции NumPy из исходного кода, а подробные инструкции для конкретных платформ приведены отдельно.

Предварительные требования

Для компиляции NumPy необходимо установить следующее программное обеспечение:

  1. Python 3.5.x или более поздняя версия

    Обратите внимание, что также необходимо установить заголовки разработки Python, например, в Debian/Ubuntu необходимо установить как python3 , так и python3-dev. В Windows и macOS это обычно не требуется.

  2. Компиляторы

    Для компиляции модулей расширений для Python вам потребуется C-компилятор. Различные модули NumPy используют библиотеки FORTRAN 77, поэтому вам также потребуется установленный FORTRAN 77-компилятор.

    Обратите внимание, что NumPy разработан в основном с использованием GNU-компиляторов. Компиляторы других поставщиков, таких как Intel, Absoft, Sun, NAG, Compaq, Vast, Portland, Lahey, HP, IBM, Microsoft, поддерживаются только в виде обратной связи сообщества и могут не работать сразу из коробки. Рекомендуются компиляторы GCC 4.x (и более поздние).

  3. Библиотеки линейной алгебры

    NumPy не требует установки каких-либо внешних библиотек линейной алгебры. Однако, если они доступны, скрипт настройки NumPy может их обнаружить и использовать при компиляции. Можно использовать ряд различных настроек библиотек LAPACK, включая оптимизированные библиотеки LAPACK, такие как OpenBLAS или MKL.

  4. Cython

    Для компиляции NumPy вам потребуется недавняя версия Cython.

Базовая установка

Для установки NumPy выполните:

pip install .

Для выполнения компиляции на месте, которую можно запускать из папки с исходным кодом, выполните:

python setup.py build_ext --inplace

Примечание: инструкции по компиляции для работы над самим NumPy см. в Настройка и использование среды разработки.

Тестирование

Не забудьте проверить свои сборки. Чтобы убедиться, что все работает правильно, проверьте, пройдут ли все тесты:

$ python runtests.py -v -m full

Подробная информация о тестировании приведена в Тестирование сборок.

Параллельная компиляция

Возможно выполнение параллельной компиляции с помощью:

python setup.py build -j 4 install --prefix $HOME/.local

Это позволит скомпилировать numpy на 4 процессорах и установить его в указанный префикс. Для выполнения параллельной компиляции на месте выполните:

python setup.py build_ext --inplace -j 4

Количество задач компиляции также можно указать через переменную окружения NPY_NUM_BUILD_JOBS.

Выбор компилятора Fortran

Компиляторы определяются автоматически; компиляция с использованием определенного компилятора может быть выполнена с помощью --fcompiler. Например, для выбора gfortran:

python setup.py build --fcompiler=gnu95

Дополнительная информация представлена в:

python setup.py build --help-fcompiler

Как проверить ABI библиотек BLAS/LAPACK

Один из относительно простых и надежных способов проверки компилятора, используемого для сборки библиотеки, — использование ldd для библиотеки. Если libg2c.so является зависимостью, это означает, что использовался g77 (примечание: g77 больше не поддерживается для сборки NumPy). Если libgfortran.so является зависимостью, использовался gfortran. Если обе являются зависимостями, это означает, что использовались оба, что почти всегда является очень плохой идеей.

Ускоренные библиотеки BLAS/LAPACK

NumPy ищет оптимизированные библиотеки линейной алгебры, такие как BLAS и LAPACK. Порядок поиска этих библиотек описан ниже.

BLAS

Стандартный порядок поиска библиотек:

  1. MKL
  2. BLIS
  3. OpenBLAS
  4. ATLAS
  5. Accelerate (MacOS)
  6. BLAS (NetLIB)

Если вы хотите скомпилировать с OpenBLAS, но у вас также доступен BLIS, можно предварительно задать порядок поиска через переменную окружения NPY_BLAS_ORDER, которая представляет собой список имен, разделенных запятыми, используемый для определения того, что искать. Например:

NPY_BLAS_ORDER=ATLAS,blis,openblas,MKL python setup.py build

будет отдавать предпочтение ATLAS, затем BLIS, затем OpenBLAS и в последнюю очередь MKL. Если ни одна из этих библиотек не найдена, сборка завершится ошибкой (имена сравниваются в нижнем регистре).

LAPACK

Стандартный порядок поиска библиотек:

  1. MKL
  2. OpenBLAS
  3. libFLAME
  4. ATLAS
  5. Accelerate (MacOS)
  6. LAPACK (NetLIB)

Если вы хотите скомпилировать с OpenBLAS, но у вас также доступен MKL, можно предварительно задать порядок поиска через переменную окружения NPY_LAPACK_ORDER, которая представляет собой список имен, разделенных запятыми. Например:

NPY_LAPACK_ORDER=ATLAS,openblas,MKL python setup.py build

будет отдавать предпочтение ATLAS, затем OpenBLAS и в последнюю очередь MKL. Если ни одна из этих библиотек не найдена, сборка завершится ошибкой (имена сравниваются в нижнем регистре).

Отключение ATLAS и других ускоренных библиотек

Использование ATLAS и других ускоренных библиотек в NumPy можно отключить с помощью:

NPY_BLAS_ORDER= NPY_LAPACK_ORDER= python setup.py build

или:

BLAS=None LAPACK=None ATLAS=None python setup.py build

64-битные BLAS и LAPACK

Вы можете указать Numpy использовать 64-битные библиотеки BLAS/LAPACK, установив переменную окружения:

NPY_USE_BLAS_ILP64=1

при сборке Numpy. Поддерживаются следующие 64-битные библиотеки BLAS/LAPACK:

  1. OpenBLAS ILP64 с суффиксом символа 64_ (openblas64_)
  2. OpenBLAS ILP64 без суффикса символа (openblas_ilp64)

Порядок их предпочтения определяется переменными окружения NPY_BLAS_ILP64_ORDER и NPY_LAPACK_ILP64_ORDER. Значение по умолчанию — openblas64_,openblas_ilp64.

Примечание

Использование 64-битных BLAS/LAPACK без суффикса символа в программе, которая также использует 32-битные BLAS/LAPACK, может привести к сбоям в определенных условиях (например, с встроенными интерпретаторами Python на Linux).

64-битный OpenBLAS с суффиксом символа 64_ получается путем компиляции OpenBLAS с настройками:

make INTERFACE64=1 SYMBOLSUFFIX=64_

Суффикс символа предотвращает конфликты имен символов между 32-битными и 64-битными библиотеками BLAS/LAPACK.

Предоставление дополнительных флагов компилятора

Дополнительные флаги компилятора можно предоставить, установив переменные окружения OPT, FOPT (для Fortran) и CC. При предоставлении опций, которые должны улучшить производительность кода, убедитесь, что вы также установили -DNDEBUG, чтобы код отладки не выполнялся.

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/user/building.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API