Previous ToC Next

18. HPL 書き直しその7 (2011/7/21 書きかけ)

ここでは、主記憶に SSD を使う可能性について検討する。

18.1. 検討するべきこと

まず、検討することが何かを考える。

計算手順は、

ブロックサイズは 16K を想定する。行列は 240GB とすると、 150K くらい。

panel decomposition は update 処理に比べると 1/5 程度のアクセスになるの で、並列版では性能低下要因にはならないはず。

こう考えると、update 以外は基本的に問題にならないはずであることがわか る。本当?

18.2. SSD の速度

P8P67 workstation + Prextor 128GB での測定結果まとめ

1台での速度: 読み出し 350-400MB/s、書き込み 180-200MB/s

                   P67     Marvell
     read (2.6GB): 380MB/s 340MB/s
     write(1,3GB): 198MB/s 153MB/s
2台同時

                   P67     Marvell
     read (2.6GB): 364MB/s 281MB/s
     write(1,3GB): 205MB/s 169MB/s
     双方向        131     105
     
なお、 Marvell に2台つけるとそれぞれの速度は半分、P67 では read合計 460MB でサチる。

2台の場合の合計実効速度は 230MB/s、3台だと 310 MB/s となる。

行列乗算に必要な速度は、極めて理想的な、A, B はオンメモリでCだけがSSD の場合 200MB/s なので、計算上は足りる。

18.3. 行列乗算の手順と速度

これは、 U、L がオンメモリかどうかが、、、とはいえ、基本的にはのらない。

読み出しは速い、ということも考慮する必要あり。大体2倍。

まず、ブロックサイズは 8k では不足で 16k が必須。8k ですますには4台必 要だが4台で書き込み 800MB/s はでないため。

  1. オンメモリで 32K 正方行列を持つ
    1. (32 k x 2k), (2kx32k) をそれぞれSSD から読出して、掛け算して積算を8回繰り返す
  2. ディスクにしまう。

というのが簡単な手順だけど、これだと効率が 50% になってしまう。オンメモ リでの計算と、計算が済んだとこの書き込み、まだ計算してないところの読み 出しを並行させる必要あり。

例えば、 16x32 の B (U)と、C を2つ持つことを考える。行列サイズは 32x48 なのでメモリにはまだ十分入る。

16k x 32k の時の速度は

  sandy02 M=16384 N=32768 K=2048 ip=1.6581e-01 jp=2.2204e-01
      fo=2.7792e+00 all=3.1670e+00 694.35 GFlops 
で、ピークの 85% にはなる。まあまあ。通信がもうちょっと速くなれば 87% くらいにはなるかも。この時、基本的な手順は

  1. (すでにメモリにあるわけでなければ) 32k の B, 16k の A, 32k のCをロード
  2. 掛け算と並行して次の A,C をロード
  3. 以下、
    • 計算
    • 前のCの格納
    • 次の A, C のロード
    を並行にやる。

最初のA,Cのロードは頑張れば計算と並行にできる。なので、オーバーヘッドと してみえるものは、最初の B のロード。次の列に移る時には A のロードはな い(再利用できる)ので、Bのロードをすることも可能。

なので、オーバーヘッドは基本的に固定で、最初のBのロードと最後の C のス トアの半分くらい。あれ、B のロードももちろん最初の 2k x 32k 以外は隠蔽 できる?そうすると、隠蔽できないものって本当にに少しだ。基本的にはほぼ 800MB/s で読めるBの 32k分だけ。あとは 16k x 32k で効率を 90% 程度まで 上げることができれば、、、

この場合にどの程度の電力性能が実現できるか、が問題かな。具体的には2を 超えるかどうか。700Gflops/node に行けるかどうかは上のアルゴリズムでは ちょっと難しい。これは、オンメモリでの行列乗算サイズが 16k x 32k と 小さいため、というか、それでは隠蔽できてない通信と遅い通信があるため タイミングは

  sandy02 M=16384 N=32768 K=2048 ip=1.6581e-01 jp=2.2204e-01
      fo=2.7792e+00 all=3.1670e+00 694.35 GFlops 
で、ip, jp の通信量はそれぞれ 256, 512 MB なので、実効的な通信速度が が 1.5 GB/s, 2.4 GB/s である。 これで、理想的に通信の隠蔽ができると 760Gflops まであがる。
Previous ToC Next