最適化問題に対する超高速&安定計算

大規模最適化問題、グラフ探索、機械学習やデジタルツインなどの研究のお話が中心

SDPA の改造

2009年02月13日 15時56分37秒 | Weblog
現在は SDPA の改造を行っている。以下は SDPA の出力ファイルの一部である。ボトルネックとなるのは、主に以下の三つの箇所になっている。

1: Make bMat (特に Make bF1, Make bF3) : Schur complement 行列の作成
  これは現在の改造(マルチスレッド化など)で高速化されている(継続中)。
2: Cholesky bMat : Schur complement 行列の Cholesky 分解
  これについてはこれから作業を行う予定
3: makedXdZ : 探索方向の計算
  この部分は行列積(DGEMM)に依存する部分が多い。反対にこの部分が実行時間の多くを占める場合には添付の図のように SDPA 全体の実行時間も O(n^3) に近くなる。

Time(sec) Ratio(% : MainLoop)
Predictor time = 93.160000, 96.021439
Corrector time = 2.390000, 2.463410
Make bMat time = 33.310000, 34.333127
Make bDia time = 0.000000, 0.000000
Make bF1 time = 0.000000, 0.000000
Make bF2 time = 0.010000, 0.010307
Make bF3 time = 48.390000, 49.876314
Make bPRE time = 0.060000, 0.061843
Make rMat time = 0.370000, 0.381365
Make gVec Mul = 0.050000, 0.051536
Make gVec time = 0.080000, 0.082457
Cholesky bMat = 57.680000, 59.451659
Ste Pre time = 0.010000, 0.010307
Ste Cor time = 0.890000, 0.917337
solve = 3.410000, 3.514739
sumDz = 0.080000, 0.082457
makedX = 0.590000, 0.608122
symmetriseDx = 0.010000, 0.010307
makedXdZ = 0.680000, 0.700886
xMatTime = 0.190000, 0.195836
zMatTime = 0.250000, 0.257679
invzMatTime = 0.000000, 0.000000
xMatzMatTime = 0.000000, 0.000000
EigxMatTime = 0.450000, 0.463822
EigzMatTime = 0.410000, 0.422593
EigxMatzMatTime = 0.000000, 0.000000
updateRes = 0.090000, 0.092764
EigTime = 0.860000, 0.886415
sub_total_bMat = 63.710000, 65.666873
Main Loop = 97.020000, 100.000000
File Check = 0.000000, 0.000000
File Change = 0.000000, 0.000000
File Read = 0.090000, 0.092764
Total = 97.110000, 100.092764
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SDPA-GMP 7.1.2 リリース

2009年02月12日 02時08分32秒 | Weblog
SDPA-GMP 7.1.2 がリリースされた。SDPA のサーバ1サーバ2 から入手可能である。原因は分析していないが、以下のように SDPA-GMP 7.1.1 と比べると高速化されている。また MLAPACK を採用しているのも大きな特徴である。

○ソフトウェア: SDPA-GMP 7.1.1 と SDPA-GMP 7.1.2 + GMP 4.2.4
○実行マシン1:Intel Xeon 5460 (3.16GHz) : メモリ 48GB : CentOS 5.2 for x86_64
○実行マシン2:Intel Core i7 965(3.2GHz) : メモリ 12GB : Fedora 10 for x86_64
○実行マシン3:AMD Opteron 2384 (2.7GHz) : メモリ 32GB : CentOS 5.2 for x86_64

1: mcp124-1.dat-s
○マシン1
7.1.1; 1m8.490s
7.1.2; 48.722s
○マシン2
7.1.1; 1m5.561s
7.1.2; 48.083s
○マシン3
7.1.1; 1m22.758s
7.1.2; 1m1.341s

2: gpp124-1.dat-s
○マシン1
7.1.1; 3m34.972s
7.1.2; 3m17.944s
○マシン2
7.1.1; 3m23.640s
7.1.2; 3m14.435s
○マシン3
7.1.1; 4m22.963s
7.1.2; 4m13.984s
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Atom と Vista

2009年02月11日 01時57分18秒 | Weblog
SONY の VAIO Type P のパフォーマンス情報だが、画像の通りで Atom Z520 1.33GHz だと数値的にも感覚的にも苦しいものがある。このマシンでは CPU が非力な代わりにグラフィックスの能力は高くなっている(使用しているとそれほど速いようには感じない)。もともと Atom は非 PC 系の市場開拓のために作られているので、最遅の CPU に最遅の OS を搭載するのには無理がありそうである。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Intel Atom 330 対 VIA Nano L2200

2009年02月10日 00時32分12秒 | Weblog
久々に Atom とベンとマーク対決シリーズが復活した。Atom は組込み系などの非 PC 系機器に搭載されることを期待されていたはずなのだが、Mini ノートなどのローエンド PC のシェアを奪いつつある。確かに安いが相当非力な CPU である。今回は同じ市場で展開されている VIA Nano を相手に選んだ。以下のアプリケーションでは明らかに VIA Nano が有利になっている。

○ Atom
CPU : Intel Atom 330 1.6GHz (2コア x HT)
メモリ : 2GB
OS : Fedora 10 for x86_64

○Nano
CPU : VIA Nano L2200 1.6GHz (1コア)
メモリ : 3GB
OS : Fedora 10 for x86_64

1: GLPK 4.35 整数計画問題
○ stein45.mps
Atom : 4m5.699s
Nano : 2m21.728s
○ air06
Atom : 1m15.126s
Nano : 1m8.467s


2: 最短路問題
○ FLA 10 クエリ(データ名は最短路問題オンライン・ソルバーと同じ)
Atom : 3.390s
Nano : 2.762s
○ LKS 10 クエリ
Atom : 10.049s
Nano : 8.501s


3: SDP (半正定値計画問題) : SDPA 7.2.1 + GotoBLAS 1.29 + MUMPS 4.8.3
○ mcp500-1.dat-s
Atom(1スレッド) : 29.097s
Atom(2スレッド) : 17.254s
Nano : 15.980s
○ theta5.dat-s
Atom(1スレッド) : 3m5.254s
Atom(2スレッド) : 2m4.149s
Nano : 1m44.441s
○ mater-4.dat-s
Atom(1スレッド) : 23.672s
Atom(2スレッド) : 27.503s
Nano : 15.545s
コメント (5)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

新 SDPA Online Solver のシステム

2009年02月09日 02時33分40秒 | Weblog
近日公開予定の SDPA Online Solver について簡単なシステム概要図を作った(以前作成したのを一部修正しただけだが)。現在の Ninf(Ninf-G)の部分を Ruby などで置き換えている。現行の Ninf 部分と異なり Web サーバと計算サーバの接続は ssh を用いているので、広域間の接続が楽になった。ただし単に機能を置き換えるだけではないので、新しい機能を追加することも目的になっている。今度は実行中の状態を出力ファイルから取り出せるようになった。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windows 7 Beta と Wubi

2009年02月08日 02時21分08秒 | Weblog
Windows 7 beta 上で Wubi が実行出来なかったのは、Windows 7 に原因があるのではなく、Microsoft Office IME 2007 の方に原因があるようだ。IME を Microsoft Office IME 2007 からデフォルトの Microsoft IME に戻すと添付画像のように Wubi が動作する(Vista でも事情は同じ)。ただし、Wubi インストール後に Ununtu から boot することが出来ないので、やはり現在の Wubi では Windows 7 に対応していないのかもしれない。評判があまりよろしくない Microsoft Office 2007 だが、また一つ問題点を発見することになった。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Amazon EC2 と SDPA

2009年02月07日 03時08分09秒 | Weblog
以前にも書いたように Amazon EC2 で c1.xlarge タイプのノードを借りている。このタイプの仕様は Intel Xeon E5345 2.33GHz(8コア), メモリ 7GB になっている。提供されるのは仮想マシンだが、ホストのマシンは複数のユーザが共有しているようなので、ソフトウェアの実行時間が動的に変化してしまい数値実験用には向かない。SDPA Online Solver からも Amazon EC2 のノードを呼び出すことも想定しているので、Amazon EC2 のノード上で SDPA を動作させる検証も行っている。
いろいろと試してみて EC2 上でも多少はマルチコア化のメリットが得られるようになった。

SDPA 7.2.1.*** + GotoBLAS 1.29 + MUMPS 4.8.3

○問題 theta6.dat-s
1: SDPA 7.2.1 (1コア) : 1m23.615s
2: SDPA 7.2.1 (4コア) : 1m20.916s
3: SDPA 7.2.1.rev6 (4コア) : 53.421s

一応いろいろと出来るのだが、やはりクラウドの世界なので性能を出すのには向いていない。
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

速い = 熱いこともある

2009年02月06日 13時47分24秒 | Weblog
前回の実験は AMD Phenom 9950 2.6GHz で行ったもので、今回は Intel Atom 330 1.6GHz で実験を行った。

1: SDPA 7.2.1.rev5 + BLAS 3.1.1
Chip 最高温度 38℃; CPU 最高温度: 55℃; Sys. 最高温度 48℃

2: SDPA 7.2.1.rev5 + ATLAS 3.9.5
Chip 最高温度 39℃; CPU 最高温度: 56℃; Sys. 最高温度 48℃

3: SDPA 7.2.1.rev5 + GotoBLAS 1.29
Chip 最高温度 39℃; CPU 最高温度: 60℃; Sys. 最高温度 48℃

今回は速さと発熱の順番が 3 > 2 > 1 で一致した。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SDPA 7.2.1 とマルチスレッド その7

2009年02月05日 01時31分38秒 | Weblog
SDPA 7.2.1.rev6 が出来たので、実験結果を載せておく。毎回どのような作業を行っているのかを文章で説明するのは大変なので、簡単な図を作って一緒に貼っている。

○実行マシン:AMD Opteron 2384 (2.7GHz) : メモリ 32GB : OS CentOS 5.2 for x86_64
○ソフトウェア: SDPA 7.2.1.**** + GotoBLAS 1.29 + MUMPS 4.8.3 (8コアで動作)

1: theta6.dat-s
SDPA 7.2.1 : 35.152s
SDPA 7.2.1.rev4 : 17.270s
SDPA 7.2.1.rev5 : 15.270s
SDPA 7.2.1.rev6 : 15.059s

2: CH2.1A1.STO6G.pqg.dat-s
SDPA 7.2.1 : 5m19.949s
SDPA 7.2.1.rev4 : 3m56.832s
SDPA 7.2.1.rev5 : 3m44.684s
SDPA 7.2.1.rev6 : 3m36.250s
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

速い = 熱いではない

2009年02月04日 16時37分00秒 | Weblog
ソフマップにバーガーパソコンというのがある。安いかどうかはわからないが、お店で即納の状態で陳列してあるので、そのまま持ち帰ることが出来る。以前、バーガーパソコンを購入したら壁紙がバーガーパソコンでなかなか良かったのだが、Windows を再インストールしたら消えてしまった。
買ったマシンは Intel Core 2 Quad Q9450 (2.66GHz) でメモリ 4GB となかなか良い性能なので開発マシンとして使用している。このマシンで SDPA 7.2.1.rev5 + GotoBLAS 1.29 の実験を行っていたら突然”温度が上限を越えた”というメッセージが出てきて自動的に shutdown した。shutdown するということは逆に CPU のリソースを使い切っているということかなと思ったので、lm_sensors を用いて CPU と M/B の温度を測定してみた。

1: SDPA 7.2.1.rev5 + BLAS 3.1.1
CPU 最高温度: 49℃; M/B 最高温度 61℃

2: SDPA 7.2.1.rev5 + ATLAS 3.9.5
CPU 最高温度: 50℃; M/B 最高温度 68℃

3: SDPA 7.2.1.rev5 + GotoBLAS 1.29
CPU 最高温度: 49℃; M/B 最高温度 65℃

速さは 3 > 2 > 1 だが、発熱は 2 > 3 > 1 になる。SDPA が絡んでいるので単純に BLAS だけのときとは結果が異なるかもしれない。
コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SDPA 7.2.1 とマルチスレッド その6

2009年02月03日 02時09分42秒 | Weblog
SDPA 7.2.1 も改良を重ねて rev5 になった。通勤電車内で適当に考えて、その後で職場か家で作って試すという繰り返しをしている。

実行マシンは AMD Opteron 2384 (2.7GHz) : メモリ 32GB : OS CentOS 5.2 for x86_64 になる。
○ソフトウェア SDPA 7.2.1.rev5(または rev4) + GotoBLAS 1.29 + MUMPS 4.8.3 (8コアで動作)

1: theta6.dat-s
SDPA 7.2.1.rev4 : 17.270s
SDPA 7.2.1.rev5 : 15.270s

2: CH2.1A1.STO6G.pqg.dat-s
SDPA 7.2.1.rev4 : 3m56.832s
SDPA 7.2.1.rev5 : 3m44.684s
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windows 7 Beta 64bit その2

2009年02月02日 01時52分38秒 | Weblog
AMD から Phenom II が出てきているのだが、同世代の Shanghai を持っていることと、多分 Core i7 には勝てないだろうという理由から購入はパスすることにした。今年の目標は Inte Nehalem-EP になる。
ところで Windows 7 Beta 64bit を毎日使用している。業者の方がその画面を見て嫌そうな顔をしていたので、理由を聞いてみると見かけが Vista そのままということで Windows 7 も”生理的に”受け付けないそうだ。このブログにアクセスして来ている人が使用している OS を見ると、圧倒的に Windows XP が多くて、次に Linux、その後には Windows Vista, Windows 2000, Macintosh などが同じくらいの数になっている。ちなみに Windows 7 でアクセスすると Windows NT 6.1 と表示される。
Wubi と言って Windows ファイルシステム上に Ubuntu をインストールするツールがあるのだが、Windows 7 64bit beta では動作しなかった。Windows 7 beta かつ 64bit なので、この辺は動作しなくても仕方がない。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SDPA 7.2.1 とマルチスレッド その5

2009年02月01日 15時47分57秒 | Weblog
相変わらず SDPA のマルチスレッド化については、細かい修正や改善を重ねて、少しずつながら性能が上がっている。

1:Schur complement 行列が疎になる場合にもマルチスレッド化を行った。ただし、これは元々計算量が少ないので、多くの問題では効果が出ない
2:図にもあるように Schur complement 行列(上半分だけ)の計算時に、各行を右から左へと計算を行うようにした。ただし同時に計算を行う行は隣接させている。この方が L3 キャッシュ使用の効率が良いらしい。

多くの問題を調べてみるとデータ行列 A_i の各ブロックには1個しか非零要素が入っていない場合が多い。そうなると同じブロックのデータを複数ブロッキングする方法は取れない。次はデータ構造を大きく変えてみることにする。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする