【问题标题】:Is there a configuration under which a numpy operation will work on more than a single core/thread?是否有一种配置可以使 numpy 操作在多个内核/线程上工作?
【发布时间】:2014-11-26 01:30:28
【问题描述】:
如果有,是哪个?
我感兴趣的具体例子是np.einsum。
我真的对 OPENBLAS / BLAS / LAPACK / ATLAS / INTEL MKL 提供的服务感到困惑。
我已尝试阅读有关此内容并安装软件包,但结果一团糟,因此我决定回归基础。
理想的答案是“是”/“否”,如果答案是“是”,则提供执行此操作的功能和配置示例。通过配置,我的意思是操作系统,python / numpy / BLAS / LAPACK 等的版本
谢谢
【问题讨论】:
标签:
python
numpy
lapack
blas
【解决方案1】:
为了解除你的困惑:
- BLAS 和 LAPACK 是标准化的 API(您可以将它们视为头文件)
- OpenBLAS、ATLAS 和 MKL 提供了这些 API 的优化实现。如果你有 MKL,你应该被覆盖,否则我推荐 OpenBLAS 而不是 ATLAS。
如果没有另行通知,BLAS 库将检查某些环境变量以决定使用多少线程。如果没有定义更多特定变量,大多数库将默认为OMP_NUM_THREADS,因此运行例如4个线程,试试
export OMP_NUM_THREADS=4
在开始您的程序之前。有关如何控制线程的更多详细信息,请查看您的 BLAS 实现手册/文档。