Cell Speed Challenge 2007

http://www.hpcc.jp/sacsis/2007/cell-challenge/
Cell Broadband Engineを使ったプログラムコンテスト。
規定課題部門はfloat値のキー + 値のソーティング。
最初見たときは簡単すぎでは? と思ったけど、よく考えてみると、
いろんな要素が絡んできて、意外と難しい。
特にSPEのLS容量、256KB内にデータを収める必要があるって点が。


限られたメモリで、並列ソートするってことで、
何らかのマージソートアルゴリズムが有力だと思うけれどが、Cellの浮動小数点のデータ形式はIEEE754と同じらしいので、
RadixSortも選択肢に入ってくるかな、と思った。

http://www.radiumsoftware.com/0310.html#031028
http://www.stereopsis.com/radix.html

試しに、家のPC上でfloatのキー値のみをソート、実行時間を計測したところ

STL使ったクイックソートよりRadixSortの方が平均4〜5倍程度速い。
下手にSPE×8で並列マージソートを行うよりも、PPE1個だけ使ってRadixSortした方が速い、
といった間抜けなことになる可能性もあるんではないかと。