Cellを搭載したRoadrunnerがスパコン世界1位に

Cellを搭載したスパコン「Roadrunner」が
1PFLOPSを実現したそうです。

Cellが1万3000個近く搭載されていて4GHlzで動作するそうです。
PS3は約3.2GHlzなので、より高速なCellみたいです。

1PFLOPSは1秒で1000兆回の演算ができるって意味です。
たった1秒の間に1000兆回とか未知というか、
こうやっている間にも、何兆、何京といった凄まじい演算を行っていることが、
凄いというか、もうよくわからんです。

なんでも
地球上の60億人すべてが電卓を使って1日24時間、
週に7日間計算したとしても
Roadrunnerが1日で行う計算をするのに46年かかるという。
現実離れしすぎてる。

ここにスパコンのランキングTOP500が載っています。
今まで3年間もスパコンのランキングでトップだった
Blue Gene/Lを抜いて1位になった。
っても、結局Blue Geneと同じIBM社のマシンなのね。
ってかトップ10のなかにIBMのマシンが5台って、IBMってすげ~

wikipediaによると
Blue Gene/Lが478.2TFLOPSとなっていて、
Roadrunnerは1.026PFLOPSだから倍速くなったってことだ。

日本で一番速いのが
T2Kオープンスパコン東大版(?)ってので140TFLOPS
Blue Gene/Lの約半分。
多分、日本で一番有名なスパコンは神奈川にある地球シミュレータで
以前、地球シミュレータの見学させてもらったため、若干思い入れがある。
45TFLOPSと他のに比べると低いけど、
2002年までは世界で一番速かったスパコン。

PS3を使ってCellのプログラムを書いてるけど、
なかなか難しいってのが印象。
Roadrunnerのプログラミングってもっと難しいんだろうな~

数値計算で倍精度の浮動小数点演算って大体必要になってくることが多いけど
Cellは倍精度の演算は苦手だって聞いてたから
どうしたのかと思ってみたけど、
PCWatchの記事で倍精度の浮動小数点演算を強化した
「PowerXCell 8i」ってのを搭載しているらしい。

だったら、数値計算分野での使用を視野に入れてたんだったら
最初から倍精度の演算を高速に処理できるCellを出してほしかった。

にほんブログ村 PC家電ブログ パソコン・周辺機器へ応援お願いします。

Firefox3を使ってみて

公開されたばかりのFirefox3を使ってみた。

事前情報通り非常に表示までが速いです。
サーバーが重くなければかなり速く表示される。

Firefox2を使ってるときは
ネットワークのスピードが遅くて
光ファイバーでもこのあたりが限界なのかなと思ってた。

やれば速くなるもんだな~と思った。
クリックすると速攻で表示される。
Firefox2でも結構速かったけど、体感できるくらい速い。
それに比べIE7は、何かもっさりしてて遅い。(重い?)
動作自体は重くない。表示までが遅くて、イメージ的に重いと思ってしまう。

IE7がリリースされたときは
Firefoxとどっちにしようか迷ったけど、
これならFirefox3の方が断然いい

使い勝手は、そんなに使ってないから分からないけど、
見た目が変わったくらいです。

Mozilla Firefox ブラウザ無料ダウンロード

にほんブログ村 PC家電ブログ パソコン・周辺機器へ応援お願いします。

遠藤正明 カバーアルバム「ENSON」

遠藤さんのアルバム「ENSON」が発売された。
非常に幅広くアニソンをカバーしていて非常に面白いアルバムです。
CMを見てすげー欲しくなり買ってしまった。

曲は以下の通り
1. 創聖のアクエリオン (TVアニメ『創聖のアクエリオン』 )
2. Butter-Fly(TVアニメ『デジモンアドベンチャー』 )
3. 嵐の中で輝いて(OVA『機動戦士ガンダム 第08MS小隊』 )
4. マブラヴ(PCゲーム『マブラヴ オルタネイティヴ』 )
5. キミガタメ(PS2用ソフト『うたわれるもの 散りゆく者への子守歌』)
6. 愛をとりもどせ!! (TVアニメ『北斗の拳』 )
7. GO GO POWER RANGERS (特撮『マイティーモーフィン パワーレンジャー』)
8. 君が空だった(TVアニメ『舞-HiME』 )
9. 明日へのbrilliant road(TVアニメ『宇宙のステルヴィア』 )
10. In the Chaos (TVアニメ『ギャラクシーエンジェル』 )
11. もののけ姫(映画『もののけ姫』 )
12. Wing of Destiny (PS2用ソフト『ギャラクシーエンジェル 絶対領域の扉』)
13. あの河を越えて (TVアニメ『虹の戦記イリス』 )

自分の曲ではないのに自分の曲のように歌いこなす遠藤さんはすごいとしか言いようがない。
特に聴き所としては、「愛をとりもどせ!!」なんかはすごい。
完全に歌いこなしててかつ、ただ歌ってるのではなくて
ちゃんと遠藤さんの味が出てる。
それに、「もののけ姫」もすごい。
あの歌を歌えるのは米良さんだけかと思ってたけど、
あれを歌える遠藤さんはすごい。

他にも「嵐のように輝いて」もいい。
米倉さんの曲もいいけど、
これはこれでオリジナルとしても通用するくらい曲にあっててとってもいい。

他の曲もとてもよくて最高です。
遠藤さんは好きな方はもちろん、
遠藤さんを知らなくてもオリジナルの曲を知ってるなら
是非、聞いてみてください。

にほんブログ村 アニメブログ アニメソングへ応援お願いします。

栗林みな実 ライブツアー&4thアルバム決定

栗林みな実さんが、
8月の27日に4thアルバムを出すそうです、
そして、
10月には2回目のツアーが行われます。

9月20日  愛知県勤労会館
10月4日  NHK大阪ホール
10月5日  サンプラザホール
10月13日 静岡市民文化会館中ホール
の計4日間

一般チケットの受付は8/31から
先行受付は7月23日に発売する
ブラスレイターのOP「unripe hero」に案内用紙があるので
こっちから申し込んだほうが安全です。

8/31はアニサマの期間中なので
俺はチケット申し込みできるか分からないし、
もしかしたら、スーパーアリーナ付近に宿を借りたら
申し込みできるか分からないし、
気持ちは早いけど先行予約で当たってほしい。

 にほんブログ村 アニメブログ アニメソングへ応援お願いします。

Cellのお勉強 DMA転送編

DMA転送についてのアセンブリ編

アセンブラでのDMA転送は
チャネルにパラメータを書き込むことで実行できる。

前回、DMA転送の関数
void spu_mfcdma64(volatile void *ls_addr,
                                       unsigned int ea_h,
                                       unsigned int ea_l,
                                       unsigned int  dma_size,
                                       unsigned int tag_id,
                                       unsigned int cmd);

この関数とまったく同じ動作させるためには
チャネル16番から21番にパラメータを書き込む。

チャネル16番はLSのアドレス
チャネル17番はメインメモリのアドレスの上位アドレス
チャネル18番は下位アドレス
チャネル19番はDMA転送サイズ
チャネル20番はタグ
チャネル21番はDMA転送の種類(送信なら32、受信なら64)
関数の引数順番ととチャネルの番号が対応しています。

spu_writech(imm, 1 ra);
spu_mfcstat(unsigned int type)
では
チャネル22番から24番まで書き込む。
チャネル22番はタグマスク
(チャネル20番に書き込んだタグの値の左に1bitシフトした値)
チャネル23番はタグステータスの更新リクエストの書き込み
( 0なら無条件、1ならどれか一つでも完了していれば更新、2なら全部が終了したら更新)
チャネル24番はタグステータスを読み込み

書き込み命令と読み込み命令は
wrch   ch,    ra
rdch    rt,     ch

ロードストアとか細かな命令について全く説明してなかったので
アドレス計算とかは、また今度と言うことで・・・
今回は、それぞれのレジスタ100番以降にパラメータが格納されていることということにしといてください。
各レジスタの中身ついては、適当にお任せします。

wrch   $ch16,   $100
wrch   $ch17,   $101
wrch   $ch18,   $102
wrch   $ch19,   $103
wrch   $ch20,   $104
wrch   $ch21,   $105

wrch   $ch22,   $106
wrch   $ch23,   $107
wrch   $2,         $ch24

記述だけならこれだけ書けば動作します。
タグの値何かは、
ビットシフトなのでレジスタの値をいじるか、
即値でいれるなら、それはそれで問題ない。
なので、パラメータは格納されているとしても各レジスタに全部入っていれば
最短でこれだけ記述すればいい。

アドレス計算なんかは、ローテートやシフト命令によって計算できるので、
また機会があれば書きたいとは思います。
その前に、ロード・ストアについても書いたほうがいいかな。

DMA転送について(C言語)

今回はCellで最も重要であるともいえるDMA転送について
SPEが参照できるのは自身のLSのみであり
メインメモリは参照できない。

DMA転送によってメインメモリからデータを転送する。
DMA転送命令は
spu_mfcdma64(32)
mfc_get
mfc_put
などがある。

まぁどれがいいのかってのは分からないけど、
動作自体は同じなので問題ない。
今回はspu_mfcdma64について
この関数はこんな感じになっています。
void spu_mfcdma64(volatile void *ls_addr,
                                       unsigned int ea_h,
                                       unsigned int ea_l,
                                       unsigned int  dma_size,
                                       unsigned int tag_id,
                                       unsigned int cmd);

ls_addrはLSのアドレス
es_hとes_lはメインメモリ側のアドレスで
es_hはそのアドレスの上位32bit
es_lは下位32bitとなる。
mfc_ea2h()マクロとmfc_ea2l()ってのが用意されているから
64bitで渡されたアドレス(addrとすると)
mfc_ea2h(addr)マクロとmfc_ea2l(addr)とすると
自動的に上位bitと下位bitに分けてくれる。

dma_sizeはDMA転送サイズを指定する。
DMA転送のサイズは
1,2,4,8,16byteまたは16byteの倍数で最大16kBとなっています。

tag_idはDMA転送のタグをしています。
転送するにあたって問題はないけど、同期をとるときに使用します。

cmdはDMA転送の種類を指定します。
細かいのはよく分からないので
(SPEから見て)送信の場合は32
受信の場合は64を入力します。

一応、MFC_GET_CMDやMFC_PUT_CMDでも送信受信の指定ができます。

同期を取るために
spu_writech
spu_mfcstat
ってマクロと関数が定義されています。

spu_writech(imm, 1 ra);
spu_mfcstat(unsigned int type)

immはMFCに渡すチャネル番号を指定。
MFC_WrTagMaskと書けば問題ない。(数値だと多分22かな?)
raはタグの指定
DMA転送時に指定したタグを、1bit左にシフトした値がタグマスクになります。

typeはDMA転送の終了時にタグが更新されたかを確認します。
MFC_TAG_UPDATE_ALLと書けばいい。
これは上でセットした、タグマスクの完了を待つという意味。
(数値で入力する場合、多分0,1,2のどれを入力したかで動作が変化すると思われる。
0なら無条件、1ならどれか一つでも完了していれば、2なら全部が終了したら・・・
今回の場合は2かな)
詳細についてはフィックスターズのサイトをご覧ください。

自分で定義したものなら、ともかくAPIとして定義されてるのは調べるのが面倒です。
そのためC言語と違ってマクロや関数とかを使わないので、
アセンブラのほうがシンプルです。
次はアセンブリでのDMA転送について説明したいと思います。