ついに 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 を作る価値ありそうです。やるしかない!
今回からは 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 を作る価値ありそうです。やるしかない!