最近までnp.dot(A、B)のようなnumpyメソッドを使用していたときまでは、単一のコアのみが使用されていました。しかし、今日、私のLinuxマシンの8つのコアすべてがうまく使用されて以来、これが問題になっています。Numpyは突然すべてのCPUを使用します
最小限の作業例:私の他のラップトップ上
import numpy as np
N = 100
a = np.random.rand(N,N)
b = np.random.rand(N,N)
for i in range(100000):
a = np.dot(a,b)
それは、単一のコア上のすべて正常に動作します。これはいくつかの新しいライブラリが原因でしょうか?
今朝私はpipでmatplotlibとcairocffiを更新しましたが、それだけです。
単一のコアに戻る方法はありますか?
編集:私は
np.__config__.show()
を実行すると
私はnumpy
は、マルチスレッドopenBLASライブラリにリンクされるので、これは可能性があり、次の出力
openblas_info:
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
library_dirs = ['/usr/local/lib']
openblas_lapack_info:
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
library_dirs = ['/usr/local/lib']
lapack_opt_info:
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
library_dirs = ['/usr/local/lib']
blas_mkl_info:
NOT AVAILABLE
blas_opt_info:
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
library_dirs = ['/usr/local/lib']
ありがとうございます。私は自分のLinuxのシェルでexportコマンドを実行し、pythonのtest.pyを使ってコードを呼び出しました。しかし、それは何も変わらなかった。私は何かの助けがあれば、np .__ config __。show()で自分の答えを更新しました。 – physicsGuy
OSモジュールを使用して親和性を設定してみてください。 'os.system(" taskset -p 0x1%s "%os.getpid())'のようなコードを実行してください(これはリンク先のポストにあります)。 –
実際にマルチプロセッシングが問題になる場合は、openBLASではなくATLASを試してみてください。これは簡単に行うべきです。 numBをopenBLASではなくATLASにする方法の詳細については、記事を参照してください。 –