2016-05-17 44 views
1

我在千层面/ Theano上运行多个cpu内核的Logistic回归分类器。千层面/ Theano不占用多核而check_blas.py不使用

这是我〜/ .theanorc文件:

[global] 
OMP_NUM_THREADS=20 

theano /其它/ check_blas.py消耗所有20个内核,但我的脚本没有。 当我运行:

python -c 'import theano; print(theano.config)' 

我看到的openmp的值为False:

的openmp() 文件:允许(或不)使用OpenMP在CPU上并行计算。这是创建支持 OpenMP并行操作的默认值。最好通过Theano 配置文件〜/ .theanorc或环境变量 THEANO_FLAGS来定义它。并行化仅对一些执行它的操作完成,并且即使对于实现并行操作的操作,每个操作都可以自由地遵守这个标志或不是。您可以控制与环境变量OMP_NUM_THREADS一起使用的 线程数。 如果它设置为1,我们默认禁用Theano中的openmp。 值:False

有谁知道我应该如何启用我的脚本多核功能?

blas,atlas,openmp等安装在我的系统上,正如我所说的,check_blas.py完美工作。

回答

3

我找到了原因。除了OMP_NUM_THREADS = 20,openmp = True也应该在〜/ .theanorc文件中设置,现在它会消耗所有的20个内核。 我〜/ .theanorc文件如下:

[global] 
OMP_NUM_THREADS=20 
openmp=True 
+1

需要注意的是,如果你使用sudo你应该把.theanorc文件/根。 – Ash

+0

如果创建线程但不使用CPU,一种方法是从源代码安装openblas,并从源代码配置和构建numpy以指向该代码,如下所述:http://stackoverflow.com/questions/11443302 /编译-numpy -with-openblas-integration – Ash

+0

另外,如果你想连接你已经安装的numpy到openblas,请阅读:http://stackoverflow.com/questions/21671040/link-atlas-mkl-to-an-installed- numpy – Ash