问题描述
我当前正在使用scipy.linalg.lapack.zheevd()
函数,并且它在所有内核上运行,并且如果我尝试使用ProcesspoolExecutor()
或{{1}将函数映射到参数数组,则会产生挂起和内存溢出},来自ThreadPoolExecutor()
。
它使用与我的测试系统一样多的内核,但是我给人的印象是,由于GIL,事情通常没有在Python中并行化。这是与OpenMP一起运行的底层Fortran代码的结果吗?
可以安全地假定它是并行化的,并且不能进一步并行化吗?这对我的代码来说不是一个很大的瓶颈(找到400个唯一的1000x1000矩阵的本征系统;虽然可能有必要对其进行扩展,例如最终扩展到1000个2000x2000矩阵),但是我正处于优化阶段。 >
以下是希望进行概念化的有用代码段,但不代表实际的矩阵:
concurrent.futures
解决方法
这全部由您在后台使用的LAPACK库控制。