Numba - это JIT-компилятор с открытым исходным кодом, который переводит подмножество Python и NumPy в быстрый машинный код с использованием LLVM через пакет Python llvmlite. Он предлагает ряд вариантов распараллеливания кода Python для процессоров и графических процессоров, часто с незначительными изменениями кода.
Автор (ы) оригинала | Continuum Analytics |
---|---|
Разработчики) | Общественный проект |
Первый выпуск | 15 августа 2012 г . |
Стабильный выпуск | 0.50.0 / 10 июня 2020 г . |
Предварительный выпуск | 0.50.0dev0 / 30 марта 2020 г . |
Репозиторий | |
Написано в | Python , C |
Операционная система | Кроссплатформенность |
Тип | Технические вычисления |
Веб-сайт | numba |
Numba была основана Трэвисом Олифантом в 2012 году и с тех пор находится в стадии активной разработки на https://github.com/numba/numba с частыми выпусками. Проект осуществляется разработчиками из Anaconda, Inc. при поддержке DARPA , Фонда Гордона и Бетти Мур , Intel , Nvidia и AMD , а также сообщества участников на GitHub .
Пример
Numba можно использовать, просто применив numba.jit
декоратор к функции Python, которая выполняет численные вычисления:
import numba import random@numba . jit def monte_carlo_pi ( n_samples : int ): acc = 0 для i в диапазоне ( n_samples ): x = random . random () y = случайный . random () if ( x ** 2 + y ** 2 ) < 1.0 : acc + = 1 return 4.0 * acc / n_samples
Сборник Просто по времени происходит прозрачно , когда функция вызывается:
>>> monte_carlo_pi ( 1000000 ) 3.14
На веб-сайте Numba по адресу https://numba.pydata.org есть еще много примеров, а также информация о том, как добиться хорошей производительности от Numba.
Поддержка GPU
Numba может компилировать функции Python в код графического процессора. В настоящее время доступны два бэкенда:
Альтернативные подходы
Numba - это один из подходов к ускорению Python путем компиляции определенных функций, содержащих код Python и Numpy. Многие альтернативные подходы для быстрого числовых вычислений с EXIST Python, такие как Cython , TensorFlow , PyTorch , Chainer , Pythran и PyPy .