Spec-Zone.ru › NumPy 1.20

Глобальное состояние

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

Параметры, связанные с производительностью

Количество потоков, используемых для линейной алгебры

Сам NumPy обычно намеренно ограничен одним потоком во время вызовов функций, однако он поддерживает одновременное выполнение нескольких потоков Python. Обратите внимание, что для эффективных вычислений линейной алгебры NumPy использует бэкенд BLAS, такой как OpenBLAS или MKL, которые могут использовать несколько потоков, которые могут управляться переменными окружения, такими как OMP_NUM_THREADS, в зависимости от используемого решения. Один из способов управления количеством потоков — использование пакета threadpoolctl.

Использование Madvise Hugepage в Linux

При работе с очень большими массивами в современных ядрах Linux вы можете значительно ускорить работу, используя прозрачные огромные страницы. Текущую политику системы для прозрачных огромных страниц можно посмотреть так:

cat /sys/kernel/mm/transparent_hugepage/enabled

При значении madvise, NumPy обычно будет использовать огромные страницы для повышения производительности. Это поведение можно изменить, задав переменную окружения:

NUMPY_MADVISE_HUGEPAGE=0

или установив значение 1, чтобы всегда использовать их. Если переменная не задана, по умолчанию используется madvise для ядер 4.6 и более поздних версий. Предполагается, что эти ядра заметно ускоряются с поддержкой огромных страниц. Этот флаг проверяется во время импорта.

Параметры, связанные с взаимодействием

Протокол функции массива, позволяющий объектам, похожим на массивы, подключаться к API NumPy, в настоящее время включен по умолчанию. Эта опция существует с NumPy 1.16 и включена по умолчанию с NumPy 1.17. Ее можно отключить, используя:

NUMPY_EXPERIMENTAL_ARRAY_FUNCTION=0

См. также numpy.class.__array_function__ для получения дополнительной информации. Этот флаг проверяется во время импорта.

Параметры, связанные с отладкой

Расслабленная проверка шагов

Переменные окружения времени компиляции:

NPY_RELAXED_STRIDES_DEBUG=0
NPY_RELAXED_STRIDES_CHECKING=1

управляют тем, как NumPy сообщает о непрерывности массивов. По умолчанию он включен, а режим отладки отключен. Это значение следует всегда включать. Включение параметра отладки может быть полезно при тестировании кода, написанного на C, который проходит по массивам, которые могут быть или не быть непрерывными в памяти. Большинству пользователей нет необходимости изменять эти параметры; подробности см. в документации по структуре памяти.

Использование новой реализации преобразования типов

В NumPy 1.20 можно включить новую экспериментальную реализацию преобразования типов для целей тестирования. Для этого нужно установить:

NPY_USE_NEW_CASTINGIMPL=1

Установка флага полезна только для помощи в разработке NumPy для обеспечения отсутствия ошибок в новой версии и должна быть избегаема в рабочем коде. Это полезное тестирование для проектов, которые создают пользовательские типы данных или используют, например, сложные структурированные типы данных. Ожидается, что этот флаг будет удален в версии 1.21, так как новая версия всегда будет использоваться.

© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/global_state.html

Spec-Zone.ru

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