KMP_AFFINITY=disabledはコードの冒頭に

0

以下の記事で言及した、KMP_AFFINITY=disabled について続報。

KMP_AFFINITY を disabled に(tensorflow)

os.environ[“KMP_AFFINITY”] = “disabled”

ある日、コードのリファクタリングを進めていた際に、
突然、深層学習の処理時間が長くなる現象が起きた。

色々試した結果、

import keras

より「後」に上述の KMP_AFFINITY=disabled を設定すると
処理時間が長くなる現象を確認した。

処理時間が 2~3 倍となる場合もあれば、6倍になる場合もある。
入力データの量によるのかも。

keras のロードより先に、環境変数[KMP_AFFINITY]に
disabled を設定しておく必要があるのかもしれない。

詳しくないため、確実なことは言えないが、
KMP_AFFINITY=disabled は冒頭の最初の最初に
行ったほうが良さそう。

① 冒頭に disabled を設定した場合、

OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.

で始まる KMP_AFFINITY の出力行が、表示されなかった。

② 逆に、import keras の後に、KMP_AFFINITY=disabled を
設定した場合は、以下の出力が出て、処理時間が大きくなった。

OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #210: KMP_AFFINITY: Affinity capable, using global cpuid leaf 11 info
OMP: Info #154: KMP_AFFINITY: Initial OS proc set respected: 0-15
OMP: Info #156: KMP_AFFINITY: 16 available OS procs OMP: Info #157: KMP_AFFINITY: Uniform topology
OMP: Info #179: KMP_AFFINITY: 1 packages x 8 cores/pkg x 2 threads/core (8 total cores)
OMP: Info #214: KMP_AFFINITY: OS proc to physical thread map:
OMP: Info #171: KMP_AFFINITY: OS proc 0 maps to package 0 core 0 thread 0
OMP: Info #171: KMP_AFFINITY: OS proc 8 maps to package 0 core 0 thread 1
:
OMP: Info #250: KMP_AFFINITY: pid 10590 tid 10590 thread 0 bound to OS proc set 0
OMP: Info #250: KMP_AFFINITY: pid 10590 tid 11341 thread 1 bound to OS proc set 1
:

③ 後日、KMP_AFFINITY=disabled をコメントアウトして
実行したところ、上記 ② と同じ出力・処理時間が得られた。

disabled は import keras の前に、という事らしい。

あと、よく読んでないんだけれど、

ここの記事によると、disabled でなく、none でも良いみたい。
より望ましいと書いてある気もする。

Suggested KMP_AFFINITY settings harm performance

私の事例ではそれほど差がなかったので、disabled のままにした。

カテゴリー:


0