2007/08/26

PS3で素数発見プログラム

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使用不能

<追伸>
今日も暑かったので、部屋に閉じこもってしまった。でも掃除・洗濯は気が済むまでできた。(名も無い)料理を作り、掃除・洗濯もこなす、そんな理想の旦那様像に一歩近づいた。そう思えば、今日もまんざら無駄な一日ではなかったか。