株式会社シジャム・ビーティービー
HOME > CELLプロセッサ > cell > cellutils > cellutils で性能評価 take.1

cellutils で性能評価 take.1-CELLプロセッサ

topics

実機 (PS3) も入手でき、PS3 用 Linux (FC5) のインストー...

image

実機 (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 のセットアップでもするか、、

トラックバック

トラックバックURL:

コメントを投稿


※上に表示されている番号を入力してください