CELLプロセッサ--tools


tools

google-perftools と fedora version

現在、Cell(PPE) 用のプロファイラーとしては主に google-perftools を使っ ています。プロファイラーとしては他にも、gprof とか、oprofile とかあるので すが、

  • gprof のように関数の出入口でイベントを取るタイプだと、PPE でのソフト の動作が変わる (遅くなる) ため、マルチコアの Cell では、他のプロセッサ (SPE) とのタイミングがずれてしまう。
  • oprofile は、kernel 内のイベントも取ってくれるので、kernel 内の動作 が見たいときは便利だが、PS3 用に用意されている kernel では disable になっ ており、callgraph が (v2.6.16) では使用できない、他のソフトのイベントも 一緒に取るので結果が見づらい。

ということで、残った google-perftools を使っています。これも callgraph がおかしかったり、変数が関数として表れたり、怪しいところがあり ますが。

で、この google-perftools、FC5 の時にはよく使っていたのですが、FC6 に した後、しばらく使用しておらず、久々に使うにあたっててこずったため、現象 をまとめておこうと思います。

なお、SDK は 2.1 を使用し、x264 を 32bit でコンパイルしているため、 google-perftools 自体も PS3 上で以下のようにして configure と make をして います。

$ ./configure CC=ppu-gcc CXX=ppu-g++ CFLAGS=-m32 CXXFLAGS=-m32
$ make

google-perftools-0.8 + FC5

google-perftools 自体のコンパイル、x264 とのリンクが出来ていました。

google-perftools-0.8 + FC6

google-perftools 自体のコンパイルは出来るのですが、x264 とリンクしよ うとすると、以下のようなエラーが出ます。

$ ppu-gcc -o x264 x264.o matroska.o muxers.o libx264.a -lm -m32 -lspe2 -lpthread -lprofiler
/usr/lib/libstdc++.so.6: undefined reference to `_Unwind_GetIPInfo@GCC_4.2.0'
collect2: ld returned 1 exit status
$

マズイなあと思ったのですが、ダメ元で toolchain を SDK 2.1 (ppu-gcc) から FC6 (gcc) に代えてコンパイル (リンク) してみると、

$ gcc -o x264 x264.o matroska.o muxers.o libx264.a -lm -m32 -lspe2 -lpthread -lprofiler
$

出来ました、、実行させてみましたが、エンコード結果も同じになるので、 正しく動作しているようです。

予想としては、エラーメッセージの GCC_4.2.0 から toolchain のバージョ ンの差によるものかなとは思っていますが、判明していません。ま た、_Unwind_GetIPInfo と出ていまずが、x86 の場合はスタック解析用に libunwind というライブラリの使用を推奨しているようです。

ちなみに FC6 の toolchain のバージョンは gcc-4.1.1-30、 binutils-2.17.50.0.3-6 で FC6 インストール時と同じ、SDK 2.1 のバージョン は ppu-gcc-4.1.1-10、ppu-binutils-2.17.50-8 です。

google-perftools-0.91 + FC6

google-perftools 自体のコンパイルが出来ません。調べてみると google-perftools は x86 上でしか動作しなくなったよう (solaris は不明) で、 Fedora ppc 用 rpm も 0.8 までしかないようです。 ML のログ を見ると、PPC MAC OS X 用の patch が流れていましたが、適用しても PS3 で はコンパイル出来ず、、

ということで、

現在は、x264 と google-perftools-0.8 は SDK 2.1 の toolchain でコンパ イルして、プロファイルしたい時は、FC6 の toolchain でリンクのみしています。

Fedora 7 もリリースされていて、この件が判明するまでは、おりを見てイン ストールしようと思っていましたが、思案中です。調べてみると、Fedora 7 の toolchain のバージョンは、gcc-4.1.2-12、binutils-2.17.50.0.12-4 で、FC6 とは違いますね、、


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