Numpy И Многопроцессорность

Сейчас многие люди пользуются библиотекой.

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

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

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

Именно здесь обычно и кроется проблема.

К счастью, все довольно легко исправить.

Итак, возможны три ситуации:

  • у вас не установлены никакие библиотеки линейной алгебры и тогда numpy использует встроенную библиотеку, и надо сказать, что она очень медленная;
  • у вас уже установлены классические библиотеки вроде ATLAS и BLAS, и они могут использовать только один процессор;
  • у вас установлены современные библиотеки OpenBLAS, MKL и подобные.

Давайте проведем простой тест. Запустите эту программу:
  
  
  
  
  
  
  
  
  
   

import numpy as np size = 10000 a = np.random.random_sample((size, size)) b = np.random.random_sample((size, size)) n = np.dot(a,b)

После чего, если вы работаете в Linux, то запустите вершина , а если вы работаете в Windows, перейдите на вкладку «Производительность» в диспетчере задач (вызывается по Ctrl+Shift+Esc)… Если вершина показывает загрузку на уровне 100%, а индикатор «Загрузка ЦП» на вкладке «Производительность», наоборот, показывает значение во много раз ниже 100%, а это значит, что вычислениями занято только одно ядро — и эта статья для вас .

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



Решение для Windows
Теоретически можно, конечно, найти исходники библиотек, перекомпилировать их и пересобрать бестолковый .

Я даже слышал, как кто-то писал, что видел людей, говорящих, что им это удалось.

В общем, проще всего установить научный дистрибутив Python, например.

Анаконда или Навес .

В дистрибутив входят не только питон И бестолковый , но и целая куча полезных библиотек для расчетов и визуализации.

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



Решение для Linux
На самом деле вы также можете установить готовый дистрибутив.

Анаконда , Навес или еще что со всеми библиотеками сразу.

Но если вы предпочитаете собирать его самостоятельно, то читайте дальше – все рецепты там.



Проверка библиотек

Как вы помните, есть два варианта:
  • у вас установлены «старые» (или «устаревшие», как вам нравится) библиотеки (например, ATLAS);
  • у вас не установлены библиотеки, а numpy использует встроенную библиотеку (которая еще медленнее)
Если у вас последняя версия бестолковый (> 1.10), затем перейдя в каталог, где установлен numpy (обычно /usr/local/lib/python2.7/dist-packages/numpy , но путь может отличаться в зависимости от версии Linux и Python) и выполните в консоли следующие команды:

cd core ldd multiarray.so

В более ранних версиях бестолковый библиотеки multiarray.so нет, но есть _dotblas.so :

ldd _dotblas.so

Вывод команды лдд покажет вам, если он использует бестолковый сторонние библиотеки линейной алгебры.



linux-vdso.so.1 => (0x00007fffe58a2000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8adbff4000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8adbdd6000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8adba10000) /lib64/ld-linux-x86-64.so.2 (0x00007f8adc68c000)

Если вы не видите его в списке libblas.so , это значит твой бестолковый использует свою внутреннюю библиотеку.

Если вы это видите, значит, у вас есть ATLAS или BLAS. В любом случае сначала вам понадобится подходящая библиотека линейной алгебры.



Установка OpenBLAS

OpenBLAS — хорошая библиотека алгоритмов и функций линейной алгебры, лежащих в основе современных методов анализа данных и машинного обучения.

Прежде всего вам понадобится компилятор Фортрана, поскольку OpenBLAS несовместим со стандартным компилятором.

g77 .



sudo apt-get install gfortran

Загрузите OpenBLAS с github (после возвращения в соответствующий каталог для установки):

git clone https://github.com/xianyi/OpenBLAS.git

Теперь переходим в каталог и запускаем сборку:

cd OpenBLAS make FC=gfortran

После успешного завершения компиляции и сборки установите библиотеку.



sudo make install

По умолчанию библиотека будет установлена в /opt/OpenBLAS .

Если вы хотите установить его где-то еще, запустите сделать установку с ключом ПРЕФИКС :

sudo make install PREFIX=/your/preferred/location



Переназначение библиотек

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

sudo update-alternatives --install /usr/lib/libblas.so.3 libblas.so.3 \

Теги: #python #Numpy #OpenBLAS #atlas #BLAS #LAPACK #python #Интеллектуальный анализ данных #Большие данные
Вместе с данным постом часто просматривают: