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

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

SDPA 内部のマルチスレッド化 その1

2009年12月17日 02時11分19秒 | Weblog
SDPA 本体を少し改造して、以下の SDPA-1 を作成した。とりあえずスレッド衝突の問題はほぼ解決できたので、小規模な改造はこのくらいで良いだろう。とりあえず SDPA-1 はすべての問題でほぼ最速になっている。

1: SDPA-1
SCM の計算においては以下のように計算を行う。

1-1: F1 式と F2 式の計算についてはまずシングルスレッドで動作させて、ここから呼び出す BLAS はマルチスレッドで動作させる。
1-2: BLAS を呼び出す部分が終わったら、残りの計算(内積計算)については行の要素をスレッド数で分割してマルチスレッド(OpenMP)で計算。F1 式とF2式は SCM の上の部分で使用されるので、この分割方式が好ましい。
1-3: F3 式の計算部分に関しては、行単位でマルチスレッドで計算させる(OpenMP)。

また、GotoBLAS 2-1.09 をリンクする。これを SDPA 7.3.2βとする。

2: SDPA-2
SCM の計算において F3 式の計算部分だけを OpenMP でマルチスレッド化。F1 式と F2 式の計算部分に関してはシングルスレッドで動作させて、呼び出す BLAS はマルチスレッドで動作させる。GotoBLAS 2-1.09 をリンクする。

3: SDPA-3
添付図の通りの構成。ただしリンクする GotoBLAS は 1.34 になる。

○実験環境
CPU : Intel Xeon 5550 (2.66GHz / 8MB L3) x 2
Memory : 72GB (18 x 4GB / 800MHz)
gcc : 4.4.2
OS : Fedora 12 for x86_64
環境変数 : OMP_NUM_THREADS = 8

●問題1 : FH2+.1A1.STO6G.pqgt1t2p.dat-s
SDPA-1 : 1m36s
SDPA-2 : 1m37s
SDPA-3 : 1m48s

●問題2 : theta6.dat-s
SDPA-1 : 12.4s
SDPA-2 : 12.5s
SDPA-3 : 13.0s

●問題3 : control11.dat-s
SDPA-1 : 27.4s
SDPA-2 : 59.7s
SDPA-3 : 36.3s

●問題4 : D512.dat
SDPA-1 : 19.8s
SDPA-2 : 27.5s
SDPA-3 : 21.3s
コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« MIP に対する LP & SDP 緩和 | トップ | SDPA 内部のマルチスレッド化... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (後藤)
2009-12-15 13:40:54
あとは、疎行列系での処理を改善することでしょうか。まだパイプラインはスカスカなので、倍程度まで改善できると思います。
返信する
Unknown (藤澤)
2009-12-16 01:53:44
まだまだ出来ることはたくさんあります。ただし、前処理に要する時間や一時的にメモリ使用量が増えるという副作用もありますので、ある程度大きな問題向けです。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Weblog」カテゴリの最新記事