Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Dask线程如何与OpenBLAS/MKL/…;交互;?_Python_Numpy_Dask - Fatal编程技术网

Python Dask线程如何与OpenBLAS/MKL/…;交互;?

Python Dask线程如何与OpenBLAS/MKL/…;交互;?,python,numpy,dask,Python,Numpy,Dask,据报道,dask的一名工人 要在其中运行任务的线程池 警察说 如果您的计算本质上主要是数值计算(例如NumPy和Pandas计算),并且完全释放GIL,那么建议使用多个线程和一个进程运行dask工作进程。这降低了通信成本,并且通常简化了部署 NumPy的内部使用MKL或OpenBLAS,当代码正常执行时,线程数量等于env变量OpenBLAS_NUM_线程或MKL_NUM_线程 这些参数和dask的计算线程是如何协同工作的?简短回答 差 更长的答案 默认情况下,大多数现代BLAS/LAPACK实

据报道,dask的一名工人

要在其中运行任务的线程池

警察说

如果您的计算本质上主要是数值计算(例如NumPy和Pandas计算),并且完全释放GIL,那么建议使用多个线程和一个进程运行dask工作进程。这降低了通信成本,并且通常简化了部署

NumPy的内部使用MKL或OpenBLAS,当代码正常执行时,线程数量等于env变量
OpenBLAS_NUM_线程
MKL_NUM_线程

这些参数和dask的计算线程是如何协同工作的?

简短回答 差

更长的答案 默认情况下,大多数现代BLAS/LAPACK实现使用的线程数量与逻辑核的数量相同。Dask也会这样做(假设默认配置)。如果您正在执行L3 BLAS操作,那么这可能会导致比内核更多的活动线程,并导致性能普遍下降


我通常将XXX_NUM_THREADS=1设置为,并在同时使用两者时依赖Dask实现并行性。

如果我理解,默认情况下,每个任务使用所有BLAS线程来实现并行性,但您建议设置一个变量以仅使用一个?每个Dask任务在单独的线程中运行。Dask不限制该任务/功能的功能。如果它本身使用了许多线程,那么事情就会变得效率低下。您可以按照问题中的建议,通过设置环境变量来约束大多数BLAS实现。