先日行った SDPA + GotoBLAS あるいは SDPA + ATLAS の比較実験だが、問題を変えて 8 つの CPU コアの動きについて xosview を用いて調査した。xosview では緑色は CPU コアの上でユーザーのプロセスが動いている状態、水色は CPU コアが遊んでいる状態、オレンジは OS のプログラムが動いている状態になる。
問題:LiH.1Sigma+.STO6G.pqgt1t2p.dat-s
ATLAS : 24.528s
GotoBLAS 1 : 123.839s
GotoBLAS 2 : 27.347s
GotoBLAS 3 : 27.748s
GotoBLAS 4 : 18.740s
ATLAS の場合
CPU(コア) 5 が中心となっているが、全体的に水色が多くてあまり稼働率の良くない状態になっている。
GotoBLAS 1 の場合
全てのコアで遊んでいる時間が多い。まともにソフトウェアが稼働しているとは言い難い状況
GotoBLAS 2 と 3 の場合
GotoBLAS 1 よりは良いが、あまり稼働率は高くない。
GotoBLAS 4 の場合
かなり稼働率も高く動くようになった。
------------------------------------------------------------------------
○実験環境
CPU : Intel Xeon 5550 (2.66GHz / 8MB L3) x 2
Memory : 72GB (18 x 4GB / 800MHz)
OS : Fedora 11 for x86_64
ATLAS 3.9.17
GotoBLAS2 1.08
○GotoBLAS 1
NO_WARMUP = 1
○GotoBLAS 2
NO_WARMUP = 1
NO_AFFINITY=1
USE_SIMPLE_THREADED_LEVEL3=1
○GotoBLAS 3
NO_WARMUP = 1
NO_AFFINITY=1
USE_SIMPLE_THREADED_LEVEL3=1
common_thread.h :111 において
if (omp_in_parallel() || (level == 2)) return 1; から
if (level == 2) return 1; に変更
○GotoBLAS 4
NO_WARMUP = 1
F1 式を用いない場合ではSDPA 内の pthread_create, pthread_join の部分を gotoblas_pthread で置き換える。F1 式を用いる場合では GotoBLAS 1 と同じ。