如何解决Scipy LAPACK函数是否并行?
我当前正在使用scipy.linalg.lapack.zheevd()
函数,并且它在所有内核上运行,并且如果我尝试使用ProcessPoolExecutor()
或{{1}将函数映射到参数数组,则会产生挂起和内存溢出},来自ThreadPoolExecutor()
。
它使用与我的测试系统一样多的内核,但是我给人的印象是,由于GIL,事情通常没有在Python中并行化。这是与OpenMP一起运行的底层Fortran代码的结果吗?
可以安全地假定它是并行化的,并且不能进一步并行化吗?这对我的代码来说不是一个很大的瓶颈(找到400个唯一的1000x1000矩阵的本征系统;虽然可能有必要对其进行扩展,例如最终扩展到1000个2000x2000矩阵),但是我正处于优化阶段。 >
以下是希望进行概念化的有用代码段,但不代表实际的矩阵:
concurrent.futures
解决方法
这全部由您在后台使用的LAPACK库控制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。