2016-05-17 53 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