首页 > 解决方案 > pymc3 不使用 OMP_NUM_THREADS 指定的所有内核

问题描述

我有一个用 pymc3 编写的拟合程序,它利用矩阵的点积,这些矩阵是随机变量的函数。在我编写程序的原始机器上,它会运行并且默认使用所有可用的内核,正如预期的那样。

但是,我最近开始使用一台全新的机器,包括干净安装的python和pymc3。不幸的是,这意味着系统的许多方面都与以前的机器不同,因此很难确定可能导致差异的原因。然而,令我困惑的是,新机器没有使用所有可用或指定的内核(CPU 使用率上限为 100%,而它应该自由浮动到 800%)。

我的 ~/.theanorc 有 openmp=True 和 OMP_NUM_THREADS=8。我的 .bashrc 将 OMP、MKL 和 GOTO 线程设置为 8 只是为了更好地衡量。在 theano/misc/ 中运行 check_blas.py 会显示 800% 的 CPU 使用率。什么可能导致 pymc3 应用程序无法以与机器相关的方式使用所有内核?

谢谢你。

标签: pythonopenmppymc3

解决方案


推荐阅读