我正在开发一种算法,除了使用numpy/scipy之外,我没有尝试过并行化。通过观察htop
,有时代码会使用所有的核心,有时只使用一个核心。我正在考虑使用multiprocessing
或类似的方法来添加单线程部分的并行性。
假设我有所有并行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。