Spec-Zone.ru › NumPy 2.0

Оптимизации CPU/SIMD

NumPy имеет гибкую рабочую схему, которая позволяет ему использовать возможности SIMD процессоров, чтобы обеспечить более высокую и стабильную производительность на всех популярных платформах. В настоящее время NumPy поддерживает архитектуры X86, IBM/Power, ARM7 и ARM8.

Процесс оптимизации в NumPy выполняется в три этапа:

  • Код пишется с использованием универсальных внутренних функций, которые представляют собой набор типов, макросов и функций, сопоставленных с каждой поддерживаемой системой команд с использованием защитных механизмов, которые позволят использовать их только тогда, когда компилятор их распознает. Это позволяет нам генерировать несколько ядер для одной и той же функциональности, где каждое сгенерированное ядро представляет собой набор инструкций, связанных с одной или несколькими определёнными функциями процессора. Первое ядро представляет минимальные (базовые) возможности процессора, а другие ядра представляют дополнительные (распределённые) возможности процессора.
  • На этапе компиляции используются параметры сборки процессора для определения минимальных и дополнительных возможностей поддержки в зависимости от выбора пользователя и поддержки компилятора. Соответствующие внутренние функции перекрываются с внутренними функциями платформы/архитектуры, и компилируются несколько ядер.
  • Во время импорта во время выполнения процессор проверяется на наличие набора поддерживаемых функций процессора. Используется механизм для получения указателя на наиболее подходящее ядро, которое будет вызвано для функции.

Примечание

Сообщество NumPy провело глубокое обсуждение перед реализацией этой работы, пожалуйста, ознакомьтесь с NEP-38 для получения более подробной информации.

  • Параметры сборки процессора
    • Описание
    • Быстрый старт
      • Я собираю NumPy для использования на локальной машине
      • Я не хочу поддерживать старые процессоры архитектуры x86
      • У меня та же проблема, что выше, но с архитектурой ppc64
      • Возникли проблемы с функциями AVX512?
    • Поддерживаемые функции
      • На x86
      • На IBM/POWER big-endian
      • На IBM/POWER little-endian
      • На ARMv7/A32
      • На ARMv8/A64
      • На IBM/ZSYSTEM(S390X)
    • Специальные параметры
    • Поведение
    • Отличия платформ
      • На x86::Компилятор Intel
      • На x86::Microsoft Visual C/C++
    • Отчёт о сборке
    • Диспейчинг во время выполнения
    • Отслеживание функций, отправленных на диспейчинг
  • Как работает диспечер процессора?
    • 1- Настройка
    • 2- Определение среды
    • 3- Валидация запрошенных оптимизаций
    • 4- Генерация основного заголовка конфигурации
    • 5- Источники, отправляемые на диспейчинг, и инструкции конфигурации

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/simd/index.html

Spec-Zone.ru

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