PS3 をクライアントとしても使えて、
サーバーとしてもアクセスできるようになりました。
次は PS3 ならではの使い方として Cell の開発環境を install してみます。
インストール手順同様、こちらのページを参考にさせていただきました
http://cell.fixstars.com/ps3linux/index.php
従来のゲーム機は単なるターゲットとみなしてクロス開発するのが普通でしたが、
PS3 は HDD 搭載で Linux の動く PC として使えるため、自分自身でアプリ
開発を行うことができます。
(1) SPU 用コンパイラ
せっかくなので出たばかりの新しいバージョン CellSDK 2.0 を入れてみました。
http://www.bsc.es/plantillaH.php?cat_id=252
ここから PowerPC で動く SPU 向けの各種ツールをダウンロードします。
表のうち PowerPC の方の SPU と書かれている一式です。
●3.3-72
GNU Binutils
GNU GCC Compiler
GNU GCC C++ Compiler
GNU GDB
GNU newlib C library
GNU Toolchain debuginfo
ダウンロードした *.rpm を PS3 Linux に転送してインストールします。
パッケージのインストールなので、ファイルはどこにおいても構いません。
# rpm -i spu-binutils-3.3-72.ppc.rpm
# rpm -i spu-gcc-3.3-72.ppc.rpm
# rpm -i spu-gcc-c++-3.3-72.ppc.rpm
# rpm -i spu-gdb-3.3-72.ppc.rpm
# rpm -i spu-newlib-3.3-72.ppc.rpm
# rpm -i spu-toolchain-debuginfo-3.3-72.ppc.rpm
インストールは上記の順番で行います。
(2) SPU を使うためのライブラリ
PS3 に Linux を入れるまでの手順
http://ch09144.kitaguni.tv/e327222.html
で作った ADDON CD の Q:\spu の中にある次のファイルを PS3 Linux に
転送します。
libspe2-2.0.1-be0647.3.20061130.1.ps3pf.ppc.rpm
libspe2-2.0.1-be0647.3.20061130.1.ps3pf.ppc64.rpm
libspe2-devel-2.0.1-be0647.3.20061130.1.ps3pf.ppc.rpm
libspe2-devel-2.0.1-be0647.3.20061130.1.ps3pf.ppc64.rpm
elfspe2-2.0.1-be0647.3.20061130.1.ps3pf.ppc.rpm
これらも順番に rpm -i で install します。
(3) Hello World
http://cell.fixstars.com/ps3linux/index.php/PS3%E3%81%A7Hello%2C_World%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
こちらから Hw-samples-all.tar.gz をダウンロードします。
PS3 Linux に転送してアーカイブを展開します。下記の操作は home に転送したと
仮定しています。
$ cd
$ mkdir src
$ cd src
$ tar -zxvf ../Hw-samples-all.tar.gz
$ cd hw-samples-all
$ make
libspe1 を install していないのでエラーが出ますが無視します。
$ cd spe
$ ./spe-main
[SPE] Hello, World!
SPEでコンパイルしたプログラムが動きました。
(4) SPE 用の C/C++ 言語拡張について
SPU_language_extensions_v21_j.pdf
こちらからダウンロードできます。
http://cell.scei.co.jp/
これをみると vector 型が拡張されているのがわかります。
例えば float 4 要素の 128bit 変数は
vector float v1;
のように宣言できます。
残念ながら、HLSL のように自由自在に各ベクトル要素にアクセスできるわけでは
無いようです。(例えば v1.x 等は使えない)
vector 系の演算には組み込みの intrinsics 命令を使うようです。
あとでもう少し詳しくしらべてみます。