Numba

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: numba.pydata.org

Numba — это открытый JIT-компилятор для языка Python, предназначенный для ускорения численных вычислений путём компиляции подмножества Python и выражений NumPy в машинный код. Он использует инфраструктуру LLVM для генерации высокопроизводительного кода на лету, что позволяет выполнять вычисления значительно быстрее по сравнению с интерпретируемым исполнением CPython, особенно в случаях циклов и массивных численных операций. Numba ориентирован на сценарии научных расчётов, обработки данных и численного моделирования, где важна производительность без полной миграции на статически типизированные языки.

Проект предоставляет механизм аннотаций и декораторов, с помощью которых разработчик указывает функции, подлежащие компиляции во время исполнения. Компилятор анализирует типы аргументов при первом вызове и создаёт специализированные версии функций, оптимизированные под конкретные типы и размеры данных. Кроме того, Numba поддерживает различные режимы выполнения, включая однопоточную и параллельную обработку на CPU, а также генерацию кода для некоторых моделей GPU, что расширяет область применения в задачах, где задействованы массивы и векторизованные операции.

  • JIT-компиляция: компиляция функций во время исполнения с генерацией нативного машинного кода через LLVM.
  • Поддержка NumPy: ускорение операций над массивами и многих функций NumPy без необходимости переписывать код на других языках.
  • Специализация по типам: создание оптимизированных версий функций на основе типов аргументов при первом вызове.
  • Параллельное выполнение: механизмы для распараллеливания циклов и использования многопоточности на CPU.
  • Поддержка GPU: возможность генерации кода для выполнения на совместимых графических процессорах (через соответствующие адаптеры и бэкенды).
  • Интеграция с Python: совместимость с большинством конструкций Python и лёгкость интеграции в существующие проекты без значительных изменений кода.
  • Производительность: снижение накладных расходов интерпретатора и ускорение критических вычислительных участков программы.
  • Кроссплатформенность: работа на различных операционных системах и аппаратных архитектурах при наличии соответствующих компонентов LLVM и драйверов.
  • Тонкая настройка: возможности для управления оптимизациями, целевыми бэкендами и поведением компиляции через параметры и декораторы.
  • Ограничения: поддерживает не все конструкции Python и требует внимания к совместимости типов и используемых функций при переносе кода под JIT.
Подробнее