blog.monophile.net

コンピュータのこととかのメモ。

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS] においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。

work

各種システム構築と管理を承ります。

Cloud PlatformOpenstack, GCP, AWS, Azure, ...
Openstackkeystone, glance, cinder, swift, neutron, nova, ...
VirtualizationQEMU+KVM, LXD/LXC, Docker, ...
OSDebian GNU/Linux, Ubuntu, CentOS, ...
NetworksIPSec, L2TP, VXLAN, WirelessAP, ...
WebAppsWordPress, GitLab, Redmine, ...
Configuration ManagementAnsible, Terraform, ...
MonitoringNagios, Munin, ...

posts

いきさつ

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

実行結果

実験環境

  • CPU:Athlon2 x4 620
  • OS:Ubuntu 12.10 64bit
  • Python2.7.3

出力

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

考察

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