PS3での並列プログラミングの基礎をチュートリアル見ながら勉強してましたが、一通り基礎編(SPEプログラミングとかDMA転送とか)はやってみたので、なにかテーマを決めてプログラミングしてみようかと思ってます。
僕は数学が好きなので、「素数発見プログラム」でも作ってみます。
参照:Mersenne Primes:History, Theorems and Lists
素数発見アルゴリズムはいろいろあるらしいですが、上記リンクでも紹介されている「Lucas-Lehmer Test」が一番シンプルで理解可能だったので、先ずはこれに挑戦してみようかと思います。
Psuedo Codeとしては以下の通り
<以下引用>
Lucas_Lehmer_Test(p):
s := 4;
for i from 3 to p do s := s^2-2 mod 2p-1;
if s == 0 then
2p-1 is prime
else
2p-1 is composite;
<引用終わり>
ポイントとしては、非常に大きな数の余り算をするところみたいです。FFT変換を用いるのが常套手段ということです。なんとなく、FFTのライブラリを使えばいいのかな、という漠然なイメージは湧きました。
とりあえずは、ある程度動くプログラムをSIMD化もなにも考えずに作ってみて、その後演算の仮定でSPEにやらせた方がいい部分を見極めていこうかと思います。最初にきちっとした並列化のプランを立てられればいいのですが、とりあえずコードを書いて動かしたいので、なにはともあれやってみようというノリです。
まあ、焦らずやってみますかね。納期も無いし。
<関連記事>
・CellプログラミングのTutorial
・PS3のLinuxにTelnetしてみた
・PS3にLinuxインストール成功したがGUI使用不能
<追伸>
今日も暑かったので、部屋に閉じこもってしまった。でも掃除・洗濯は気が済むまでできた。(名も無い)料理を作り、掃除・洗濯もこなす、そんな理想の旦那様像に一歩近づいた。そう思えば、今日もまんざら無駄な一日ではなかったか。