Кажется, что скорость вычислений меняется в зависимости от BLAS, используемого для Numpy [Python]
В numpy за фактическую обработку отвечает библиотека числовых вычислений под названием BLAS.
Используемый BLAS зависит от того, устанавливаете ли вы numpy с помощью conda install или pip install, и в зависимости от того, какой BLAS вы используете, на скорость обработки будет влиять не только numpy, но и библиотеки, которые зависят от него.
На этот раз я расскажу о BLAS и фактической разнице в скорости, а также о том, как проверить, какой BLAS вы используете.
BLAS и его виды
Что такое BLAS?
Что касается BLAS, объяснение на следующем сайте было очень легко понять, поэтому я процитирую его.
BLAS - это аббревиатура от Basic Linear Algebra Subprograms.Грубо говоря, это библиотека основных линейных операций или просто набор функций, которые выполняют базовые вычисления матриц и векторов.Например, умножение матриц, вычисление векторной нормы и т. Д.Идея состоит в том, чтобы прекратить выполнять эти вычисления (изобретать колесо) и использовать библиотеку для эффективного и действенного кодирования.
Легко использовать BLAS
Поскольку BLAS также используется после numpy, считается, что время вычисления будет отличаться в зависимости от того, какой BLAS вызывается при выполнении numpy.
Тип BLAS
Были разработаны различные типы BLAS.Давайте посмотрим на некоторые из типичных.
Открыть БЛАС
Реализация BLAS с открытым исходным кодом.В numpy, установленном с помощью pip, OpenBLAS вызывается внутри для выполнения операций.
Он совместим с различными процессорами и, как говорят, может обеспечивать ту же скорость, что и Intel MKL для процессора Intel Sandy Bridge.Он хорошо известен своей многопоточностью, и кажется, что количество ядер пропорционально ускорению.
Intel MKL (библиотека Intel Math Kernel)
BLAS разработан Intel. Поддерживаются только процессоры Intel, и их нельзя использовать с процессорами других компаний. Поскольку он оптимизирован для процессоров Intel, таких как Xeon, Core i series и Atom, быстрее использовать Intel MKL в качестве арифметической библиотеки на компьютере, который использует эти процессоры.Intel MKL используется для numpy, установленного "conda install" с Anaconda или Miniconda.
ATLAS (автоматически настраиваемое программное обеспечение линейной алгебры)
Один из бесплатных BLAS.Как следует из названия, настройка устанавливает оптимальные параметры для устанавливаемого оборудования и выполняет высокоскоростной расчет.
Разница во времени расчета из-за разницы в BLAS
Тот факт, что BLAS, используемый в конце numpy, влияет на скорость обработки, означает, что он связан со скоростью выполнения библиотеки, которая зависит от numpy.Другими словами, это также влияет на scipy, pandas, scikit-learn и tensorflow.
Многие технические специалисты сравнивают тесты производительности для различий в BLAS (различия между установкой conda и pip install), но в качестве примера возьмем тест, опубликованный в Intel® Developer Zone.
Вычисление матриц с помощью scipy показывает время, необходимое для умножения сложных матриц, когда оно идет вправо, и Intel MKL может обрабатывать быстрее, чем ATLAS.
Следующее - от официального лица Anaconda. Мы сравниваем количество изображений, обучаемых в секунду в каждой модели глубокого обучения, с tenorflow, установленным с помощью conda install или pip install, и разница составляет до 1 раз.
Другие сравнения включают pandas и scikit learn (производительность Intel, Anaconda и vanilla Python - мой личный тест). Поскольку у conda есть собственная библиотека для установки и управления, во многих случаях это кажется благоприятным результатом.
Как проверить BLAS в Python
__config__.show()
Просто беги.
импортировать numpy как np np .__ config __. show ()
>>
mkl_info: libraries = ['mkl_rt'] library_dirs = ['C: / Users /'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['C: \\ Program Files ( 'C: \\ Program Files (' x86) \\ IntelSWTools \\ compilers_and_libraries_2019.0.117 \\ windows \\ mkl ',' C: \\ Program Files (x86) \\ IntelSWTools \\ compilers_and_libraries_2019.0.117 \\ windows \\ mkl \ include ',' C: \ Program Files (x86) \ IntelSWTools \ compilers_and_libraries_2019.0.117 \ windows \ mkl \ lib ',' C: / Users / programming / Miniconda3 / envs / ML \\ Библиотека \\ include ']
Если отображается mkl_info, используется Intel MKL.
обсуждение
Список комментариев
Пока нет комментариев