Какие операции в numpy / scipy являются многопоточными? - PullRequest
0 голосов
/ 07 февраля 2019

Я работаю над алгоритмом, и я не пытался распараллелить его, кроме как с помощью numpy / scipy.Глядя на htop, иногда код использует все мои ядра, а иногда только одно.Я рассматриваю возможность добавления параллельности к однопоточным частям, используя multiprocessing или что-то подобное.

Предполагая, что у меня есть все параллельные библиотеки BLAS / MKL, есть ли какое-то практическое правило, которому я могу следоватьугадайте, будет ли многопоточный nupy / scipy ufunc или нет?Еще лучше, есть ли место, где это задокументировано?

Чтобы попытаться это выяснить, я посмотрел на: https://scipy.github.io/old-wiki/pages/ParallelProgramming, Python: Как вы мешаете numpy многопоточности?, многопоточный блас в python / numpy .

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете попробовать взять пакет IDP ( Intel® Distribution для Python ), который содержит версии NumPy *, SciPy * и scikit-learn * со встроенной библиотекой Intel® Math Kernel Library.

Это даст вам автоматическое выполнение всех подпрограмм Лапака, независимо от того, имеет ли это смысл.Здесь вы найдете список резьбовых функций MKL: https://software.intel.com/en-us/mkl-linux-developer-guide-openmp-threaded-functions-and-problems

0 голосов
/ 07 февраля 2019

Подпрограммы, присущие numpy и scipy, допускают использование по отдельности потоковВы можете изменить это, если захотите.

# encoding: utf-8
# module numpy.core.multiarray
# from /path/to/anaconda/lib/python3.6/site-packages/numpy/core/multiarray.cpython-36m-darwin.so
# by generator 1.145
# no doc
# no imports

# Variables with simple values

ALLOW_THREADS = 1

При компиляции numpy вы можете управлять потоками, изменив NPY_ALLOW_THREADS:

./core/include/numpy/ufuncobject.h:#if NPY_ALLOW_THREADS
./core/include/numpy/ndarraytypes.h:        #define NPY_ALLOW_THREADS 1

Что касается внешних библиотек, то яВ основном мы нашли numpy и scipy, чтобы обернуть устаревший код Фортрана (QUADPACK, LAPACK, FITPACK ... и т. д.).Все подпрограммы в этих библиотеках вычисляются в одном потоке.

Что касается зависимостей MKL, то сообщения SO, на которые вы ссылаетесь, в достаточной степени отвечают на вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...