blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

List

OMP_NUM_THREADSを設定してnumpyを使う

いきさつ

OMP_NUM_THREADSでnumpyの並列度合いを調整できるらしいので、試してみる。

準備

numpy code

### inv.py ###
import numpy
import time
start = time.time()
for i in range(10):
    A = numpy.random.rand(1000,1000)
    numpy.linalg.inv(A)
print time.time() - start

bash code

for i in 1 2 4 8 16 32
do
   export OMP_NUM_THREADS=$i
   echo $i $(python inv.py)
done

実行結果

実験環境

出力

1 3.95219683647
2 2.63797283173
4 2.21685695648
8 2.24737811089
16 2.14938902855
32 2.3677880764

考察

cpuのコア数が4つなので、スレッドの数が4つまで順調に伸びてますね。 それ以降はどっこいどっこい。 まぁ、つまりはコア数=スレッド数 + αと設定するのが妥当かも。