研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

Cell SDK 3.0。

2007-10-09 08:31:32 | Weblog
ついに Cell SDK のヴァージョンが 3.0 になりました。
今回からは BLAS や Fortran Compilerの追加など、だんだん環境が整ってきた感がありますが、肝心の実機が Play Station 3 か、Blade Center しかないってのは、どうにかならないものかと思います。価格差が半端じゃないですからね。。。


3.0 からは RHEL に対応するらしく、CentOS で代用を考えているのですが、PS3 では荷が重いでしょう。実行に支障がでそうです。。とりあえず PS3 は Fedora Core 6 のままにして、新たにクロスコンパイル環境を構築予定です。


今回追加された BLAS は、行列のサイズが一定の条件を満たさないと使用できなかったり、他の BLAS とは演算形式が異なるので、同じように使うことは難しいと思われます。ここでは使用頻度が多いであろう LEVEL3 の DGEMM を例にとって見ていきます。

・通常の BLAS (dgemm)
行列A(M x K)、行列B(K x N)、行列C(M x N)という行列に対し、C←αAB+βCという演算を行う。
A、Bを転置、共役転置するかどうか指定できる。

・Cell での BLAS (dgemm_spu)
Mは2の倍数、Nは4の倍数、Kは2の倍数でなければならず、演算もC←AB+Cという演算を行う。
A、Bを転置、共役転置しての演算には対応していない。

単精度演算(sgemm_spu)は、Mは4の倍数、Nは16の倍数、Kは4の倍数でなければならないと、更に厳しくなります。
これに漏れてしまう行列はわんさかあると思いますし、まだまだ Cell BLAS を作る価値ありそうです。やるしかない!