株式会社シジャム・ビーティービー
HOME > CELLプロセッサ > cell > libspe > libspe 解析 take.2

libspe 解析 take.2-CELLプロセッサ

topics

前回からちょっと時間が経ってしまいましたが、今回は SPE プログラムのイメー...

image

前回からちょっと時間が経ってしまいましたが、今回は SPE プログラムのイメー ジを PPE のプログラムに組み込む場合の話です。SPE thread を生成する前にそ の実行イメージを (PPE プログラムの空間から) 見えるようにする必要があるの ですが、それには 2 つの方法があります。

  • PPE プログラム生成時に SPE のオブジェクトをリンクする
  • PPE プログラムから spe_open_image() する

ここで後者に関しては spe_open_image() を実行すると SPE プログラムを mmap() し、返り値として spe_program_handle_t 型の変数 (ハンドラ) を返すの で、これをspe_create_thread() の引数として与えればよいことになります。

前者の場合も SPE オブジェクトは PPE プログラムにリンクされているんだ し、何かマクロでもかまして終わりだろと思って Toolchain に付属のサンプルプ ログラムを見てみると、ハンドラは定義されているが extern されていて、実体 がソースコードのどこにも見当たりません。もしかして libspe で何かやってい るのか?と思って見ましたが、何も見付けられず、、

で、サンプルの make 時のログでも見るかということで眺めてみたら、、見 知らぬものがありました。SPE オブジェクトを PPE プログラムにリンクする場合 には ar されたライブラリをリンクに使用しますが、このライブラリを作成する 前に ppu-embedspu というコマンドを実行しています。これは何?と思って見て みると shell script で書かれていて、引数に ハンドラ名や SPE プログラムを 指定すると、SPE プログラムの加工と対応するハンドラの作成をしてくれるよう です。

そんなこと書いてあったか?と思いマニュアルを見直すとたしかにありまし た。

CBE_SDK_Guide_1.1.pdf, p.28 "The ppu-embedspu tool that is part of the GNU tool chain is used to link a PPU executable and a SPU executable into a single Cell BE executable."

覚えてねーよ。

トラックバック

トラックバックURL:

コメントを投稿


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