Как потоки Dask взаимодействуют с OpenBLAS / MKL /…? - PullRequest
0 голосов
/ 19 октября 2018

Согласно Какие потоки активны у Dask Workers? , у работника dask есть

Пул потоков, в котором можно запускать задачи.

Документация гласит:

Если ваши вычисления в основном являются числовыми (например, вычисления NumPy и Pandas) и полностью освобождают GIL, тогдаЦелесообразно запускать процессы dask-worker с несколькими потоками и одним процессом.Это сокращает расходы на связь и в целом упрощает развертывание.

Внутренние компоненты NumPy используют MKL или OpenBLAS с числом потоков, равным переменным env OPENBLAS_NUM_THREADS или MKL_NUM_THREADS, когда код обычно выполняется.

Как эти параметры и вычислительные потоки dask работают вместе?

1 Ответ

0 голосов
/ 20 октября 2018

Короткий ответ

Плохо

Более длинный ответ

По умолчанию большинство современных реализаций BLAS / LAPACK используют столько потоков, сколько у вас есть логических ядер.Dask сделает то же самое (при условии настройки по умолчанию).Если вы выполняете операции L3 BLAS, то это может привести к гораздо большему количеству активных потоков, чем у вас ядер, и к общему снижению производительности.

Я обычно устанавливаю XXX_NUM_THREADS=1 и полагаюсь на Dask для параллелизма при использовании обоих вместе.

...