CELLプロセッサ--cellutils


cellutils

cellutils で性能評価 take.2

前回 cellutils の bandwidth という RAM-LS 間の性能を測るソフトを使用しましたが、今回は eip_bandwidth をいうソフトを使用して、EIB (Element interconnect bus) 自 体の性能を測ってみます。

このソフトも 6 SPE の PS3 ではそのまま使用できませんでしたので修正を 加えています。

試してみたい方は、前回と同様に cellutils に以下の patch を適用し、 eib_bandwidth を make してください。

patch-cellutils-r68-eib_bandwidth-0.1

eib_bandwidth 概要

  • 任意の 2 SPE でペアを作り、ペアとなる SPE 同士で LS - LS の DMA 転 送 (get) を 1.6GB 行う。よって、8 SPE の場合の総転送量は12.8GB (1.6GB*8)。
  • どの SPE でペアを作るかが選択可能 (-p) となっている (選択によって測 定値は変化する)。
  • SPE 数が 8 限定だったので、PS3 用に 6 SPE に修正。ペアのパターンも 5 種類作成。総転送量は 9.6GB (1.6GB*6)。

実行結果

パターン (-p) SPE pair bandwidth (GB/s)
0 0 <-> 3 152.513342
1 <-> 4
2 <-> 5
1 0 <-> 1 137.775224
2 <-> 3
4 <-> 5
2 0 <-> 2 141.184581
1 <-> 4
3 <-> 5
3 0 <-> 5 151.451285
1 <-> 4
2 <-> 3
4 0 <-> 4 115.377573
1 <-> 5
2 <-> 3

簡単な考察

EIB の理論値 204.8 GB/s より測定値 (最大値 152 GB/s) が低い

  • たしかに EIB は 204.8GB/s だが、EIB - SPE 間の帯域は 25.6GB/s であ り、25.6*6=153.6GB/s なのでほぼ理論値に等しい値と言える。

理論値よりかなり低い値 (141GB/s, 137GB/s, 115GB/s) の場合がある

  • 付属の README に 8 SPE の場合の測定値が書いてあるが、こちらも理論値 よりかなり低い値の場合がある。
  • EIB は、時計回り 2 本、反時計回り 2 本の計 4 本のバスから構成されて おり、どっち回りのバスを使用するかは転送対象となる LS (SPE) のバス上の距 離によって決まる。理論値より低い値の場合は、転送が片方の回りに偏ったこと によって起こっていると思われる。
  • 上記が正しいとすると、最適化方法の一つとしてどの処理をどの SPE に割 り当てるかということが浮上してくる。が、PS3 の場合は LSI の歩留まりを向上 するために物理的に 1 SPE 殺しており、かつどの物理 SPE が殺されているかわ からないため、この最適化をやりすぎると動作する PS3 と 動作しない PS3 と か出てくるかもしれない。かな、、

最悪時のパターンは?

  • 付属の README によると理論値の 1/2-1/3 になる場合もあるようなので、 もっと悪い場合のパターンもあるかもしれないが、ソフトから見える SPE が物 理的にどの SPE なのかわからないので今回は追求していません。

cellutils で性能評価 take.1

実機 (PS3) も入手でき、PS3 用 Linux (FC5) のインストールも完了という ことで、今回はバスの性能を測ってみようと思います。誰かもう作っているだろ うということで情報収集したところ、やっぱりありました。

試してみたのは rev:68 です。見てみると他にもいろいろなツールが入って いるのですが、基本的に IBM blade 等の 8 つの SPE が使用できる環境を前提に しているようで、 PS3 では 6 SPE なのでそのままでは使えません。ということ で、今回は bandwidth という RAM-LS 間の転送性能を測定するソフトに修正を加 えて、PS3 用に SPE 数が 1-6 まで使用 (-n) できるようにして、ついでにget、 put の選択機能 (-d) と転送に使用するファイルの領域を制限する機能(-f) をつ けてデータを取ってみました。

実際に試してみたい方は cellutils を co して以下の patch を適用し、 bandwidth を make してください。

patch-cellutils-r68-0.1

bandwidth 概要

  • 16MB のファイルを作成し、RAM -> LS (get)、LS -> RAM (put) を行う。 よって転送するデータのサイズは 32MB。
  • 使用する SPE 数によって上記のファイルを等分割して各 SPE が転送。よっ て SPE の数を増やしても転送するデータサイズは変わらない。
  • 上記の転送にどれだけ時間がかかるかを PPE 側で gettimeofday() で測定。 (測定結果は結構ばらつきがあります)
  • SPE 数が 1, 2, 4 以外だとバグるので 1-6 でいけるように修正。
  • get だけ、put だけができるように機能拡張 (-d)。この場合のデータサイズは 16MB。
  • TLB の影響を見るために、各 SPE がファイルの分担部分の先頭 32KB のみ を繰り返し転送できるよう機能拡張 (-f)。
  • なお、上記拡張機能を使用した場合はデータの verify (-v) は正しく動作 しません。

実行結果

$ ./main -n ? -d 3
SPE num direction file range bandwidth (GB)
1 get,put 16MB 13.543665
2 get,put 16MB 18.396072
3 get,put 16MB 18.792736
4 get,put 16MB 18.824366
5 get,put 16MB 18.824366
6 get,put 16MB 18.882629
$ ./main -n ? -d 1
SPE num direction file range bandwidth (GB)
1 get 16MB 10.198916
2 get 16MB 17.331835
3 get 16MB 19.633957
4 get 16MB 20.397833
5 get 16MB 20.397833
6 get 16MB 20.373062
$ ./main -n ? -d 2
SPE num direction file range bandwidth (GB)
1 put 16MB 15.258950
2 put 16MB 19.668484
3 put 16MB 19.996683
4 put 16MB 20.092474
5 put 16MB 19.960995
6 put 16MB 19.913609
$ ./main -n ? -d 3 -f
SPE num direction file range bandwidth (GB)
1 get,put 32KB 13.957749
2 get,put 64KB 20.360701
3 get,put 96KB 21.250431
4 get,put 128KB 21.277382
5 get,put 160KB 21.250431
6 get,put 192KB 21.183355
$ ./main -n ? -d 1 -f
SPE num direction file size bandwidth (GB)
1 get 32KB 13.288884
2 get 64KB 22.148140
3 get 96KB 23.497503
4 get 128KB 23.663208
5 get 160KB 23.431866
6 get 192KB 23.350336
$ ./main -n ? -d 2 -f
SPE num direction file size bandwidth (GB)
1 put 32KB 21.037260
2 put 64KB 22.550022
3 put 96KB 23.546970
4 put 128KB 23.399187
5 put 160KB 23.285519
6 put 192KB 23.188963

簡単な考察

16MB と 32KB*? (-f) の場合、32KB*? のほうが速い

  • 多分 TLB の変換回数の差が効いている。
  • hugetlbfs を使用すると新たな事がわかるかもしれないが、FC5 の kernel は disable になっているのでやってない。

SPE が 1 (or 2) つの時の bandwidth が少ない

  • ソフト自体の欠陥。このソフトは一旦 DMA 転送を行うと全てが終了するま で待ち、それから次の DMA 転送を行うため、効率が良くないです。
  • このソフトは SPE 毎に最大 4 つの DMA 転送を行いますが、スループット を考慮するとバスの帯域が埋まりきっていない。

get と put を同時に行うよりもどちらか一方のみのほうが若干速い

  • メモリコントローラの仕様を理解していないので何とも言えない。

SPE が 1 つのときの get と put の速度差が大きい

  • 論文に差があるということは書いてあった気がしますが、ここまで大きかっ たかな、、謎です。

そういえば、こんな論文もあるので読み直してみます。

このソフトを土台に機能を拡張するのはいろいろな面から厳しいものがある ので、やっぱり自分で作るかなあ、、

さて、RDT261WH のセットアップでもするか、、


HOME |  企業情報 |  事業内容 |  採用情報 |  社内活動 |  お問合せ |  サイトマップ
.
Copyright(c)2006 Sijam.Inc all rights Reserved
システム開発 株式会社シジャム