Spec-Zone.ru › NumPy 2.0

1 Миграция на meson

В соответствии с графиком, представленным в Состояние numpy.distutils и рекомендации по миграции, distutils перестал быть стандартным бэкендом сборки для f2py. Данная страница содержит распространенные рабочие процессы для обоих форматов.

Примечание

Это **живой** документ, запросы на добавление приветствуются!

1.1 Базовая конфигурация

Мы начнем с немного модернизированной версии классического генератора последовательности Фибоначчи.

! fib.f90
subroutine fib(a, n)
  use iso_c_binding
   integer(c_int), intent(in) :: n
   integer(c_int), intent(out) :: a(n)
   do i = 1, n
      if (i .eq. 1) then
         a(i) = 0.0d0
      elseif (i .eq. 2) then
         a(i) = 1.0d0
      else
         a(i) = a(i - 1) + a(i - 2)
      end if
   end do
end

Это не принесет никаких наград, но может быть приемлемой отправной точкой.

1.2 Параметры компиляции

1.2.1 Базовое использование

Это не изменилось:

python -m numpy.f2py -c fib.f90 -m fib
❯ python -c "import fib; print(fib.fib(30))"
[     0      1      1      2      3      5      8     13     21     34
     55     89    144    233    377    610    987   1597   2584   4181
   6765  10946  17711  28657  46368  75025 121393 196418 317811 514229]

1.2.2 Указание бэкенда

python -m numpy.f2py -c fib.f90 -m fib --backend distutils

Это значение по умолчанию для версий Python до 3.12.

python -m numpy.f2py -c fib.f90 -m fib --backend meson

Это единственный вариант для версий Python после 3.12.

1.2.3 Передача имени компилятора

python -m numpy.f2py -c fib.f90 -m fib --backend distutils --fcompiler=gfortran
FC="gfortran" python -m numpy.f2py -c fib.f90 -m fib --backend meson

Также можно использовать файлы нативных библиотек.

Аналогично, CC можно использовать в обоих случаях для установки компилятора C. Поскольку переменные окружения в целом достаточно распространены в обоих случаях, ниже приводится небольшой пример.

Имя

Что это

FC

Компилятор Fortran

CC

Компилятор C

CFLAGS

Параметры компилятора C

FFLAGS

Параметры компилятора Fortran

LDFLAGS

Параметры компоновщика

LDLIBRARYPATH

Расположение файлов библиотек (Unix)

LIBS

Библиотеки для компоновки

PATH

Путь поиска исполняемых файлов

LDFLAGS

Флаги компоновщика

CXX

Компилятор C++

CXXFLAGS

Параметры компилятора C++

Примечание

Для Windows эти параметры могут работать не очень надежно, поэтому файлы нативных библиотек — вероятно, лучший вариант, или же прямой 1.3 Настройка сборок.

1.2.4 Зависимости

Здесь meson фактически может использоваться для более надежной настройки зависимостей.

python -m numpy.f2py -c fib.f90 -m fib --backend distutils -llapack

Обратите внимание, что этот подход на практике подвержен ошибкам.

python -m numpy.f2py -c fib.f90 -m fib --backend meson --dep lapack

Это сопоставляется с dependency("lapack") и может использоваться для широкого спектра зависимостей. Их можно дополнительно настроить для использования CMake или других систем для разрешения зависимостей.

1.2.5 Библиотеки

Как meson, так и distutils способны подключаться к библиотекам.

python -m numpy.f2py -c fib.f90 -m fib --backend distutils -lmylib -L/path/to/mylib
python -m numpy.f2py -c fib.f90 -m fib --backend meson -lmylib -L/path/to/mylib

1.3 Настройка сборок

python -m numpy.f2py -c fib.f90 -m fib --backend distutils --build-dir blah

Это можно технически интегрировать с другими кодами, см. Использование через numpy.distutils.

python -m numpy.f2py -c fib.f90 -m fib --backend meson --build-dir blah

Результирующую сборку можно настроить с помощью Руководства по настройке сборок Meson. Фактически, полученный набор файлов можно даже напрямую добавить в историю изменений и использовать как подпроект meson в отдельном кодовом репозитории.

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/f2py/buildtools/distutils-to-meson.html

Spec-Zone.ru

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