我正在研究一种算法,除了使用numpy / scipy之外,我没有尝试并行化它.看看htop,有时代码使用我的所有内核,有时只使用一个.我正在考虑使用多处理或类似的东西为单线程部分添加并行性.
假设我拥有所有并行的BLAS / MKL库,是否有一些经验法则可以让我猜测numpy / scipy ufunc是否会是多线程的?更好的是,是否存在记录这一点的地方?
为了弄清楚这一点,我看了一下:https://scipy.github.io/old-wiki/pages/ParallelProgramming,Python: How do you stop numpy from multithreading?,multithreaded blas in python/numpy.
最佳答案 您可以尝试使用包含NumPy *,SciPy *和scikit-learn *版本的IDP包(
Intel® Distribution for Python)和集成的英特尔®数学核心库.
这将使您自动线程化所有Lapack例程,这是否有意义.
在这里,您可以找到线程mkl函数的列表:
https://software.intel.com/en-us/mkl-linux-developer-guide-openmp-threaded-functions-and-problems