numpy 内部で使われるスレッド数を確認する
numpy は、例えば conda で入れて mkl にリンクされているバージョンでは、内部で使える場所では mkl 側でスレッドを(勝手に)使って計算している。そのため、Python レイヤのプログラミングでスレッドを使わなくても利用できる。
環境変数などを明示的に指定しなくても、勝手にマルチスレッドで動いていた(CPU利用率が複数コア使っている感じだった)ので、どの情報を見ればよいのかと調べると、今は threadpool_infoを見れば解る らしい。
from threadpoolctl import threadpool_info
from pprint import pp
import numpy as np
pp(threadpool_info())
[{'filepath': 'C:\\Users\\hotch\\scoop\\apps\\anaconda3\\2020.11\\Library\\bin\\mkl_rt.dll',
'prefix': 'mkl_rt',
'user_api': 'blas',
'internal_api': 'mkl',
'version': '2020.0.2',
'num_threads': 12,
'threading_layer': 'intel'}]
なるほど、mkl_rt では 12 スレッドと。
環境変数で値をセットしてから見ると
import os
os.environ["MKL_NUM_THREADS"] = "4"
[{'filepath': 'C:\\Users\\hotch\\scoop\\apps\\anaconda3\\2020.11\\Library\\bin\\mkl_rt.dll',
'prefix': 'mkl_rt',
'user_api': 'blas',
'internal_api': 'mkl',
'version': '2020.0.2',
'num_threads': 4,
'threading_layer': 'intel'}]
4に抑えられている。
Author And Source
この問題について(numpy 内部で使われるスレッド数を確認する), 我々は、より多くの情報をここで見つけました https://qiita.com/hotchpotch/items/a17356433ddfbbc991a0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .