5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

cellプログラミングしちゃいなよ3

1 :デフォルトの名無しさん:2008/07/07(月) 08:55:08
前スレ

Cellプログラミングしちゃいなよ2
http://pc11.2ch.net/test/read.cgi/tech/1183091522/

2 :デフォルトの名無しさん:2008/07/07(月) 08:56:25
Cell Broadband Engine 技術情報公開
http://cell.scei.co.jp/

PLAYSTATION3 Linux Information Site
http://cell.fixstars.com/ps3linux/index.php

The Cell Processor - PukiWiki
http://cell.fixstars.com/pukiwiki/index.php

developerWorks : Cell Broadband Engine resource center(IBMのCell技術情報)
http://www-128.ibm.com/developerworks/power/cell/

Cell Broadband Engine Architecture forum (Cellプログラミングの掲示板)
http://www.ibm.com/developerworks/forums/dw_forum.jsp?forum=739&cat=46

Multicore Programming Primer: PS3 Cell Programming
(マサチューセッツ工科大学のPS3を使ったマルチコアプログラム演習。ソースコードなど有り)
http://cag.csail.mit.edu/ps3/

CellPerformance
http://www.cellperformance.com/articles/

3 :デフォルトの名無しさん:2008/07/07(月) 08:57:33
一応たててみたもののスレタイみすった/(^o^)\

4 :デフォルトの名無しさん:2008/07/07(月) 17:47:02
>>1 乙。久しぶりに話題投下してみる。

あるshort値の配列があって、それをlog2()するような感じで指数が欲しい。
指数未満の値、つまり仮数部は四捨五入する。

また、マイナス値とプラス値は連続させて結果をコンパクトにしたい。
趣味で作ってるプログラムだから結果のフォーマットはこれ以外に変わっても構わない。
疑似コードで書くと、いまのところこんな感じの実装にしてある。

(short)round(log(abs(a))/log(2)) + (a > 0 ? 16 : 0);

で、これを最適化できないかなという話。
とりあえず2つ程考えてみたので貼ってみる。

5 :デフォルトの名無しさん:2008/07/07(月) 17:48:46
vec_short8 log2_1(vec_short8 v) {
  static const vec_uchar16 vPack = (vec_uchar16)
  { 2,  3,  18, 19,   6,  7,  22, 23,
   10, 11,  26, 27,  14, 15,  30, 31};

  vec_short8 v1      = spu_splats((int16_t)1);
  vec_short8 v0x100  = spu_splats((int16_t)0x100);
  vec_uint4  vEven   = (vec_uint4)spu_convtf(spu_mule(v, v1), 0);
  vec_uint4  vOdd    = (vec_uint4)spu_convtf(spu_mulo(v,  1), 0);
  vec_uint4  vExpE   = spu_rlmask(vEven, -22);
  vec_uint4  vExpO   = spu_rlmask(vOdd,  -22);
  vec_short8 vExp    = (vec_short8)spu_shuffle(vExpE, vExpO, vPack);
  vExp = spu_rlmask(vExp + spu_and(vExp, 1), -1); // round
  vExp = spu_add(spu_and(vExp, 0xff), -126)
       + spu_rlmask(spu_andc(v0x100, vExp), -4); // sign
  vExp = spu_andc(vExp, (vec_short8)spu_cmpeq(v, 0));
  
  return vExp;
}

6 :デフォルトの名無しさん:2008/07/07(月) 17:50:12
vec_short8 log2_2(vec_short8 v) {
  static const vec_uchar16 vPack = (vec_uchar16)
  { 2,  3,  18, 19,   6,  7,  22, 23,
   10, 11,  26, 27,  14, 15,  30, 31};

  vec_ushort8 v1     = spu_splats((uint16_t)1);
  vec_ushort8 vIsPos = spu_cmpgt(v, 0);
  vec_ushort8 vAbs   = (vec_ushort8)spu_sel(-v, v, vIsPos);
  vec_ushort8 vRound = (vAbs & ~spu_rlmask(vAbs, -2)) + spu_rlmask(vAbs, -1);
  vec_uint4   vEven  = spu_mule(vRound, v1);
  vec_uint4   vOdd   = spu_mulo(vRound,  1);
  vec_uint4   vExpE  = spu_sub(32, spu_cntlz(vEven));
  vec_uint4   vExpO  = spu_sub(32, spu_cntlz(vOdd));
  vec_short8  vExp   = (vec_short8)spu_shuffle(vExpE, vExpO, vPack);
  vExp += (vec_short8)spu_and(vIsPos, 16); // sign
  
  return vExp;
}

7 :デフォルトの名無しさん:2008/07/08(火) 00:21:46
>>6
同時に32個以上突っ込めるなら後者の方が良いな

8 :デフォルトの名無しさん:2008/07/08(火) 00:25:46
音声圧縮かな?

nop / lq
nop / shufb
csflt / shufb
csflt / shufb
nop / shufb
rlmaskbyte

とか妄想してみた

9 :デフォルトの名無しさん:2008/07/08(火) 07:35:05
>>7
その心は?

>>8
鋭いです。
ところでそのコード、シャッフルが一回多いような気が。
アンパックx2、パック、後は何?

10 :デフォルトの名無しさん:2008/07/10(木) 23:47:30
>>9
パック一回で十分だね

11 :デフォルトの名無しさん:2008/07/15(火) 00:31:59
CUDA本格的になってなんたらエンジン窮地に立たされる

12 :デフォルトの名無しさん:2008/07/15(火) 11:10:40
>>11
よくわかんねーよw

13 :デフォルトの名無しさん:2008/07/16(水) 00:45:58
>>11
大丈夫、スパースエンジンなんて最初っから立場がないから。

14 :デフォルトの名無しさん:2008/07/17(木) 05:09:34
Cell が GPU に敵う進化を続けられるかは別だが。

そもそもの HPC 的視点が、Cell は超並列プロセッサであり、GPU はハイパーSIMD/MIMD なわけだ。
それぞれに得意な分野があるから、どちらが滅んでどちらが栄えるという話ではない。


滅ばないとも言わないが。

15 :デフォルトの名無しさん:2008/07/17(木) 14:44:19
実際問題、超並列プロセッサっていっても、ハイパーSIMD/MIMDと変わらないような用途でしか使ってないだろう。
プロセッサがいくつかあって、すごいことがいつできるんだ。LinuxがSPEに仕事割り振れるようにでもなればなあ。

16 :デフォルトの名無しさん:2008/07/17(木) 15:29:40
ブロードバンドエンジンは内蔵されたホストCPUがPen4程度の低性能、
スパースエンジンは並列度が落ちた挙句にホストCPUが外付け。
某芝の目指す方向はどこなんだか。

17 :デフォルトの名無しさん:2008/07/18(金) 00:24:09
>>15
> 実際問題、超並列プロセッサっていっても、ハイパーSIMD/MIMDと変わらないような用途でしか使ってないだろう。
俺には単に、GPU での処理に向いたアプリケーションの、並列コンピュータからの置き換えが、まだまだ進んでいないだけのようの思える。
そいういう意味で無いなら、俺の知らない分野のことを言っているようだから、教えてくれると有り難い。

18 :デフォルトの名無しさん:2008/07/18(金) 01:41:44
つーか超並列はMIMDでしか作らない訳だが。

19 :デフォルトの名無しさん:2008/07/19(土) 17:18:45
Cellプログラミングをやろうと思い
PS3にxUbuntuをいれSynapticパッケージマネージャでCell-sdkとbinfbinfmts-supportを入れました。
spu-gcc でhello world

20 :デフォルトの名無しさん:2008/07/19(土) 17:21:01
途中で送信してしまいました

Cellプログラミングをやろうと思い
PS3にxUbuntuをいれSynapticパッケージマネージャでCell-sdkとbinfbinfmts-supportを入れました。
spu-gcc でhello worldを表示するプログラムをつくりコンパイルをするところまではできたのですが

いざ実行してみると
spu_create(): no such file or directory
spe_create_single: Bad address
とでてしまい実行できませんでした。

いろいろ調べても見たのですがこれといった解決策も見つからず途方にくれています。
原因をご存知の方がいらっしゃいましたら教えていただけないでしょうか。

21 :デフォルトの名無しさん:2008/07/19(土) 17:28:49
素直にfedoraかYellowdogにしれ。

22 :デフォルトの名無しさん:2008/07/19(土) 17:36:35
レス有難うございます
xUbuntuだと結局Cellやるのには問題多いんですかね・・・
軽いって話を聞いたんですけど。無理そうならFedoraにしときます。

23 :デフォルトの名無しさん:2008/07/19(土) 20:07:23
PS3で開発って辺りが結構無茶っぽい。
いいクロス開発環境ないのかねぇ。

24 :デフォルトの名無しさん:2008/07/19(土) 20:19:10
SPU用のバイナリのファイル名が違ってるか作られてないのでは?
俺のとこはxじゃないUbuntu7.10だけど問題なくセルフ開発できてる

25 :デフォルトの名無しさん:2008/07/19(土) 22:21:43
>>23
そうだよな
開発成果をBDまたは仮想BDで出力する環境が欲しい

26 :デフォルトの名無しさん:2008/07/20(日) 04:17:30
素直に一旦ゲーム屋に行けよw

27 :デフォルトの名無しさん:2008/07/21(月) 14:59:52
>> 20
うちはxubuntuで上手く行ってる。24の指摘通りではないでしょうか。

28 :デフォルトの名無しさん:2008/07/21(月) 16:22:12
>>24,27
レスありがとうございます。
はじめに実行したときcannot execute binary file と表示されたのでSPU用のバイナリが原因かもしれません。
それを解決するためにbinfbinfmts-supportを入れてみたのですが・・・解決にはなってなかったかもしれないですね。
SPU用のバイナリについて勉強不足であまりよくわからないので調べてみたいと思います。

29 :24:2008/07/21(月) 19:54:53
SPU のは普通は直接起動できず,起動するのは PPU 用のバイナリ.
そこから spe_image_open と spe_program_load 使って load する.
さらに thread を 6つ創って spe_context_create, spe_context_run する.
SPU 用のバイナリを埋め込んじゃえば _open の方は要らない.
後,spu-gcc のオプションに -standalone を指定すれば,
直接起動できるプログラムを生成してくれたはず.

30 :デフォルトの名無しさん:2008/07/21(月) 22:19:00
本当にSPUを活用したいなら、
使える立場にいるならSPURSとか、
MARS,Ctk,そのほかの
SPU自律カーネルみたいなのを立てて
それにジョブを投げた方が楽だよ。

31 :デフォルトの名無しさん:2008/07/22(火) 17:07:48
仕事でやるんならそうだね

32 :デフォルトの名無しさん:2008/07/25(金) 17:42:28
ftp://ftp.infradead.org/pub/Sony-PS3/mars
どうなんだい?

33 :デフォルトの名無しさん:2008/07/25(金) 17:46:45
追記
ftp://ftp.infradead.org/pub/Sony-PS3/mars/MARS-GATECH-20080711-final.pdf

34 :デフォルトの名無しさん:2008/07/25(金) 20:04:08
自分も是非感想を聞きたい。

35 :デフォルトの名無しさん:2008/07/25(金) 21:36:54
誰かファイル操作についてのCの制御文?(printfのようなもの)知らない?
知ってる分だけ伝授してほしいです

36 :デフォルトの名無しさん:2008/07/25(金) 22:18:18
>>35
スレ違い。

37 :デフォルトの名無しさん:2008/07/25(金) 22:20:24
MARSってコンテキスト量減らせるだけ?

38 :デフォルトの名無しさん:2008/07/26(土) 16:27:04
MARSでやれるようなことは、GPGPUだとたぶん無理だと思う。こういうことにこそ、Cellの強みがあるんじゃないかな。
実際どれだけ使えるようになっているのかが問題だ。

39 :デフォルトの名無しさん:2008/07/26(土) 17:09:50
データの入れ替えには対応してないみたいだな。(まだ)


40 :デフォルトの名無しさん:2008/07/26(土) 18:03:22
CPUの省エネ、後編(CELL、BG/Lを参考に考える。)
http://www.ne.jp/asahi/comp/tarusan/main190.htm

電力消費量的にLSはよいと。うまくつかえればの話だけど。


それじゃあ、キャッシュとLSを二つ持って、使い分ければいいのかとも思うけど、
2つの使い分けを把握しないといけないから、煩わしさが増えると。

41 :デフォルトの名無しさん:2008/07/31(木) 11:56:30
「5年は追いつけないでしょう」──東芝が作るAVノートの新しい未来形・Qosmio G50の革新性とは
ttp://journal.mycom.co.jp/articles/2008/07/30/qosmio/001.html

通常
ttp://journal.mycom.co.jp/photo/articles/2008/07/30/qosmio/images/005l.jpg
supers engine
ttp://journal.mycom.co.jp/photo/articles/2008/07/30/qosmio/images/006l.jpg

これは結構いいな。

42 :デフォルトの名無しさん:2008/08/01(金) 12:39:21
問題はノートでここまでの要求があるかだが

43 :デフォルトの名無しさん:2008/08/01(金) 13:31:07
映画好きの人とか、結構、本気で欲しがるんじゃないか?
自宅で使うデスクノートとして。まあ、あくまでマニア需要かな。

でも、世間的に意外とこんなんで火がついたりとかありえそうな気もするが。

QosmioのSupersは直接いじれないらしから、すれ違いだけどね。

44 :デフォルトの名無しさん:2008/08/01(金) 18:24:08
アプリは自作用のカードに乗らないから色々なメーカーに期待するって……
自作用カード出しても、エコシステムが回るほどアプリが出てくる思えないな。

45 :デフォルトの名無しさん:2008/08/09(土) 21:36:42
Qosmio G50新兵器、SpursEngineがスゴすぎる件【前編】
http://ascii.jp/elem/000/000/157/157525/

NvidiaのGPUまわせば、SpursEngineいらないんじゃ…。

46 :デフォルトの名無しさん:2008/08/09(土) 21:38:57
The Barcelona Supercomputing Center has a new prototype
to investigate the supercomputing of the future
http://www.bsc.es/media/1762.pdf

Roadrunnerを超えるCellスパコンができるらしい。

47 :デフォルトの名無しさん:2008/08/09(土) 21:52:37
ついにベールを脱いだIntelのCPU&GPUハイブリッド「Larrabee」
http://pc.watch.impress.co.jp/docs/2008/0804/kaigai457.htm

Intel版Cellといろんなところで騒がれていますな。Cellとがちだけど、GPUとして
登場するところは大きな違いであり、?でもある。

48 :デフォルトの名無しさん:2008/08/09(土) 22:01:41
そろそろCellも次世代のバージョンの詳細がでてくるだろうか。2PPE+32SPEがでる
っていう情報はでてるけど、それ以上の話はまだなくて、今まさに検討中なんだろう。

Sonyが腰が引け気味で、Toshibaが違った方向に進みつつあり、IBMはHPC路線で突き進んでいる。

また、PS3の状況は、次世代Cellに大きく関わってくるんだろう。PS3の状況はよくなりつつあるが、
まだ厳しそうだ。次世代に向けて動き出すときこのときに、今のような不透明な状況であることが、
次世代のCellに一体どう作用するか…。Sonyの求心力が弱まることで、よりIBM主導のアーキテクチャに
進むのだろうか?果たして…。

49 :デフォルトの名無しさん:2008/08/10(日) 01:51:45
>>45
> Qosmio G50新兵器、SpursEngineがスゴすぎる件【前編】
> http://ascii.jp/elem/000/000/157/157525/
>
> NvidiaのGPUまわせば、SpursEngineいらないんじゃ…。

GPUでまっとうなC/C++使える日が来たらそうかもね。

50 :デフォルトの名無しさん:2008/08/10(日) 04:02:39
MSが次のXBOXにLarrabee使うんじゃ

51 :デフォルトの名無しさん:2008/08/10(日) 09:51:21
>>49
CUDAでいいんじゃね。

52 :デフォルトの名無しさん:2008/08/10(日) 10:02:33
>>51
> >>49
> CUDAでいいんじゃね。

「まっとうなC/C++」というのはCUDAへの皮肉だよw
Cellの方がはるかに作りやすい。
まぁ作りやすい以上の動機があるからCUDAが使われているわけだけど。


53 :デフォルトの名無しさん:2008/08/10(日) 10:05:28
三角関数も全く使えなくても、最適化が馬鹿でも、メモリ転送命令が低レベルでしか実装されていなくても、
それでもCellの方がはるかに作りやすいんですね、判ります。

54 :デフォルトの名無しさん:2008/08/10(日) 10:15:24
超越関数使えるのは便利だわな。
それ以外のツッコミは的外れ。

55 :デフォルトの名無しさん:2008/08/10(日) 10:41:47
超越関数なんて(細かい注文付けなきゃ)簡単に実装できるだろ?
何が問題なんだ?

56 :デフォルトの名無しさん:2008/08/10(日) 11:31:49
そりゃハードで超越関数の演算器持ってくれてた方がうれしいだろ。

57 :デフォルトの名無しさん:2008/08/10(日) 14:27:13
ハードウェアの超越関数ってスループットが5サイクルくらいなんでしょ?
4要素計算しても20サイクル、馬鹿っ速いじゃないか。

58 :デフォルトの名無しさん:2008/08/10(日) 15:16:58
超越関数つーかsqrtがあれば十分だな。1/sqrtでも良いけど。

59 :デフォルトの名無しさん:2008/08/10(日) 16:28:14
>>52
LSの容量制限でC++はやりにくかろう。結果的にCellもCUDAもそんなに変わらんと思うが。

60 :デフォルトの名無しさん:2008/08/11(月) 01:27:06
>>59
そういうことはどっちもやってみてから言ってくれ。

61 :デフォルトの名無しさん:2008/08/11(月) 11:15:00
どっちもCとちょっとの拡張で書ける程度だからねえ。書くだけならどっちもそこまで大差ないさ。
問題は最適化の段階だな。でも、これもコツを覚えて、そこそこの最適化でいいんならそんなには苦労しないと思う。
個人的な感想では、CUDAのメモリ周りの最適化がちょっと難ありか。Cellは最初からアラインメントとらないとそもそも
DMA転送できないようになっているから、あんまり考える必要ないが、CUDAの場合は、スレッドごとのDRAMへのアクセスパターンを
考えないと駄目というのが、う〜ん。あとshared memoryのバンクコンフリクトを考えないと、とんでもないことに
なるときがある。ここらへんを、コンパイラかハードでなんとかしてくれるといんだけど。


62 :デフォルトの名無しさん:2008/08/22(金) 21:02:45
Qosmio G50新兵器、SpursEngineがスゴすぎる件【後編】
http://ascii.jp/elem/000/000/162/162488/index-3.html
円弧職人の夢がここに


63 :デフォルトの名無しさん:2008/08/25(月) 12:11:23
ググってたらこんなんめっけた

http://www.ibm.com/developerworks/jp/power/library/j_pa-asmvis/
第 1 回 asmVis を試してみよう
http://www.ibm.com/developerworks/jp/power/library/j_pa-asmvis2/
第 2 回 パイプラインを最適化する

64 :デフォルトの名無しさん:2008/09/10(水) 10:54:28
リードテック、東芝のメディアプロセッサ
「SpursEngine」搭載PCIe拡張カード
http://pc.watch.impress.co.jp/docs/2008/0910/leadtek.htm

65 :デフォルトの名無しさん:2008/09/10(水) 23:28:57
(゚听)イラネ

66 :デフォルトの名無しさん:2008/09/19(金) 18:29:04
いくらくらいになるんだ?

67 :デフォルトの名無しさん:2008/09/19(金) 19:06:43
東芝、'09秋に発売のCell TVの高速映像処理をデモ
http://av.watch.impress.co.jp/docs/20080918/toshiba7.htm
45nmを積むんだろな。

68 :デフォルトの名無しさん:2008/09/24(水) 00:02:00
次世代CELLは4PPE+32SPEか

368: 2008/09/22 22:10:38 RPIGcU63O [sage]
>>364
MACオタソースですけど、次世代CELLのクロックは3.8GHz止まりです。

> 6/10のセミナー資料、もう少し掘っていたら次世代CELLについて言及した別のがあったす。
> http://www-06.ibm.com/jp/solutions/deepcomputing/events/pdf/080610_Cell_Strat_JHC_Japan.pdf
>  ・従来型Cell/B.E.わ2009年に45nmプロセス化
>  ・以前のロードマップにあった2*PPE + 32*SPEの"PowerXCell 32ii"わキャンセル。代わりに
>   4*PPE + 32*SPEの"PowerXCell 32iv"へ。
>  ・PowerXCell 32ivの世代でPPEに手を入れる -> PPE' へ
>  ・同じくSPEわ"eSPE"に進化
>  ・クロックも上げる、〜3.8GHz
>  ・その他PowerXCell 32iv世代の特徴わ、下記の通り
>   - 100% backward compatible
>   - PPE性能わ大幅向上
>   - SPEわ新命令追加以外わ現状並 (新命令セットを使用するソフトわ大幅に性能向上)
>   - SPE間の通信レイテンシ削減
>   - More on-chip memory (LS増量か?)
>   - メインメモリアクセスの大域幅増強とレイテンシ削減

69 :デフォルトの名無しさん:2008/09/25(木) 04:02:42
marsが微妙にバージョンUp

70 :デフォルトの名無しさん:2008/09/25(木) 08:23:16
>>68
それ何時出るんだ?
何プロセスで作ったら現実的なんだよ。
んな金があったら、拡張ボードを出すか、現状のアレな点を修正した
マイナーアップバージョン出した方が良いと思うんだが。

71 :デフォルトの名無しさん:2008/09/25(木) 11:45:22
拡張ボードってなんだ?
あれな点とは?

72 :デフォルトの名無しさん:2008/09/25(木) 18:34:33
>>70
微細化が進んだら規模を拡大するのは当たり前の話。サーバ用のCPUなんだから。

それに従来のCellの改良版なら、既に製品化されてるよ。

73 :デフォルトの名無しさん:2008/09/25(木) 19:21:37
>>68が出たらPS3みたいに不良コアをいくらか殺してくれて構わないから安く手に入らないかなあ。

74 :70:2008/09/25(木) 20:43:25
ああ、初代 Cell.B.E は 90nm だったのか。
だったら、4倍増(+LS増量)+αならありえる話か。ごめん。

どちらにしろ、PS3 限定状態じゃ流行らんだろな。
Atom + GeForce の方がやりやすそう。

75 :デフォルトの名無しさん:2008/09/25(木) 21:04:32
そりゃAtomの方が数は出るだろうけど、そもそも競合してないだろ。

ttp://www-06.ibm.com/systems/jp/bladecenter/hardware/qs22/

76 :デフォルトの名無しさん:2008/09/26(金) 15:13:55
Cellの将来はSonyとIBMと東芝がそれぞれ違う分野での使い方を想定し
異なる開発計画を持ってるから、「どの会社の計画なのか?」を
指定しないと話がスレ違いしまくりなんだよな。

Sony:ゲーム機(PS3及びその後継)
東芝:家電(画像処理)&ノートPC用コプロセッサ(SpursEngine)
IBM:ブレードサーバー&HPC用CPU

77 :デフォルトの名無しさん:2008/09/26(金) 16:25:38
BDエンコーダとか、BDエンコーダとか・・・

78 :デフォルトの名無しさん:2008/09/26(金) 18:06:51
Cell触ってみたいな
仕事では絶対やだけど

79 :デフォルトの名無しさん:2008/09/26(金) 18:40:58
>>78
仕事でSuperEngine触るかもしれん

80 :デフォルトの名無しさん:2008/09/26(金) 21:15:49
そいつはSuperですね

81 :デフォルトの名無しさん:2008/10/16(木) 14:54:02
helloworldプログラムを作ったのですが、実行させると。
spu_create(): Invalid argument
spe_context_create: Bad addressとでます。
プログラムソースはfixstarsのチュートリアルどおりで、
PS3にはFedora7、SDKは3.0を導入しました。
ここの>>20さんの質問とほぼかぶっているのはわかるのですが、解決策がわかりません。
>>24さんのいう、バイナリのファイルが違っている、もしくは作られていない場合はどうしたらよろしいのでしょうか?

82 :デフォルトの名無しさん:2008/10/16(木) 19:08:19
>>76
> Sony:ゲーム機(PS3及びその後継)
SCEではなくSonyでなんでゲーム機限定?
音響も視野に入ってくるだろ。

83 :デフォルトの名無しさん:2008/10/18(土) 00:24:16
ヒント: 事業部の壁

84 :デフォルトの名無しさん:2008/10/18(土) 10:04:21
>>81
fixstarsのチュートリアルの3.2章にあるソース(PPE/SPE用)をコンパイルしたということですよね。
私の環境では、Fedora7 + SDK3(厳密には3.0.0.3ですが関係ないでしょう)、で問題なく実行できます。

PS3 linux上でmountを実行した際に、spufsはマウントされていますか?
Linux環境周りの問題のような気がします。

85 :デフォルトの名無しさん:2008/10/18(土) 18:11:22
GT200とかLarrabeeとかのニュースもひと段落して、最近、新しい話がなくて退屈だ。
そろそろ、つぎのCellの話がでてきていいはずだよな。

86 :デフォルトの名無しさん:2008/10/18(土) 18:40:44
初代Cellは出たころは、9コアをいきなり実現して、業界にそれなりのインパクト、影響を与えたと思う。

次のCellは2010年後半で36コアだけど、どうなるだろうか。

さすがに32個もSPEがあると、本質的に今までと変わってくることが出てくる。

まず、一番問題なのはメモリの帯域だろう。現状でも帯域は演算に追いついていないが、
そこまで厳しい要求があるアプリケーションばかりでないので、実用には問題ない。
しかし、次のCellではコア数増で、帯域不足がより問題になるんじゃないだろうか。

IBMはもちろんそこら辺は考えた上で設計してるから、解決してるのだろう。その解決の
仕方がどうやっているのかが聞いてみたい。

次に、性能のスケーラビリティは32SPEでも問題なく保てるのかどうかだ。
これはメモリの話とも関係してくることではあるけど。初代Cellでは8コアで
ほぼリニアにスケールするという話がよく聞かれ、Cellの一つの売りになっていた。
2Cellで16SPEでもスケールするなんて話もあったような気がするが、次のCellでは
どうだろうか。

これが、32SPEくらいまでだったらスケールしたから、32SPEに設計しました
とかっていうのか、もっと100くらいまでいけることを確認しているのか、20個くらいが
限界で、あとは別用途で同時実行してくださいっていうのか、非常に重要だ。

Cellのスケーラビリティがよいというのは、他の半導体メーカーも注目しているはずで、
30個ぐらいでも性能でるめどがあるとなったら、他も真似して追従したくてしょうがないだろう。
8コアくらいまでが実用の上限なんて話もあるから、ここら辺の見極めをしたいはずだ。
まあ、アプリケーションによるけど。でもMARSが32SPEで効果的に働くってなったら、ちょっと
いいんじゃないだろうか?

87 :デフォルトの名無しさん:2008/10/18(土) 19:19:41
このCellのスケール性がLSのコヒーレンシを考える必要がないことが本質だったら、
次のCell、その次のCell(120コアくらい?)で、その効果が指数関数的に出てくるはず。
そうすると、LSの再評価みたいなのが起きてくるんじゃないだろうか。
このLSに相当するGPUのshared memoryはその先取りかもしれないし、もしくは
メニーコアの必然として同じアーキテクチャにたどりついたといえるのかもしれない?
まあ、スクラッチパッドなんて昔からあったから、そんなに偉いもんかわからないけど。

LSといえば、プログラマはみんな容量を増えることを、次のCellでは期待しているだろう。
Cellのスピードチャレンジで今年優勝した人は、LSの容量が本質的に計算の高速化
と関係するようなことをいってた。プログラムが楽とかいうことではなく。
LSの容量が許せば、SPEごとのローカリティの高いアルゴリズムに変更できることがある
というようなことらしい。

Cellがでてだいぶみなが人柱になることで、LSの容量はこれくらいあるべきというのが、
ユーザーからあがりつつある。LSの増加は当然トランジスタ予算を食うわけで、SPE数を増やす
ほうがいいのか、LSを増やすほうがいいのかの天秤につるして、次のLSの容量もきまるんだろう。

次世代のCellで面白いのは、競合するGPUが存在するなかでのデビューになり、Larrabeeとの競争は
激しいものになるだろうことだ。

88 :デフォルトの名無しさん:2008/10/19(日) 02:08:02
PPE:3
SPE:21
LS容量:12MB
これくらいがいい。

89 :デフォルトの名無しさん:2008/10/20(月) 17:17:47
>>84さん ありがとうございました。
エラーの原因は>>84さんの記述どおり、spufsがmountされていなかったためでした。

90 :デフォルトの名無しさん:2008/10/24(金) 11:44:38
mars1.0.0にバージョンアップ

91 :デフォルトの名無しさん:2008/10/27(月) 11:35:38
とりあえずロックフリーキューで全部差し替えないとmutex大杉

92 :デフォルトの名無しさん:2008/10/27(月) 14:01:17
SDK3.1
http://www-128.ibm.com/developerworks/forums/thread.jspa?threadID=231196&tstart=0

93 :デフォルトの名無しさん:2008/11/04(火) 17:49:52
質問なんですが、SDK3.0を入れても、コンパイルエラーが出て、
gccはインストールされていませんとでたのですが、
どこで入手したらよいのでしょうか?

94 :デフォルトの名無しさん:2008/11/04(火) 18:15:30
パスはちゃんと設定してあるのか? いずれにしても、cellプログラミングと関係ないじゃん。

95 :デフォルトの名無しさん:2008/11/05(水) 07:30:28
何この態度でかそうな奴

96 :デフォルトの名無しさん:2008/11/05(水) 08:11:16
お前が言うなw

97 :デフォルトの名無しさん:2008/11/08(土) 00:31:51
Fedora9にSDK3.1とシミュレータをインストールしました。
SDK付属のeclipse上から、シミュレータを実行すると、カーネルを読み込んで
立ち上がったところで、コマンド入力待ちになり、先に進まなくなってしまいます。
何か設定しなければならない項目等があるのでしょうか?


98 :デフォルトの名無しさん:2008/11/08(土) 01:34:37
コマンド入力待ちになるなら、コマンドを入力すればいいんじゃね?

99 :デフォルトの名無しさん:2008/11/08(土) 01:46:11
Run→Open Run Dialog...ウインドウのTargetタブで、起動したシミュレータを指定すればいいですよ

100 :デフォルトの名無しさん:2008/11/10(月) 08:20:40
http://www.ibm.com/developerworks/jp/power/library/j_pa-sdk31/

101 :デフォルトの名無しさん:2008/11/11(火) 20:41:20
フィックスターズ、Yellow Dog Linuxの米Terra Softを買収
http://journal.mycom.co.jp/news/2008/11/11/052/


102 :デフォルトの名無しさん:2008/11/12(水) 10:16:13
http://www.ie.u-ryukyu.ac.jp/~kono/papers/kono/2008/gongo-sigos2008.pdf
http://www.ie.u-ryukyu.ac.jp/~kono/papers/kono/2008/akira-vld.pdf
こんなのあった

103 :デフォルトの名無しさん:2008/11/12(水) 15:31:40
>>102
ワラタ。Cellの開発に東芝の名前が無い。

104 :デフォルトの名無しさん:2008/11/12(水) 21:11:45
Hack the Cell 2009に参加しようかな
ほんとに図書券もらえるならやる気出すんだけど

105 :デフォルトの名無しさん:2008/11/12(水) 21:17:07
社員乙

106 :デフォルトの名無しさん:2008/11/12(水) 21:29:31
レス早いな
結局図書カードじゃね?って話なだけだったんだが

107 :デフォルトの名無しさん:2008/11/13(木) 10:25:46
応募したらHack the Cell 2008に参加ありがとうって言われたけどいいのだろうか

108 :デフォルトの名無しさん:2008/11/13(木) 11:34:08
>>102
揚げ足だけど、一つの文章内でCell Broadband Engineの説明がSPEが7つとか6個とか書いちゃってる時点でアイタタタ。
統一取れてない上にPS3に限定しない一般的な説明としてはどっちも間違ってるw

109 :デフォルトの名無しさん:2008/11/13(木) 16:30:46
PS3をOpenCV on the Cellとして
顔認識のサンプルプログラムを動かしてみたいのですが、
fixstarsの通りにインストールしても巧く動作しません。
(SPEが動いている気配なし)

http://cell.fixstars.com/opencv/index.php/How_to_Build

たぶんパスがちゃんと通ってません。
どなたか解決法を教えてください!!!


110 :デフォルトの名無しさん:2008/11/14(金) 02:08:31
Hack the Cell 2009ってこれのことか。
cellプログラミングのコンテンスか
http://cell.fixstars.com/challenge/index.html

なんで>>107は2008に参加ありがとうって言われたんだw

学生と社会人で部門分かれてるけど・・
どちらにも当てはまらない場合にはどうなるんだ?

111 :デフォルトの名無しさん:2008/11/14(金) 17:20:37
もりあがってまいりました。

112 :デフォルトの名無しさん:2008/11/15(土) 20:53:05
最近C言語の勉強始めたばっかりだけど、Hack the Cellって参加して大丈夫かな?
PHPならかなり得意なんだけど。

でも、優勝しても一緒に海外旅行に行くような友人いないなぁ。


113 :デフォルトの名無しさん:2008/11/15(土) 21:59:26
どーせなら ioccc で笑いをとれ

114 :デフォルトの名無しさん:2008/11/15(土) 23:12:54
PHPが得意でCが出来ない人間ってオブジェクト指向とか知ってるのか気になる

115 :デフォルトの名無しさん:2008/11/15(土) 23:38:33
Cellの知識っていわゆるトリビアだよね。

116 :デフォルトの名無しさん:2008/11/15(土) 23:56:22
2年近く最先端でいられたのである意味役立った。

117 :デフォルトの名無しさん:2008/11/16(日) 06:40:32
これ、家賃収入で食ってる人や無職でも参加できるんだろうか?
学生以外は全部社怪人部門ってなってるけど、会社名とか部署名とか必須項目を埋められないんだが。
素直に会社名「親の家」部署「自宅警備」って書いていいのか?

118 :デフォルトの名無しさん:2008/11/16(日) 11:12:01
なぜおまえはそう卑屈なんだ
自宅警備員に誇りを持て

119 :デフォルトの名無しさん:2008/11/16(日) 11:42:28
PHPならほんとかなり得意だよ
お前らのPCハックくらいは全然余裕
Cellも多分簡単に使いこなせると思う

120 :デフォルトの名無しさん:2008/11/16(日) 14:43:10
釣りは他所でやれ

121 :デフォルトの名無しさん:2008/11/16(日) 16:17:18
>>118
あの登録フォームみてると「何らかの組織に所属してる人間以外は参加禁止」って風に見えるんだ。


122 :デフォルトの名無しさん:2008/11/16(日) 18:17:17
http://www.amazon.co.jp/Programming-Cell-Processor-Graphics-Computation/dp/0136008860

123 :デフォルトの名無しさん:2008/11/16(日) 20:19:39
>>121

自宅警備員代表としてがんばってくれ。
時間が味方をしてくれるはず。

俺はだめみたいだ・・DMAとか良く分からん

124 :デフォルトの名無しさん:2008/11/17(月) 00:53:39
>>110
>社会人部門
>
>学生部門に該当しない人すべての方が対象となります。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
>個人もしくは2名でのチーム応募が可能です。

少しは説明読めよw

125 :デフォルトの名無しさん:2008/11/19(水) 23:23:22
Cell2 Broadband Engine
・ 3PPE (Power Processor Element)
・4.2Ghz
 ・2 threads (can run at same time)
・L1 cache:32KB data + 32KB instruction
・L2 cache:512KB
・Memory bus width:64bit (serial)
・VMX (Altivec) instruction set support
・Full IEEE-745 compliant
・18 SPE (Synergistic Processing Element)
・4.2Ghz
・2 SPE disabled to improve chip yield
・1 SPE dedicated for hypervisor security
・256KB local store per SPE
・128 registers per SPE
・Dual Issue (Each SPE can execute 2 instructions per clock)
・IEEE-754 compliant in double precision (single precision round-towards-zero instead of round-towards-even)

PS4のスペック予想
http://www.edepot.com/playstation4.html

126 :デフォルトの名無しさん:2008/11/20(木) 12:02:06
120%ありえない

127 :デフォルトの名無しさん:2008/11/25(火) 22:47:41
>126
そう? Cellに関してはそんなにぶっ飛んでもいない、
むしろ穏当な予測だと思うが。
PPEを3つも積むかはちょっと疑問だけど。

SPEのローカルストアはやはり256KBが限界なのかなあ?
アーキテクチャ上はもっと増やせるように思うが、
ダイの面積的に苦しいだろうか?

128 :デフォルトの名無しさん:2008/11/25(火) 23:59:01
>>127
●Cell B.E.にeDRAMの大容量メモリ搭載の道も開ける
ttp://pc.watch.impress.co.jp/docs/2007/0216/kaigai338.htm

129 :デフォルトの名無しさん:2008/11/27(木) 13:08:12
http://www.fixstars.com/company/press/20081119.html


130 :デフォルトの名無しさん:2008/11/29(土) 19:43:30
SpursEngineのSDKの解説があるらしい

SpursEngineのイベントを東芝が来週実施、SDKの解説やソフト各社のアピールも
http://www.watch.impress.co.jp/akiba/hotline/20081129/etc_toshiba.html

131 :デフォルトの名無しさん:2008/12/02(火) 23:47:15
XLC で行こう!: 第 3 回 いくらかの手入れはやっぱり必要
ttp://www.ibm.com/developerworks/jp/power/library/j_pa-xlc03/

132 :デフォルトの名無しさん:2008/12/06(土) 01:55:30
ソニーからこんなん出てますな。
ttp://pc.watch.impress.co.jp/docs/2008/1205/sony.htm
ttp://www.ecat.sony.co.jp/business/video_production/products/index.cfm?PD=33164&KM=BCU-100

映像編集用機器扱いだけどどんな使い方を想定してるんだろうか? OS別だし。
こういうのも悪くは無いかも知れないが、PC用拡張ボードの形で
メモリ(XDR-DRAM)をある程度積めてそこそこ安い奴を早く出して欲しい。

PS3よりもっとメモリがたくさん欲しいと思うといきなり100万円コースに
なるのはそろそろ勘弁してください。

133 :デフォルトの名無しさん:2008/12/08(月) 14:31:24
>>132 いまいち、わからんなぁ・・・・・・
結局それって幾らぐらいのしろもので、どの程度の事まで手が回せるんだろう???

なんか、情報がどうでもいい事しかでてなくてなぁ。
たんなるPS3の在庫処分としてなんだろうか?

134 :名無し募集中。。。:2008/12/08(月) 17:27:13
Cell派生のSpursEngineのPCIeボードが発売されているがSDKを年内に無料配布するそうだ
なんだSpursEngineか、と思ったらSPEの開発環境(eclipse)ごとの提供でデバッガも付くらしい
http://www.watch.impress.co.jp/akiba/hotline/20081206/image/sstod8.jpg
ホスト側(PC側)はVisual Studioで日本語ドキュメントも用意されるらしい
http://www.watch.impress.co.jp/akiba/hotline/20081206/image/sstod7.jpg
SpursEngineのボード自体が3万くらいだからPS3買えよって話もあるけどね

135 :デフォルトの名無しさん:2008/12/09(火) 00:19:00
>134
SpursEngine搭載カードはいろいろ出てきたが、肝心のCell搭載カードは
いくら待っても出て来ないな(100マソコースのボッタクリCardは除く)

XDR-DRAM容量を256MBから1GBくらいまで選べてついでにDDR2-DRAMを
1GBくらい搭載できて5万から20万程度のカードがなぜ出せん?
もちろんインターフェースはPCI-Express x 16で。
冷却ファンはゴツイ物が要りそうではあるな。
RSXは使いようが無いんで要らない。

アマチュアプログラマの関心はもっぱらGPGPUに向かってしまうぞ。
あらゆる実験をすべてPS3上でやれってか?FixStarsさん。

136 :,,・´∀`・,,)っ-●◎○:2008/12/09(火) 00:27:49
http://cellbe-cygwin.cvs.sourceforge.net/viewvc/cellbe-cygwin/cellbe-cygwin/ppu-gcc-c%2B%2B-4.1.1-5.cygwin.i686.rpm?view=log

PPE側も含めてWindowsでクロス開発はできる状況になりつつあるんだけどね。


137 :デフォルトの名無しさん:2008/12/09(火) 19:47:54
>>135
ごもっとも。PCにさせるということが、実は一番気軽な近い手段なんだと、実感させられる。
ゲーム機にインストールできるってのは、手軽そうで実はバリアがある。

Nvidiaはそこらへんを知ってか知らずか、かなり本気で環境出しているのがすごい。いくらサポート
がひどいとはいえ、WindowsPCで使えて、VCまで使える環境をそろえるだけで十分強力すぎる。
ひどい日本語とはいえドキュメントもそろえて、開発者用公式の掲示板も作って、やれることをやっている。

Cellはなぜ3社もあるのに、そういうのができないのか…。3社がねじれているからって気もするな。

138 :デフォルトの名無しさん:2008/12/09(火) 22:13:19
nVidiaが必死なだけ

139 :,,・´∀`・,,)っ-●◎○:2008/12/09(火) 22:48:12
成果は出てる分マシだろ。


140 :,,・´∀`・,,)っ-●◎○:2008/12/09(火) 23:16:20
GPUで単精度で500GFLOPS出るビデオカードが2万程度で買えるご時世に
頑張っても200GFLOPS出るかでないかの代物に4万も出して買う奇特な人間もそうそういないからな。
SpursEngineだってMPEG2/H.264のエンコーダ・デコーダと既製ライブラリがあるからこそのもので
SPEだけだったらいくらSDK用意しても誰も食いつかなかったろうよ。
実際問題、リードテックのアレは食いつきがいいのかどうかは知らん。



言語処理系としてCUDAが優れてるのは、SIMDとマルチコアという概念をSPMDモデルにおける
スレッドの概念でうまく隠蔽してること。並列化言語としては非常にシンプルでわかりやすい。

141 :デフォルトの名無しさん:2008/12/09(火) 23:41:14
最後の二行、残念ながら団子に同意。とは言うものの、スレ違いだなw

142 :デフォルトの名無しさん:2008/12/09(火) 23:44:52
SCEはこれぐらいやってもいいんじゃね?
・PLAYSTATION公式ページで「PS3でできること」にLinuxのことをちゃんと書く
とにかく今だにPS3にLinuxをインストールできることがPS3ユーザーにすら知られてない。公式にアナウンスしないから。
サポート対象外の機能です、でいいから。「へーそんなこともできるんだ」と思ってもらったらそれだけで付加価値2万円分ぐらいアップすると思う。

フィックスターズはYDLのリリースに合わせてインストールDVD付きのムック本を出して欲しい。
定期的に。内容は毎回ほとんど同じでもいいから。そういうディスク付きのHOWTO本が出ないと新規ユーザーは増えていかない。
エンドユーザーが増えないとCellビジネスも加速しないよ?

東芝とソニーはCellパソコン作ってよOSはLinuxで。GPUはチップセット内蔵レベルでいい。グラフィックはSPEでやればいいから。ローコスト重視で、細く長く売るタイプの商品にして欲しい。

せっかくいいもん作ったんだから、どんどん前出していこうぜ。

143 :デフォルトの名無しさん:2008/12/09(火) 23:59:02
nVidiaが頑張っている事もCUDAが良くできている事も同意なんだが
日進月歩で且つレンジの違うものにご時世とか言ってるのが痛すぎる。

Cellに未来があるかはともかく。

144 :,,・´∀`・,,)っ-●◎○:2008/12/10(水) 00:24:27
>フィックスターズはYDLのリリースに合わせてインストールDVD付きのムック本を出して欲しい。

フィックスターズ(旧Terrasoft)としては有償サポートを売りたいだろうからこれは無いだろ。
ぶっちゃけ、【Linuxインストールディスクに広告付きの紙の束を売る商売】は今世紀始まって
2年くらいでビジネスモデルとして破綻した。

スポンサー不在というか、スポンサーに対する消費者不在。
Software Designみたいな硬派な雑誌とは違って、ノンサポートのLinuxのCD-ROM付録
楽しみにしてるのはせいぜい個人ユーザーくらいだった。
企業ユーザー向けのカラーを強めると、あくまでクライアントOSとして楽しみたい
個人が置いてけぼり食らう。はなから企業ユーザーはあまりついてきてなかった。
ルータとか仮想化ソリューションとか売りにしても消費者が付いてこないわけよ。
で、広告が取れないからどんどん薄く高くなっていった。

追い討ちをかけるようにブロードバンドやCD-Rが普及しちゃったから、雑誌で
買う意味もなくなっちゃった。
Linux Magagineのまつもとゆきひろ氏の連載は好きだったけどさ。
連載打ち切られてから買う楽しみもなくなったな。

まあPC雑誌全般に言えることだけど。
どういうわけかMac雑誌だけは根強い人気を誇ってる。あれだけは理解不能。


>>143
浮動小数の額面だけに注目した性能・コストパフォーマンスに関してはGeForce 8800シリーズ登場時点で
既に微妙だったよ。つまり初っ端から微妙。その上ゲーム事業がいまあの様だし。
厳密に言えばGPUでやれることはCellのSPEのそれよりも用途を選ぶしメモリの制約も厳しい。
だが言語処理系としてのとっつきやすさの面ではCUDAはそれなりには良いものだ。

要するにCellが訴求力弱いのはその辺だね。
まあ、OpenCLに対応したからっていまさらどうなるもんでもないがな。

145 :,,・´∀`・,,)っ-●◎○:2008/12/10(水) 00:53:49
PS3も日進月歩で価格落ちてくれれば良かったんだがね。2万円台くらいに。
最初から製造原価割れ。
更にダンピング規制法ができて、無茶な値下げができなくなった。
ソフトメーカーがついてきてないのにハード売っても仕方ない面もある。

最近のNVIDIAもハード先行の感はあるが、なにげに昔からゲームソフト開発に対する支援は手厚かった。
機材やライブラリの提供とかな。
メジャーなPC向けゲームタイトルには必ずNVIDIAの広告があるだろ?
CUDAでも同じように技術支援やってるよ。それこそ個人開発のソフトにまで。

一方でSCEはPS3向けソフトの無料体験版をダウンロード数に応じてソフトメーカーに課金とか、
あり得ない資金回収法を実施中。
そういうことは市場掌握して有無を言わせない状態にしてからするもんだ。
DSとかWiiとか360とか他に逃げ場がある状態でやってるからな。これでは逃げるばかり。
打算的な悪行は他にもあるが。
「PS3を中心としたCellベースのエコシステム」の可能性を自ら潰してしまった。

146 :デフォルトの名無しさん:2008/12/10(水) 01:14:53
ムック本自体で儲からなくてもいいんだよ。
エンドユーザーを増やすことが目的だから。
エンドユーザーが増えればCell自体の知名度や注目度も上がってビジネスでの採用も増えるだろうし、
将来の社員の養成、技術者のレベルの底上げもできる。
だからフィックスターズはやるべきだよ。

147 :デフォルトの名無しさん:2008/12/10(水) 07:32:08
これぐらいだなやってるの
ttp://www.playstation.com/ps3-openplatform/jp/index.html
ttp://cell.fixstars.com/ps3linux/index.php/MARS

148 :143:2008/12/10(水) 10:04:28
OpenCLの策定にはIBMもかなり入っててCellに対応するっぽいから生暖かく見守ってる。

149 :デフォルトの名無しさん:2008/12/10(水) 18:47:23
OpenCLが正式にリリースされていつでも使えるようになった後でも
CellだけリーズナブルなPC用拡張カードが出なくて、誰もCell用
OpenCLを使えなかったとしたらなかなか笑える状況だな。

150 :デフォルトの名無しさん:2008/12/10(水) 18:56:38
Cellが生き残るかはアレだけどIBMのOpteron+Cellってのは悪くないと思う。
それぞれ得意分野が全く違うわけで。

理想的にはCPU+Cell+GPUになるべき。
そのためのOpenCLだと思うしね。
CPUでもDSPでもGPUでも同じように記述できて、簡単に切り替え/同時使用出来るようになってる。

当然得意分野が違うわけだからフローまで同じように記述したら性能は生かせないが、
同じ言語で記述できて、とりあえず動くいうのは大きい。

151 :デフォルトの名無しさん:2008/12/10(水) 22:11:42
今AMDとSTIって仲間なの?

152 :デフォルトの名無しさん:2008/12/10(水) 22:43:37
STI?
スバルテクニカインターナショナルとAMDが何か関係があるとは
聞いた事無いな。

153 :デフォルトの名無しさん:2008/12/11(木) 15:37:08
>>150
>理想的にはCPU+Cell+GPUになるべき。
この理想っていうのは何に使うつもりなの?たしかに、GPUで得意なところとCellで得意なところが
補えるという意味では理想かもしれないが、そんな複雑なシステムを使おうっていう人や状況は
本当に限られていると思う。
計算機センターで、いろんな人に対応する共有計算機ならまだわかるが、そんなん使う人いるかどうか…。

154 :デフォルトの名無しさん:2008/12/11(木) 16:45:34
ATIはAMDが買った。良い買い物だったと思うよ。

155 :デフォルトの名無しさん:2008/12/11(木) 22:05:49
>>151の言ってるSTIってちょにー・とーしば(笑)・IBMのことじゃ?
45nmプロセスの開発で協力とか何とかがなかったっけ。

156 :デフォルトの名無しさん:2008/12/11(木) 22:47:09
Sony Toshiba IBMの三社をまとめてSTIと略すのは初めて聞くな。

AMDとIBM(他にも何社か)が半導体プロセス開発
(特にSOIプロセス)でアライアンスを組んでるのは有名だが。

157 :デフォルトの名無しさん:2008/12/11(木) 22:54:11
ttp://en.wikipedia.org/wiki/Cell_(microprocessor)

Cell is a microprocessor architecture jointly developed by Sony Computer Entertainment, Toshiba, and IBM, an alliance known as "STI".


158 :デフォルトの名無しさん:2008/12/11(木) 23:05:46
ヘーヘーヘー! 初めて知ったw。

159 :デフォルトの名無しさん:2008/12/11(木) 23:40:05
そういえばSTIは今回の金融危機でかなりの痛手を負っててリストラを余儀なくされてるけど、
MicrosoftとIntelだけはなぜか不自然なほど傷が浅いんだ。。。

160 :デフォルトの名無しさん:2008/12/12(金) 04:01:59
IntelはAtom馬鹿売れだったからな。小さくて歩留まりもいい製品だから、数さえ捌ければ儲かる。

MSのVista不人気は今に始まったことじゃない。
ソフト事業自体、もともと利益率がすさまじいし。
十分な利益率で十分な労働者を雇えるだけの貯蓄がある。
日本企業だと任天堂がリストラ知らずなのと同じ。

Xbox事業が今期から黒字計上してるのも大きいね(累積だとまだまだ赤だけど)
ドル安は短期的には外貨稼ぎにプラスに働く。


161 :デフォルトの名無しさん:2008/12/12(金) 21:36:06
しかし、STIでも
一番おいしいところはIBMが持っていくと。PC部門の売り時もうまかったし
HDDも・・・IBMはすげーよ。

162 :デフォルトの名無しさん:2008/12/21(日) 21:03:41
/proc/cpuinfoのtimebaseってsysctlとかで読めないのでしょうか?

163 :,,・´∀`・,,)っ-○◎●:2008/12/21(日) 21:26:17
今更Cell用のコード書いてみたんだ
ttp://tripper.kousaku.in/20081217.html#p01

164 :デフォルトの名無しさん:2008/12/25(木) 23:17:21
Hack the Cellの課題発表された
http://cell.fixstars.com/challenge/challenge.html

課題はメルセンヌ・ツイスタの最適化
使用SPE1基、LS256KBのうち210KBが使用禁止。


165 :デフォルトの名無しさん:2008/12/26(金) 08:25:47
あんまり工夫のしどころが無い気が…

166 :デフォルトの名無しさん:2008/12/26(金) 12:45:53
ttp://ftp.uk.linux.org/pub/linux/Sony-PS3/mars/latest/
バージョン1.1

167 :デフォルトの名無しさん:2008/12/26(金) 14:14:24
>>164
もち団子さんに期待

168 :デフォルトの名無しさん:2008/12/26(金) 16:01:05
まるでだんごのために用意したような課題
前書いてたしな
だんご入賞したら尊敬してやる

169 :,,・´∀`・,,)っ-●◎○:2008/12/27(土) 18:34:18
だが断る

170 :デフォルトの名無しさん:2008/12/27(土) 21:03:06
さすが団子さん!

171 :デフォルトの名無しさん:2008/12/30(火) 22:35:11
質問なのですが、Cell SDK のインストールされているFedora 9 にて、
SPE用のCソースプログラム上からpthread_create関数でスレッド生成出来ますか?
要するにSPEのプログラムはマルチスレッドが出来るかどうかと言うことなのですが、
手元にCell環境がないので教えてください。

172 :デフォルトの名無しさん:2008/12/30(火) 23:28:20
>>171
SPEで、まともなプログラミングができると言う甘い幻想はとっとと捨てましょう。
POSIXはおろか、C標準の関数でさえ殆ど使えませんから。

つーか、なんでスレッド生成なんて発想に?
そんなのは、PPEにやらせてSPEは計算に専念するのがCBEの基本ですぜ。

173 :デフォルトの名無しさん:2008/12/31(水) 00:01:37
>>172
ある処理を行う裏側で、SPEからPPEに書き込むデータが50区画ぐらいありまして、
tag番号が32までしかないので、別スレッドでデータを送ろうと思ったのですが・・・。
データの配置を連続的になるように考え直したいと思います。

174 :デフォルトの名無しさん:2008/12/31(水) 02:34:46
>>173
DMAタグをローテーションさせて転送させたらいいと思う

175 :デフォルトの名無しさん:2008/12/31(水) 02:45:01
>>173
あ、裏側でか。
関数を交互に呼んで疑似マルチスレッド、かな。

176 :,,・´∀`・,,)っ-●◎○:2009/01/02(金) 18:37:45
そーいえばSPEで簡単なベンチマークとろうとしてtime.hがなくて吹いた

177 :デフォルトの名無しさん:2009/01/02(金) 20:30:28
そりゃ当たり前だな。

パソコン上のCでtime関係の関数が普通に使えるのはPCが
ハードウェアでリアルタイム・クロックを持ってるからだ。
で、CPUから直接読める空間にレジスタを置いている。

ハードウェアのリアルタイム・クロックがなけりゃ
例えPCのCPUであってもどうしようも無い。


178 :,,・´∀`・,,)っ-●◎○:2009/01/02(金) 20:57:46
まあ使いたいのは時刻よりは時間計測なんだけどな
そこはSPU Decrementerうまく使って代用して欲しかったね
PS3のCellはベースクロックが79.8MHzだっけ
いちおうLinux上からはとれてるみたいだけど

179 :デフォルトの名無しさん:2009/01/02(金) 21:48:24
たかだか数分しか計測できないDecrementerを上手く使えとか。

180 :デフォルトの名無しさん:2009/01/02(金) 22:31:32
clock()でも実装しておいてくれれば楽なんだけどねぇ。
まぁ、所要時間計測はどっちみち環境依存するものと思っているから未だいいのだけれど。

181 :,,・´∀`・,,)っ-○◎●:2009/01/03(土) 07:42:35
>>164
ちょっと弄ったら4倍速くらいになった。
ここまでは当然として、締切ぎりぎりまで粘るかな


182 :デフォルトの名無しさん:2009/01/03(土) 19:31:43
>>181
応募するには最低10倍速だな。さてさて。

183 :,,・´∀`・,,)っ-●◎○:2009/01/03(土) 20:41:32
>>182
実行結果見せてみ?w
コードみせろとは言わない。

184 :,,・´∀`・,,)っ-●◎○:2009/01/03(土) 23:48:52
どっちかというとコードサイズ制限の中でどれだけアンロールするかっていうテーマになりそう

185 :デフォルトの名無しさん:2009/01/04(日) 00:22:09
いやいや、俺は参加してないよ。応募条件だったか、入賞の条件かが、Fixstarsのサイトに10倍速って書いなかった?

186 :デフォルトの名無しさん:2009/01/04(日) 01:46:51
>>184
SFMTをそのまま移植してる?

187 :,,・´∀`・,,)っ-●◎○:2009/01/04(日) 01:53:36
>>184
あれは生成式が別物だからそもそも使い物にならない。
しかし意外と並列化できるね。それこそアンロールしまくれば。
Makefileは弄っちゃ駄目だけど#pragmaは使っていいんだろ?


188 :,,・´∀`・,,)っ-●◎○:2009/01/04(日) 01:55:14
>>186

189 :,,・´∀`・,,)っ-●◎○:2009/01/04(日) 01:56:50
movdquみたいな気の利いたミスアラインデータを処理するユーティリティ関数がなくてうぜーと思いました
shufbですませたけど。

190 :,,・´∀`・,,)っ-○◎●:2009/01/04(日) 05:48:26
7倍までいけた。
コンパイラの指定とかあるの?俺が使ってるのはSDK3.1


IBMが出してるトレースツールでも使おうかな

191 :,,・´∀`・,,)っ-○◎●:2009/01/04(日) 05:50:39
乱数の種と生成する乱数列の長さを決めるseed_tableに含まれるデータは例です。 実際の計測時は変更する場合があります。任意の値で動作するようにしてください。
ただし、以下の二点は仮定して構いません。
- num_randは4の倍数
- num_randは10000以上


なーんだ、仮定して良かったのか

192 :デフォルトの名無しさん:2009/01/04(日) 05:54:04
GCC4.3とXLCってどっちがはやいんだろう。俺はいろいろあってXLC派。

193 :デフォルトの名無しさん:2009/01/04(日) 05:58:40
しかし、コンテストが2つもあるのにこの過疎りよう…。もうちょっと盛り上がっても
いいような気がするぜい。

194 :,,・´∀`・,,)っ-○◎●:2009/01/04(日) 07:35:56
GCC4.3の吐くコードはたまに神がかった最適化をやってくれるんだけどピーキーだな。
速くなったり遅くなったり。
最適化フラグの指定方法によって変わるから、1関数毎に細かく最適化オプションを指定していく必要がある。
これはCellに限らずだけど。

195 :,,・´∀`・,,)っ-○◎●:2009/01/04(日) 08:51:06
>>164
これの
>使用SPE1基、LS256KBのうち210KBが使用禁止。

ってどこに書いてある?

196 :,,・´∀`・,,)っ-○◎●:2009/01/04(日) 08:53:09
あーなるほど、壊れるのか

197 :デフォルトの名無しさん:2009/01/04(日) 15:04:23
>>193
もう一つのコンテストって何?

198 :,,・´∀`・,,)っ-○◎●:2009/01/04(日) 16:36:14
やべー俺優勝しちゃうかも

199 :デフォルトの名無しさん:2009/01/04(日) 17:00:49
Cell Challenge 2009
http://www.hpcc.jp/sacsis/2009/cell/

こっちの方が〆切近いな

200 :デフォルトの名無しさん:2009/01/05(月) 09:27:32
>>198
大丈夫、きっとみんながそう思っている。

201 :,,・´∀`・,,)っ-●◎○:2009/01/05(月) 18:10:03
劇的ではないものの、ちょっと弄ってみただけでも1割くらい平気で性能伸びるな


202 :デフォルトの名無しさん:2009/01/06(火) 20:14:22
一個目、7Mticks切った。
だんごさんに勝てる気はしないけど、準優勝を目指す。

203 :,,・´∀`・,,)っ-●◎○:2009/01/07(水) 04:24:06
そこまでは軽くいけるのか。やっぱり。
俺も自分の変態テクニックがどこまで通用するのかはわからん。

本格的に壁にぶち当たったから使える命令がないか手当たり次第に探ってるところ。
収穫がないようならとりあえず提出一番乗りさせてもらうよ。
暫定だけどレポート書いちゃったし。

これ以上は時間かけても無駄かもと思っている。
マイクロ秒単位の勝負に持ってこられると正直きつい。いろいろ手抜きしてる部分が響いてきそう

204 :202:2009/01/07(水) 10:31:32
>>203
なんかもう行き詰った。
>>202のあともいろいろやったんだけど、あれからどうしても 7M 切れない。
何を工夫しても逆に遅くなる。

アセンブラで書けば >>202 を超えられるかもしれないけど、そこまでする気力は無いや。
odd パイプがきついよね。 even パイプが add と shift だけでも受け付けてくれると助かるのに。

205 :202:2009/01/07(水) 11:39:50
また7Mtics切れるようになった。
ループ一回をマクロにして十数個並べたりとか、お決まりだな。
こっちも、もうそろそろレポート書くか。

206 :デフォルトの名無しさん:2009/01/07(水) 12:28:37
早く提出した方がいいとかあるの???

207 :,,・´∀`・,,)っ-○◎●:2009/01/07(水) 13:00:22
ないね。
考えて答えが見つかるモンでもないし

考えすぎて仕事が手に付かなくなるくらいなら諦めた方がいい。

208 :デフォルトの名無しさん:2009/01/07(水) 16:22:11
7Mticsていうと30倍以上かすげーな
アルゴリズムは基本のままでそこまでいけるの?

209 :202:2009/01/07(水) 16:40:51
>>208
アルゴリズムはそのままだけど、生成した乱数をチェックサム計算だけして直ぐに
捨たりと、実用性を削って速度を稼いでる。

210 :,,・´∀`・,,)っ-○◎●:2009/01/07(水) 16:50:59
いいこと思いついたぞ!
ビットスライスして処理すればいいんじゃね?




(混乱させようとしてるからあぼーん推奨)

211 :デフォルトの名無しさん:2009/01/07(水) 17:11:43
ぶっちゃけCellって将来性はどうなの?
なんかPCのGPUでトリップ計算がCellの10倍の性能たたき出したとか
聞いたんだけど

212 :,,・´∀`・,,)っ-○◎●:2009/01/07(水) 17:21:24
45nmで32コア+PPE2コアのCellが出てるね
自作の改良版Bitslice DESを使うと、PS3でSPE 6コアだけ使って12MTrips/sec程度はいける。
32コア全部使えば64MTrips/sec程度は出る



でもその32コアCellはアホみたいに高いおwwwwww

213 :デフォルトの名無しさん:2009/01/07(水) 18:14:43
当分安くはなりそうもないしねぇ。

214 :202:2009/01/07(水) 19:52:39
>>210
spu_sel() ?
もう使ってるよ (謎笑

7Mまで苦労したのに、「そこまでは軽く」とか言っちゃう人が、さらに速くなるのか・・・
ひょっとして6M切ってる?

215 :デフォルトの名無しさん:2009/01/07(水) 19:58:30
>>202
ミスリードしているぞ。「そこまでは軽くいっちゃう」のはあんたのことだろ。団子は自分のことだとは書いてないぞ。

216 :,,・´∀`・,,)っ-○◎●:2009/01/07(水) 20:08:47
流石にヒントはやれん

>>214
当然

217 :202:2009/01/07(水) 20:09:16
>>215
だんごさんは、 1/4 に ttp://tripper.kousaku.in/20090104.html#p01 までいってて、
1/5 に >>201 とかいってるから、 7M は切ってるハズ。

という前提の元に、 7M 切れた! と言ったら、「そこまでは軽く」と返されたので、
6Mまでいってるのかな、と。
6M逝かれると、逆立ちしても勝てる気がしない。

218 :デフォルトの名無しさん:2009/01/07(水) 20:51:36
32コア版も新型GPUも8〜10億トランジスタ、
ダイサイズは同じくらいになるだろ
歩留まり率はまあアレで同じとして、
SPEだけでも本当に5〜6GHzで動かせるならアドバンテージになるな
メモリ帯域も拡張しないとあんまり意味ないけど

219 :デフォルトの名無しさん:2009/01/07(水) 20:53:28
メモリ拡張した際の端子数考えるとXDRも広帯域実装向けなんだよな

220 :,,・´∀`・,,)っ-○◎●:2009/01/07(水) 21:03:54
業界の問題児RAMBUS

221 :デフォルトの名無しさん:2009/01/07(水) 21:25:09
>>218
それって本当?
じゃあ、32コアCellはGPUとトランジスタ資源は同じで、現行の周波数でも同性能になるの?

感覚的に、GPUのほうが単純な構造だから、同じトランジスタ数ならピークの性能はGPUが上かと思っていた。

もし同等なら、LSの容量の大きさが結構あるってだけで、Cellの強みはすでにあるよね。あと倍精度も上になる。
価格は全然だめだめだろうけど。

222 :デフォルトの名無しさん:2009/01/07(水) 21:30:25
初代の改良ということで、LS1MBとか、SPEのスカラ性能アップとか、PPEの強化とか実現したら結構いいものになるだろうな。
でも、PPEが強化ぐらいしか現実的に無理だろうけど。

まあ、IBMのことだからそういう反省点はちゃっかりPowerに反映してくるだろうなと予測。

223 :デフォルトの名無しさん:2009/01/07(水) 22:03:08
>>222
LSは256KBのままでその分SPE数を増やしてもらった方が嬉しいな。
LS増やしたら確実にSPE載せられる数減るし。

224 :デフォルトの名無しさん:2009/01/07(水) 23:37:17
>>223
>>128


225 :202:2009/01/08(木) 00:41:55
odd命令をeven命令に切り替えた。
というか、あの命令がeven命令だと知らなかった。
俺にも6Mが見えてきた。

226 :デフォルトの名無しさん:2009/01/08(木) 02:12:54
spu-gcc43 に変更されてる & FAQ追加されとる。

227 : ◆eZQcaIaFJs :2009/01/08(木) 02:30:19
oddとevenの違いが分かってきて、何とか7Mtick切れた@gcc43。

# 課題の再提出って出来るんだろうか…。フライングしすぎて失敗してもうたorz


228 :,,・´∀`・,,)っ-●◎○:2009/01/08(木) 04:15:43
はやく提出して得することなんてあるのか?
フィックスターズからのスカウトでも狙ってるの?

229 :,,・´∀`・,,)っ-○◎●:2009/01/08(木) 04:20:50
つーか、何の意図があってspu-gcc43なんだ?
おかげで50倍超えたおwww
なぜならオリジナルのほうが遅くなったから

230 :202:2009/01/08(木) 10:27:46
spu-gcc43 にしたら、ORIGINALが遅くなって、40倍以上平気で出るなw

・・・よし、6M

231 :デフォルトの名無しさん:2009/01/08(木) 11:20:52
再提出可になってる。@FAQ
っていうおいらはリモート開発環境に scp できない次元で奮闘中。
みんな出来てんのかなぁ???

232 :デフォルトの名無しさん:2009/01/08(木) 11:34:07
>>228
フィックスターズからのスカウトでも狙ってるの?

233 :,,・´∀`・,,)っ-○◎●:2009/01/08(木) 11:38:57
どっちにしろ再提出何度もできるなら、しないよりはした方が得だな

234 :デフォルトの名無しさん:2009/01/08(木) 11:40:07
50倍超えたおwww
もう削れる気がしねぇ。だんごさんに並べてたら嬉しいな。

235 :202:2009/01/08(木) 11:40:56
234=202

236 :,,・´∀`・,,)っ-○◎●:2009/01/08(木) 12:05:25
そもそもORIGINAL側がコロコロ変わるからなぁ
まあ、やることはコンパイラの機嫌取りの作業だな

237 :,,・´∀`・,,)っ-○◎●:2009/01/08(木) 12:47:32
次はCUDAに取りかかるかな

238 :デフォルトの名無しさん:2009/01/08(木) 15:34:46
ところで顔と名前晒して表彰台に立つの?

239 :デフォルトの名無しさん:2009/01/08(木) 16:33:45
ってか、社名も晒されるのかなぁ…

240 :,,・´∀`・,,)っ-○◎●:2009/01/08(木) 18:21:39
>>239
会社名で申し込んだのか?

241 :デフォルトの名無しさん:2009/01/08(木) 19:33:21
さすがに必須項目で嘘書くのも憚られるっしょ。

242 :デフォルトの名無しさん:2009/01/08(木) 21:05:22
どうせだんごの50倍とかフカシだろ?
なんだかんだ理由付けて結局は提出しないと見た。
コンテスト終了後にだんごがソース公開しなかったらフカシ確定

243 :,,・´∀`・,,)っ-●◎○:2009/01/08(木) 21:43:17
俺の中の人も本質を求める人間だ
たとえばさ、学生部門の優勝者って奨学金を年60万円もらえるでしょ。
社会人枠でたかだか42インチのテレビっていうか15万円相当のギフト券優勝狙うよりは、
より額が大きい学生枠で聞き分けのいい後輩に入れ知恵したほうが得

ってのは極論。しかし、特に勝つことには拘ってない。
ちなみに優勝候補は5x倍の圧倒的な性能をたたき出した上で既に提出済みって情報ならあるよ。
ビット演算の論理式レベルで最適化したレポートをひっさげて、ね。

#だんごやさんのマイミクにガチのフィックスターズ社員さんがいます。今回の出題者かもね?

244 :,,・´∀`・,,)っ-●◎○:2009/01/08(木) 21:54:38
>>238-239はたぶんCell Speed Challengeのほうだろ。あれは大学・企業対決の意味合いが強いから当然だ。
フィックスターズのほうは会社の名義を書く必要がないので自宅警備員ですら応募可能です。

245 :202:2009/01/08(木) 21:59:51
なんか心理戦になってるw
圧倒的な性能って、、、だんごさんも 5x倍でしょーに。

だんごさんが優勝候補でないとすると、俺は準優勝すらムリポだが、
一応50倍逝ったので終了後ソース公開するよ。

246 :,,・´∀`・,,)っ-●◎○:2009/01/08(木) 22:06:44
っていうかIPC上限考えれば論理式レベルで手を入れない限り限界突破は不可能

247 :,,・´∀`・,,)っ-●◎○:2009/01/08(木) 23:16:35
ちなみに「団子厨」は優勝云々以前に参加登録すらしてませんので。
偽名はまずいらしいからね。

2人までのチーム参加OKなの知ってた?
今回はだんごやさんではない代表名義で、実質俺だけでやってます。
優勝か準優勝になったらPS3を彼にあげるってことで手を打った。

248 :,,・´∀`・,,)っ-●◎○:2009/01/08(木) 23:57:17
っていうか、優秀者のコードはBSDライセンスで公開されることになってるから
終了後に公開ってのも無意味だと思うんだ。

アセンブリ出力と実行形式一式を暗号化ZIPでアップロードして
コンテスト終了後にパスワード公開するってのはどうかな?

249 :デフォルトの名無しさん:2009/01/09(金) 00:12:41
で、みんなで pikazip challenge ですね。わかります。

250 :デフォルトの名無しさん:2009/01/09(金) 00:13:52
おいらまだ普通に並列化しただけで10倍の状態… orz
50倍はしんどそうだなぁ。あ、今 gcc 4.1 なんだけど、
4.3 にしたらどんくらい違うんだろ? 4.3 のオリジナルって
何 ticks くらい?

251 :,,・´∀`・,,)っ-○◎●:2009/01/09(金) 00:16:43
4.3でやれ。

252 :,,・´∀`・,,)っ-○◎●:2009/01/09(金) 00:17:14
一番上が29Mticksくらい

253 :227 ◆eZQcaIaFJs :2009/01/09(金) 00:17:58
何とか6MTick突破。spu_timing 見る限りもっと詰められそうな気もする…。
これからドルアーガの中継見て寝る。

>>228
今は3Dプログラミングだけに集中したいと思っていたりもします。


254 :デフォルトの名無しさん:2009/01/09(金) 00:21:06
spu_timing ってなんですか?とググらずに聞いてみるテスト。

255 :,,・´∀`・,,)っ-○◎●:2009/01/09(金) 00:35:28
もっと画期的なモン使えよ
http://up2.viploader.net/pic3/src/vl2_092246.gif

256 :250:2009/01/09(金) 02:25:25
>>252
ども。29M って事は、50 倍だとやっぱとりあえずの目標が 6M なのね。
いま、ちょっとやったら 10M@gcc4.1 にはなった。さっきは 20M。
さらに半減かぁ。だんだん最適化できる所が減ってきたなぁ。

257 :202:2009/01/09(金) 10:38:25
アンローリングしまくったら遅くなって、アセンブラ見るとローカル変数をLSに読み書きしてる・・・
コンパイラがバカなのか、レジスタ128個じゃパイプライン詰められないのか、よく判らん。

258 :デフォルトの名無しさん:2009/01/09(金) 11:02:56
5.6M切ったよ

259 :202:2009/01/09(金) 11:05:40
うぁー、5M台増えてきたな。
みんなすげー。

260 :202:2009/01/09(金) 11:13:40
現在確認されている5M台は、だんごさん、俺、>>227>>258 と、リーク情報の提出者か。
提出者 = >>258 だったりしないのかな?

261 :202:2009/01/09(金) 11:18:35
トリップ付けて、コードのコメントにトリップパスつけるという手もあるな。

262 :258:2009/01/09(金) 11:48:22
団子先生(笑)と同じチームだったりします。

263 :デフォルトの名無しさん:2009/01/09(金) 11:58:18
>>262
名前貸してPS3をゲットを狙ってる人か
>>247の書き込みみると,学生部門じゃなく社会人部門で参加してるのね


ところでCellチャレやってる人はいないのかな
ここ学生少ないんかね?

264 :デフォルトの名無しさん:2009/01/09(金) 13:47:18
トリップで mt_mine.c の sha1sum 書き込んどきゃいいじゃん

265 :,,・´∀`・,,)っ-○◎●:2009/01/09(金) 17:17:15
証明する気など更々ないんだが

中の人は中の人名義で別の活動やってるからこっちの名前で技術的名声得ても何のメリットもないし。
だんごやさんとは所詮「記号」だ。tanasinnなみに退廃的な概念だ。
なによりでしゃばりすぎだ、だんごやさんは

266 :202:2009/01/09(金) 22:38:08
>>264
一度トリップ付けたら、その後ソース改変できなくなるじゃん。

267 :264:2009/01/09(金) 22:44:14
ん??改変したらまた新しいの書き込めばいんじゃん?

268 :デフォルトの名無しさん:2009/01/10(土) 01:09:01
>212
「45nmで32コア+PPE2コアのCell」がどこかで発表されたの?
論理設計してみただけとか言う話じゃなく、試作チップくらい作られた?

検索したけど見つからなかったので差し支えなければソースを教えてくれ。

269 :デフォルトの名無しさん:2009/01/10(土) 03:45:46
>>268
http://www-06.ibm.com/jp/solutions/deepcomputing/events/pdf/ibm.pdf

270 :,,・´∀`・,,)っ-●◎○:2009/01/10(土) 03:46:09
勘違いだった。投入は来年(2010年)ごろらしいよ。

271 :227 ◆eZQcaIaFJs :2009/01/10(土) 04:50:14
今日と月曜休日出勤命令が出たと言うのに、こんな時間まで現実逃避して
しまって良いのだろうか…。

>>255
何この芸術的な画面。こっちは一画面分片側無しとか有るんですがw

>>258
ようやく追いつけた、けど次にやるべき事が見えてこない罠。


272 :,,・´∀`・,,)っ-●◎○:2009/01/10(土) 07:05:00
一番綺麗なところ見せてるに決まってるじゃんか。

Odd側でレイテンシ1なのはlnopかhbrだと思っていいよ。

273 :202:2009/01/10(土) 10:42:06
5.6M切ったところに壁があるのかな?

274 :,,・´∀`・,,)っ-○◎●:2009/01/10(土) 13:16:46
なんで速くなったのかわかんねーが理論限界にまた一歩近づいた

275 :,,・´∀`・,,)っ-○◎●:2009/01/10(土) 17:56:53
>>273
1%上げるのすら絶対無理な境地に達した。

276 :202:2009/01/10(土) 18:13:37
>>275
mjd!? 優勝候補ブチ抜けるんじゃない?
俺も準優勝以上目指して頑張ろう。

プライベートがゴタゴタしまくってて、せっかくの休みなのに殆ど弄れねー。

277 :,,・´∀`・,,)っ-○◎●:2009/01/10(土) 18:32:08
っていうかね

コアループの内側の片方パイプ側が全部隙間無く埋まっちゃって
これ以上どうしようもないんだよね

外側をどうにかするとかいうレベルでのチューンしかできない。

とはいってもTick数が10とか20変わるレベルなんだけど

278 :,,・´∀`・,,)っ-○◎●:2009/01/10(土) 20:29:05
優勝候補ってのはオレのチームに決まってるだろ

279 :202:2009/01/10(土) 22:05:00
>>278
ちょw、>>243の優勝候補って団子さん自身だったのかよwww

他人のスコアをリークするfixstars社員がいるのかと思ったよ。

280 :,,・´∀`・,,)っ-○◎●:2009/01/10(土) 22:18:04
っていうか>>271見て焦った
だが、普通無理だろっていう境地に達した

敢えて言う
spu-gcc43の特性見切った

281 :デフォルトの名無しさん:2009/01/10(土) 22:24:15
>>280
のちの団子氏によると、ここが真のスタートラインだったという。

282 :,,・´∀`・,,)っ-○◎●:2009/01/10(土) 22:48:46
スタートラインに立ってる人間いくらいるんだろうな?
ループ内で片方のパイプ全部埋まってる状態なんだが。
埋めるのしんどかった。アセンブラ使わずにだからな。

283 :デフォルトの名無しさん:2009/01/10(土) 23:00:01
というコメントを書き込み、団子氏はふと気付いた。
「アセンブラを使ったら…」

284 :,,・´∀`・,,)っ-○◎●:2009/01/10(土) 23:05:56
じゃあ質問してきてよ。
アセンブラ使っていいかどうか

っていうか変数おっかけるのめんどくせぇ

285 :デフォルトの名無しさん:2009/01/10(土) 23:16:34
というコメントを残しており、
動機は未だに不明。
では、次のニュースです。

286 :デフォルトの名無しさん:2009/01/10(土) 23:17:57
まさか、そこまで普通しないだろう。
そう、普通はしない。
しかし、Cellをいじる様な人種に常識は通用しないのだ。

287 :デフォルトの名無しさん:2009/01/10(土) 23:22:24
今までなんとなく、心にぼんやりとあった、疑問が脳裏をよぎる。

"なぜ、MTの限られた最適化で、LSの容量も制限するという、こんなにもきつい制限の課題なのか。"

そう。実は要求レベルは、その領域にあったのだ。

288 :デフォルトの名無しさん:2009/01/10(土) 23:30:06
スタート地点に立てた人間は、そうは多くない。しかし、そこまで行きついたものは確実に、"次"に気づいた。
だが、それらの人間とは別に、ごく一部、初めからその道を進んでいたものもいた。

そして、その先には、さらなる波乱が待っていた。

289 :デフォルトの名無しさん:2009/01/10(土) 23:48:48
ってかさぁ、1 tick って何 cycle くらいなの?
そっから逆算すると、5.6 M の時って平均何 cycle / 32bit 生成くらい?

290 :268:2009/01/11(日) 01:37:26
>270
納得した。

291 :202:2009/01/11(日) 01:58:42
>>289
知ってるが、教えたくない情報の一つだなw

ヒント: cpuinfo

292 :202:2009/01/11(日) 02:06:51
ちなみに、壁を超える方法も思いついたぞ。

1.先に実行されたはずのORIGINALの結果をレジスタから探してくる
2. チャネルに書き込めないなら、関数呼び出し前に保存したデクリメンタの値を
  書き換える。

だれかネタでやってくれないかなw

293 :デフォルトの名無しさん:2009/01/11(日) 02:36:26
>>289, 291
40cycle/1tickだろ。5.6Mだと3.85cycle/32bitくらいか。
最低限SIMD化したとして15.4cycle/128bit。
unroll効いてるとして16〜7cycle/128bitくらいか。
ホントにそんなんで出来るんか???

294 :227 ◆eZQcaIaFJs :2009/01/11(日) 02:45:23
>>282
少ない方が100ぐらい空いてるので、全部詰められれば0.25MTickか…。
コンパイラが糞なら asm volatile を使って手動スケジューリングでも
しようかと考え中です。

>>292
while( spu_read_decrementer() < ~16384 ) rand();


295 :,,・´∀`・,,)っ-●◎○:2009/01/11(日) 04:57:09
SPU_Decrementerは内部的にチャンネル使ってます。

296 :,,・´∀`・,,)っ-●◎○:2009/01/11(日) 05:07:17
配列にマシン語記述ってのどうかな?

ありがちな方法だな。
いけないプログラマ丸出し

297 :202:2009/01/11(日) 07:55:31
>>293
unrollするとってくだりからアレだが、そこまでの推測は正しいと思うよ。

15.4という数値がでてきたとすると、15cycle+0.4cycleで0.4がオーバーヘッドになる。
オーバーヘッドは1%くらいに抑えたいから、目標は5.51Mticksを切ること。
トップクラスはそのあたりにある壁にどこまで近づけるかというチキンレース中。

というところまで推測できちゃうから、みんなticks数は有効数字一桁しか出さなかったんだけど、
だんごさんが有効数字二桁の情報を出してきたのは、「cycle数で並ばれても壁までの近さなら
負けない」という意思表示かな。カッコイイ。

298 :202:2009/01/11(日) 07:56:41
普段使ってるのと違うPCで書き込みしたらsage忘れた。スマソ。

299 :,,・´∀`・,,)っ-●◎○:2009/01/11(日) 08:15:21
>unroll効いてるとして16〜7cycle/128bitくらいか。
これが意味不明なんだけどね。

アンロールしようが何しようが演算ユニットが増えるわけじゃない。
演算ユニットの稼働率をいくらまで詰めるかって課題なわけで。

300 :,,・´∀`・,,)っ-●◎○:2009/01/11(日) 08:29:36
っていうか
「15サイクル」って具体的な数字が出てきたけど、本当にそれでいいのか、そこから考えないといけない。

301 :,,・´∀`・,,)っ-●◎○:2009/01/11(日) 08:42:54
128bitあたり、15サイクルのスループットで済むと仮定して、オーバーヘッド抜きのスループットは5.47M切るくらい?でいいのかな?


えーと、絶望させちゃっていいかな?

【とっくに切ってるよ】
逆にどこに限界があるのかわからなくなってきたよ。

302 :デフォルトの名無しさん:2009/01/11(日) 10:45:57
だんごに勝つにはtemperingの命令数減らすことを本気で考えたほうが良い。
そこから道が開けると思う。
アンロールしてタイミング詰めるのはそれからでも遅くない。

303 :202:2009/01/11(日) 10:55:24
>>301
底知れねーな。でも大丈夫、その程度で絶望しないよ。
5.5Mを切る戦いに参戦する敵を増やしたくなかったから、>>297では>>293の数値をもとに話してた。
まだgccの吐くコードに翻弄されてるけど、5.5の壁の先の世界があることは理解している。

・・・でも、俺より先に>>227がだんごさんに追いつきそうなんだよな・・・
昨日一日物件探しまくって、良い物件見つけたと思ったら今朝「もう申し込まれてました」と連絡がorz
早く休日を丸一日使ってだんごさんと同じ世界に行きたい。

304 :202:2009/01/11(日) 11:06:10
>>302
敵増やしたくないから具体的な話はしたく無いんだけどさ。
俺もだんごさんも>>227さんも、とっくにそのレベルで出来る事はやってる。
その程度では勝てないよ。

305 :,,・´∀`・,,)っ-○○◎:2009/01/11(日) 12:34:59
で、一位がこのスレからでるのは確定状態か

306 :デフォルトの名無しさん:2009/01/11(日) 13:00:56
団子3兄弟

307 :デフォルトの名無しさん:2009/01/11(日) 13:01:52
スレで情報をホイホイ書き込むような人がトップとれるんだろうか…

308 :デフォルトの名無しさん:2009/01/11(日) 13:12:48
具体的な方法論は誰も公開してないんだぜ。
5M台叩き出してる人はアルゴリズムレベルでは殆ど同じコードになってると思う。必然的に。

あとは0.1パーセント単位のチューンってことになるわけだが
最後まで粘ったもん勝ちになりそうだな。

309 :デフォルトの名無しさん:2009/01/11(日) 16:46:40
ってかさぁ、15cycle とかホントに出来んの?
ってか、みんなマジでこんなとこに書いてんの?w

310 :デフォルトの名無しさん:2009/01/11(日) 17:22:25
とりあえず、良くも悪くもこのスレに書き込まれたことで、ここら辺の性能が
スタンダードになってしまったな。

まだ2か月近くあるしね。

311 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 17:24:06
こうならないと面白くないだろ?

312 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 17:33:15
ORIGNAL: sum=3c927c56, 294426736 ticks
MINE: sum=3c927c56, 5470853 ticks
ORIGNAL: sum=2e987a4d, 424726988 ticks
MINE: sum=2e987a4d, 7891991 ticks
ORIGNAL: sum=ef1b6aef, 312523179 ticks
MINE: sum=ef1b6aef, 5807115 ticks
ORIGNAL: sum=eedd2516, 290445788 ticks
MINE: sum=eedd2516, 5396877 ticks
ORIGNAL: sum=f7e967a8, 14386174 ticks
MINE: sum=f7e967a8, 267359 ticks
ORIGNAL: sum=1f37a7db, 214504754 ticks
MINE: sum=1f37a7db, 3985803 ticks
ORIGNAL: sum=c7d41f36, 295361550 ticks
MINE: sum=c7d41f36, 5488220 ticks
ORIGNAL: sum=aa9d2e9f, 259914712 ticks
MINE: sum=aa9d2e9f, 4829583 ticks
ORIGNAL: sum=8abd398a, 251182134 ticks
MINE: sum=8abd398a, 4667315 ticks
ORIGNAL: sum=a374bd58, 6118517 ticks
MINE: sum=a374bd58, 113731 ticks

このスコアをここに晒せるって意味を理解してくれ。

313 :デフォルトの名無しさん:2009/01/11(日) 17:39:55
ちょっとそのソース晒してくれる?
嘘くさいから。

314 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 17:43:14
晒せるかボケ

315 :227 ◆eZQcaIaFJs :2009/01/11(日) 17:43:29
あれからパイプラインの空きを半分くらいまで詰められたけど、
コンパイラが糞でどうにもならない状態。

.L9: ; メインループの先頭
lqr $81,mt+X
lqr $84,mt+X
lqr $53,mt+X
lqr $41,mt+X
lqr $47,mt+X
lqr $48,mt+X
lqr $59,mt+X
lqr $68,mt+X
lqr $24,mt+X
lqr $71,mt+X
lqr $113,mt+X
lqr $42,mt+X
lqr $43,mt+X
lqr $45,mt+X
lqr $46,mt+X
lqr $58,mt+X
lqr $55,mt+X
lqr $93,mt+X
lqr $104,mt+X
shufb $106,$73,$81,$127

>>312
数日前のスコアですか?


316 :202:2009/01/11(日) 17:43:33
>>313
ちょwwwそれはやりすぎだろw
>>312がスタンダードになってしまうw

>>312 なら追いつける自信があるけど、そっから先どこまで行ったんだろうね。。。

317 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 17:46:08
>>316
自信あるのかよ!
ハッキリ言ってなんでこれで性能上がるのか理解不能っていう(デ?)チューンをしてる

318 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 17:47:55
15clkが本当なら>>312は99%突破してるわけだが

319 :デフォルトの名無しさん:2009/01/11(日) 17:51:59
虚虚実実ですなw

320 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 17:53:24
再提出上等
スコア更新する度にフィックスターズに送りつけてやるぜヘヘヘ

321 :デフォルトの名無しさん:2009/01/11(日) 17:58:41
このスレで期限前に最速コードを公開して、コンテストを無効化して、そして伝説へ…
なんてストーリーがあるのかなと妄想してたよ。2chっぽくさ。いやいや、全然勧めてないからやらないでね。

いや、でも、なかなか燃える展開だな。がんばれ、団子3兄弟。

322 :デフォルトの名無しさん:2009/01/11(日) 18:18:54
58156364 / 4(SIMD) * 15(cycle) / 40(ticks) = 5452159.125 か。
だれか 15cycle の壁をやぶってくれw

323 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 18:22:23
temperingをテーブル参照で・・・


って、数十GBメモリが必要になりますよ

324 :デフォルトの名無しさん:2009/01/11(日) 18:34:45
じゃぁ、それを計算で求めるようにしよう!!!

ってのはおいといて、おいらも>>312が視野に入ってきたかな。。。

325 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 18:40:19
9%→90%→99%→99.9$→・・・

ですね。わかります

326 :202:2009/01/11(日) 19:36:49
>>322
だんごさんが15を破れることバラしちゃったから俺もバラすけど、
15は数日前にもう破ってるよ。
コンパイラの吐くコードがよろしくなくて、調整の時間が取れてないだけ。

>>325
99.9$ ・・・ 9000円くらい?

327 :デフォルトの名無しさん:2009/01/11(日) 19:43:14
未だかつてこのスレでこんなにCellプログラミングが流行ったことがあっただろうか、いやない

328 :デフォルトの名無しさん:2009/01/11(日) 19:51:07
きそう、この週末丁度暇になったのにPS3は会社のだから事務所に置きっぱなしだ……
尤も、半年以上放置しているから今更勘が戻らないけどね。

329 :202:2009/01/11(日) 20:10:39
>>328
大丈夫、俺なんてCellプログラミングは初めてだ。
リモートの開発環境も用意してくれるよ。

・・・べ、別に誘ってるわけじゃないんだからねっ!
どっちかっていうとライバルが増えると困るんだからねっ!

330 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 23:06:20
>>326
切ったのは16(っていうか18)じゃなくて?

どうせ4要素毎にspu_addして最後に合計を水平加算してるっしょ?
加算はEvenパイプだよ。

331 :デフォルトの名無しさん:2009/01/11(日) 23:42:30
あんまり具体的な話をするのは、1〜2人で参加という趣旨に反すると
思うよ。

332 :,,・´∀`・,,)っ-○◎●:2009/01/11(日) 23:54:01
>>328
Cell SDKはx86のLinuxにも入れられるぞ
シミュレータもある。

333 :322,324:2009/01/12(月) 00:47:51
あー、呑んだ。酔っぱらった。酔ったまんま unroll にとりかかるぜw
>>325,326
おいら今 unroll してない状態で 16cycle だから、近いかなぁ、と。
>>330
18ってなに?ともあれ、なんとか even をあと一つ縮めたいよなぁ…
>>331
どうせおいら申し込んでないしー。ってか名前&社名出せねぇw

334 :202:2009/01/12(月) 00:50:14
>>330
あれ、だんごさんに言われると不安になってきた。
あとで数えなおし&理論限界の計算しなおししてみる。

335 :322,324:2009/01/12(月) 01:05:26
>>334
ってか、even 15 切ってるのが居たら神な希ガス
>>322 に書いたけど、だんごさんも 15 は切ってないよ。
どれだけ論理限界(15)に近づけるかの勝負でしょ。
それか誰かが 15 を切るかw

336 :322,324:2009/01/12(月) 01:07:46
あ、>>301 の 5.47M は間違いだと思われ

337 :227 ◆eZQcaIaFJs :2009/01/12(月) 01:43:39
パイプラインの空き35位まで詰められたけど、理論性能の95%しか出てない。
>>312が99.6%出してる時点で勝てそうにないorz


338 :,,・´∀`・,,)っ-○◎●:2009/01/12(月) 01:47:40
>>312は2日前の成果。日増しに(わずかながらではあるが)性能は伸びてる

339 :,,・´∀`・,,)っ-○◎●:2009/01/12(月) 07:40:11
理論スループット15になる方法思いついたときは俺SUGEEEEEEEEEEって思ったけど
そこまでは案外みんな気づくの早かったな。

340 :202:2009/01/12(月) 09:00:51
>>335
even? odd じゃね? tempering 的に言って。
>>339
てっきり15サイクル切ったと思ったけど、本気で15サイクルのコードで
そのスコアを超えたのか。すげーな。

341 :,,・´∀`・,,)っ-○◎●:2009/01/12(月) 09:40:14
おいおい逆だ
http://pc.watch.impress.co.jp/docs/2005/0212/kaigai03l.gif


342 :,,・´∀`・,,)っ-○◎●:2009/01/12(月) 09:41:24
>てっきり15サイクル切ったと思ったけど、本気で15サイクルのコードで
それは秘密。

ただ、部分的に式の変形はしてる。高速化のためにどうしても必要だった。

343 :202:2009/01/12(月) 09:54:54
>>341
おおおおおおおお!
俺、v = mt[k] とかに //e って、 spu_and() とかに //o ってコメント付けてた!
恥ずかしー!

344 :デフォルトの名無しさん:2009/01/12(月) 12:33:46
ど素人ですけど、CELLに悪戦苦闘してる方々に質問。
CELLのメモリ構成の扱いにくさって、将来LSの容量が増えて
各SPUが特定の仕事に専心するようになったら、それほど
大きな足かせにならない気がするんですけど、どうでしょうか?
今はLSの容量が少なすぎて、頻繁に書き換えが必要だから超面倒だけど。
クタはそこまで考えて、LSにしたんじゃないんでしょうか?

345 :デフォルトの名無しさん:2009/01/12(月) 13:52:21
なんか書き込みがゲハ臭いから回答すべきか「帰りな」と言うべきか迷うが。
クタだけに焦点を当てるなら、PS3を設計している最中に「LSが増えたら」が無いのは考えれば分かる話だよな?

346 :デフォルトの名無しさん:2009/01/12(月) 14:19:49
ほんとゲハ臭いなw
>>344
ここで Hack the Cell やるような人は扱いにくいとか思ってないんじゃん?
扱いにくいってなるのは、プロジェクトが大きくなって C# あがりの
へたれプログラマも使わなきゃいけなくなった時じゃないかな?
Hack the Cell やるような職人にとっては LS の容量が少なくて超面倒って
事はなくて(ちょっと面倒くらいw)、へたれにとっては LS の容量が増えても、
ヘテロだったり cache じゃなかったりの時点で超面倒なんだと思われ。
今だったら Larrabee みたいな方がいいに決まってるっしょ。

347 :346:2009/01/12(月) 14:23:56
今だったら => 今から作るんだったら

348 :デフォルトの名無しさん:2009/01/12(月) 16:55:22
LarrabeeってCell扱うのはマンドクセッと思ってる
ヘタレ(と言うよりPCのCPUのみ扱い慣れている)
プログラマに取ってはいかにも扱いやすそうに見えるが
キャッシュレベルで勝手に同期が取られる事を良い事に
ついスレッドのあちこちで頻繁に同期を取るプログラムを
書いてしまってそれがキャッシュ用リング?バスの帯域を
圧迫してパフォーマンスが出ないと言う罠に陥りそうな希ガス。

349 :デフォルトの名無しさん:2009/01/12(月) 17:12:05
いいからゲハに帰れよ

350 :デフォルトの名無しさん:2009/01/12(月) 17:14:32
>>348
何言っているんだか。まるでx86だけがPCのCPUみたいな言い方しなさんな。
つーか、LarrabeeとCellを同列で語ること自体がどうかしている。

351 :348:2009/01/12(月) 17:19:15
>349
俺は残念ながら>344じゃないしゲハから来たわけでも無いよ。

352 :デフォルトの名無しさん:2009/01/12(月) 17:30:51
>350
読解力無いね、アナタ。

353 :デフォルトの名無しさん:2009/01/12(月) 19:15:57
しかし、今更ながら気づいたが現在、市場で売られている
PCのCPUはもはや、ほとんど全てx86なんだよな。

Apple(Macintosh)がIntel CPUの採用を始めてからは。

と言うかx86以外のPC用(と呼べる)CPUを思いつけない。

354 :デフォルトの名無しさん:2009/01/12(月) 20:50:56
CBE

355 :250:2009/01/13(火) 03:00:47
ふー、目標の 6M 突破。と思ったらすごい事になってんなw 5.47M ってwww
こっから先は spu-gcc43 の最適化特性との根比べっぽいなぁ… orz
っていうか最適化馬鹿過ぎw 不要な処理し過ぎ!! フルアセで書かせろ!!!!w

356 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 08:21:08
>>355
いっそマシン語を配列に書いたら?www
SPUは厳密な実行属性管理とかしないから自己書き換えとか簡単に動いたりするよ。
実際問題オーバーレイって自己書き換えと似たようなもんだし。

いや冗談ですwww

357 :202:2009/01/13(火) 12:50:07
どうしても0.3命令くらいはオーバーヘッドが消えない。
15.3 * 100 /15 = 102 だから、2%がオーバーヘッドか。

コンパイラに99%以上の効率のコードを吐き出させるだんごさんは神。

358 :202:2009/01/13(火) 13:17:14
>>355
ちょっと待ってろ、fixstarsにインラインアセンブラ使って良いかどうか訊いてくる。
だんごさんに勝つにはもうそれしかない希ガス。

359 :250:2009/01/13(火) 13:34:00
>>358
おぉ!よろしく頼むっす!でもさすがにダメな気がするw
おいら今 1.66% のオーバーヘッドまできた。5.54M
でもなんか全然本質じゃない事ばっかでちょっと虚しい… orz

360 :デフォルトの名無しさん:2009/01/13(火) 13:45:11
これからチュートリアル読み始めるんだけど、10倍くらいならいけるかな

361 :202:2009/01/13(火) 16:11:14
5M台何人いるのか判らなくなってきたな。
5.6M切ってるのがこのスレに4人くらい居るのかな?

362 :202:2009/01/13(火) 17:30:57
>>322,324 さん、fixstars社員ですね、わかります。

363 :,,・´∀`・,,)っ-○◎○:2009/01/13(火) 17:52:24
VISEO MDT243Wだったら2位も悪くないなと思ってるんだぜ。
ってか、42インチのテレビなんて使わねー
PCモニタとしてつかうにはでかすぎるし。

364 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 21:17:18
15命令切る方法思いついたかも知れない

365 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 21:27:21
うはwwww
みなぎってきたwwwwwwwwww





とりあえず目標修正

                5Mな!

366 :デフォルトの名無しさん:2009/01/13(火) 21:28:57
と思いきや、それをやるには spu_and が必要だから減らないんだなー

367 :202:2009/01/13(火) 21:29:45
wwwwwwwwww

びびらせやがって!

368 :デフォルトの名無しさん:2009/01/13(火) 21:31:56
いや、>>366 は適当に書いただけだってばw

369 :202:2009/01/13(火) 21:32:43
試しにインラインアセンブラつかってみたんだけど、
asm("lqr $50, mt+16")
みたいにすると、コンパイラに怒られる。 mt+ って書式は使えない?

370 :202:2009/01/13(火) 21:33:45
ちょっwww
だんごさんに追い抜かれる!

371 :202:2009/01/13(火) 21:35:12
インラインアセンブラ無しでどうやって5M超えようか

372 :デフォルトの名無しさん:2009/01/13(火) 21:35:43
202 さんは現段階で抜いてたの?

373 :202:2009/01/13(火) 21:42:09
たぶんね。15cycle は少し前に突破してる。 >>326
だれも気づいてないっぽかったから、その後は 15cycle前提で会話してた。

gcc43に行く手を阻まれて、理論値に全然近づけてないけど、>>316 の時点で
>>312 は抜いてた。

374 :デフォルトの名無しさん:2009/01/13(火) 21:57:26
って事は、>>357 は本当は 14.3 ってこと?

375 :202:2009/01/13(火) 22:00:39
>>374
それ、実は、アセンブラを自動生成する簡単なプログラム書いて、
その出力したコード(未テスト)のサイクル数の話。15はウソ。

本当のオーバーヘッドは0.3どころじゃない。もっとデカイ。

んで、アセンブラ禁止された。
... 質問しなけりゃ良かったorz

376 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 22:15:21
というわけで俺だけ次のステップに逝く予感

377 :デフォルトの名無しさん:2009/01/13(火) 22:15:31
アセンブラ禁止意味不明。最早 Hack The spu-gcc43 じゃん。

378 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 22:17:56
パイプラインを埋める方策考え直さないといけないな。

379 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 22:19:54
方策は・・・あるんだなこれが。

380 :デフォルトの名無しさん:2009/01/13(火) 22:25:49
>>377 うまいw まさしくそのとおりだとおも

381 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 22:25:50
これは15cycleを切れないコードの最高スコアだ。もちろんアセンブラなど使ってない。

spu-gcc43 -std=gnu99 -O3 -g -c -o mt_mine.o mt_mine.c
spu-gcc43 -Wl,-Map,mt_kadai.map mt_kadai.o mt_mine.o mt19937ar.sep/mt19937ar.o -o mt_kadai
./mt_kadai
ORIGNAL: sum=3c927c56, 294035297 ticks
MINE: sum=3c927c56, 5466192 ticks
ORIGNAL: sum=2e987a4d, 424162315 ticks
MINE: sum=2e987a4d, 7885270 ticks
ORIGNAL: sum=ef1b6aef, 312107681 ticks
MINE: sum=ef1b6aef, 5802168 ticks
ORIGNAL: sum=eedd2516, 290059639 ticks
MINE: sum=eedd2516, 5392281 ticks
ORIGNAL: sum=f7e967a8, 14367047 ticks
MINE: sum=f7e967a8, 267131 ticks
ORIGNAL: sum=1f37a7db, 214219571 ticks
MINE: sum=1f37a7db, 3982409 ticks
ORIGNAL: sum=c7d41f36, 294968868 ticks
MINE: sum=c7d41f36, 5483545 ticks
ORIGNAL: sum=aa9d2e9f, 259569157 ticks
MINE: sum=aa9d2e9f, 4825469 ticks
ORIGNAL: sum=8abd398a, 250848188 ticks
MINE: sum=8abd398a, 4663339 ticks
ORIGNAL: sum=a374bd58, 6110381 ticks
MINE: sum=a374bd58, 113635 ticks

382 :202:2009/01/13(火) 22:29:57
多分、もう、次のステップはない。

Hack the spu-gcc 4.3 '09

優勝争いのステージに、いま、俺とだんごさんが立っている。
このステージを制するのは、俺か、だんごさんか、はたまた新たなる
チャレンジャーか!!!

383 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 22:33:16
我ながら恐ろしい。15clk/QWORDに対する実効効率99.74%の基地外スケジューリング
俺に勝てるかなククク

384 :,,・´∀`・,,)っ-○◎●:2009/01/13(火) 22:43:37
ヒント:最適化が糞なら、無効にすればいいじゃない

385 :デフォルトの名無しさん:2009/01/13(火) 23:46:28
今更?

386 :デフォルトの名無しさん:2009/01/13(火) 23:58:15
この課題説明でインラインアセンブラ禁止なら、
pragma も使用禁止でしょうな。

387 :デフォルトの名無しさん:2009/01/14(水) 00:03:42
それって、なんてコンパイラハッキングゲーム?w

388 :227 ◆eZQcaIaFJs :2009/01/14(水) 00:41:47
わっちもようやく>>282のスタートラインに立てたので一応報告。

ちなみに、何故かコンパイラの最適化無効にしたらコードの質が良くなってるし、
コンパイラとの戦いの意味合いの方が強いような気がするなぁ…。


389 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 01:01:21
ハッキングなどしてない

spu-gcc43 -std=gnu99 -O3 -g -c -o mt_mine.o mt_mine.c
spu-gcc43 -Wl,-Map,mt_kadai.map mt_kadai.o mt_mine.o mt19937ar.sep/mt19937ar.o -o mt_kadai
./mt_kadai
ORIGNAL: sum=3c927c56, 295486875 ticks
MINE: sum=3c927c56, 5093390 ticks
ORIGNAL: sum=2e987a4d, 426256300 ticks
MINE: sum=2e987a4d, 7347483 ticks
ORIGNAL: sum=ef1b6aef, 313648483 ticks
MINE: sum=ef1b6aef, 5406455 ticks
ORIGNAL: sum=eedd2516, 291491590 ticks
MINE: sum=eedd2516, 5024518 ticks
ORIGNAL: sum=f7e967a8, 14437972 ticks
MINE: sum=f7e967a8, 248913 ticks
ORIGNAL: sum=1f37a7db, 215277119 ticks
MINE: sum=1f37a7db, 3710802 ticks
ORIGNAL: sum=c7d41f36, 296425055 ticks
MINE: sum=c7d41f36, 5109559 ticks
ORIGNAL: sum=aa9d2e9f, 260850588 ticks
MINE: sum=aa9d2e9f, 4496367 ticks
ORIGNAL: sum=8abd398a, 252086563 ticks
MINE: sum=8abd398a, 4345293 ticks
ORIGNAL: sum=a374bd58, 6140545 ticks
MINE: sum=a374bd58, 105884 ticks

390 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 01:02:58
やべぇwww笑いがとまんねーwwwww

391 :202:2009/01/14(水) 01:17:46
抜かれた・・・完敗だorz

392 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 01:19:03
ん?まだもう一段階いけたよ

393 :202:2009/01/14(水) 01:23:53
5M切れそう?

394 :202:2009/01/14(水) 01:25:36
ちがうか、5088682 が下限なんだな。

395 :デフォルトの名無しさん:2009/01/14(水) 01:34:03
>>389
逆汗しないから、その実行ファイルうpして?


396 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 01:34:04
ニヤニヤ

397 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 01:35:32
>>395
優勝すれば公開されるんだからそのときに見ればいいじゃないか。
種も仕掛けもない

398 :227 ◆eZQcaIaFJs :2009/01/14(水) 02:09:28
>>389
さっき98%超えたけどさすがにそれは神の領域だわ。


399 :デフォルトの名無しさん:2009/01/14(水) 02:14:08
ttp://cell.fixstars.com/ps3linux/index.php/3.8%E3%80%80%E6%BC%94%E7%BF%92%E5%95%8F%E9%A1%8C_(3-3)_%E5%8C%BA%E5%88%86%E6%B1%82%E7%A9%8D%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0_(%E8%A7%A3%E7%AD%94)

400 :デフォルトの名無しさん:2009/01/14(水) 02:17:55
途中で投稿してもうた・・・
http://cell.fixstars.com/ps3linux/index.php/
ここにあるプログラミングチュートリアルの演習3−3の回答で、SPEの個数を変えたいんですが
#define NUM_SPE * の*だけ変えてもだめですよね・・・
性能がどんなもんかみたいんですが…どの点を変更すればよいのかご教授いただけませんでしょうか

401 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 02:20:52
2のべき乗ならいいんじゃないの?
テキトーに言ってみるけど。

402 :デフォルトの名無しさん:2009/01/14(水) 09:07:02
>>400
そこだけでいいと思うけど・・・
PS3なら個数は1~6までSPEが利用できる

403 :デフォルトの名無しさん:2009/01/14(水) 12:06:10
>>389
SFMTより速いんじゃね?

404 :デフォルトの名無しさん:2009/01/14(水) 12:42:54
>>401-402
ありがとうございます。
変更箇所はこちらであっているみたいですね
タイム関数を利用して処理時間を測定しても、逆にSPEを利用したほうが時間が延びてしまいます。
理論上ではSPE1からSPE4にしたら1/4になるはずですよね?
ppeのメイン関数にあるresultをかこって測定しているのですが適切ではないのかな
すみません、出力に要した時間を測定するにはどこが適切なのでしょう
http://cell.fixstars.com/pukiwiki/index.php?tips_timebase タイム関数はこれを使用しています

405 :デフォルトの名無しさん:2009/01/14(水) 13:21:25
>>404
そもそもこの問題ってそんな大規模な数を計算してないから
下手にSPE増やすとデータ転送時間やらその他もろもろが増えて
逆に遅くなる可能性のほうが高いよ

406 :デフォルトの名無しさん:2009/01/14(水) 14:42:22
そうですか…わかりました。測定するプログラム自体が間違いだったんですかw
性能を見るために適したプログラム・・・どっかありますかね?
探してみます。

407 :デフォルトの名無しさん:2009/01/14(水) 16:03:39
質問です。
CELLとLarrabee ってどの程度性能差があるんですか?
大して性能差がないとしたら、仮にPS4が出るとして、
ソニーがCELLに拘る意味って、もはや無いのでは?
むしろPCの世界で主流になるであろう、Larrabeeに
切り替えた方がコスト的にも有利なのでは?

408 :デフォルトの名無しさん:2009/01/14(水) 16:50:01
ゲハ板にお帰りください。

409 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 17:16:08
>>403
逆説的だけど、並列演算を前提にした場合、実はオリジナルのMTのほうが並列度の高い
(高くしないと性能の出ない)アーキテクチャに向いてるってのはある。

MTの配列のうち、先頭から224個、残りの400個は並列演算可能だ。
これはCUDAの実装についての説明。
ソースはCUDA SDKのサンプルにも入ってる。
http://developer.download.nvidia.com/compute/cuda/sdk/website/projects/MersenneTwister/doc/MersenneTwister.pdf

それに対して、対してSFMTは4要素(=128ビット)の計算をしないとその次の4要素の計算ができない。
要するに依存関係があって、128ビット性能が出ない。
各命令のレイテンシが大きいとSFMTは相対的に不向きってことになるかもね。

410 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 17:18:53
× 要するに依存関係があって、128ビット性能が出ない。
× 要するに依存関係があって、128ビットSIMD演算を低レイテンシで実行できるアーキでないとが出ない。

411 :デフォルトの名無しさん:2009/01/14(水) 17:38:23
つっこみたいんだが

412 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 17:44:30
どうぞ


今回の課題のMTはSFMTと比べてレイテンシを埋めるためのテクニックが使いやすいのは事実だよ。
っていうか誰かCUDAにSFMT移植してごらん?4論理スレッドしか並列実行できない悲惨なことになる。

413 :デフォルトの名無しさん:2009/01/14(水) 17:45:45
いや、どっちも×なところになんだがw

414 :,,・´∀`・,,)っ-○◎●:2009/01/14(水) 17:48:20
○ 要するに依存関係があって、128ビットSIMD演算を低レイテンシで実行できるアーキでないと性能が出ない。

タイピングしすぎで腱鞘炎になりそう

415 :デフォルトの名無しさん:2009/01/14(水) 18:36:35
>407
Larrabeeはまだ世の中に出ていないので誰にも分かりません。
性能比較は用途によって変わるので今、Cellが使われている用途に
そのままLarrabeeが使われたらどうなるかなんて仮定の話は
Intelの中の人ですら分からないでしょう。

またPC用のCPUの世界でLarrabeeのような
シンプルなコアをたくさん集積したメニーコアが
すぐに流行る事も無いでしょう。

流行るとしてもだいぶ先の話(10年先か20年先か?)

416 :デフォルトの名無しさん:2009/01/14(水) 20:19:04
>>409
速さもランダム性も優れているなんて虫が良すぎるんじゃないかとは思っていたんだ。
ふつーなら、どっちかのはずだもんな。元がひどくない限りは。

417 :227 ◆eZQcaIaFJs :2009/01/14(水) 22:15:12
99%超えたおー


418 :デフォルトの名無しさん:2009/01/15(木) 10:44:32
http://cell.fixstars.com/challenge/faq.html#kadai4
> インラインアセンブラは使用してもよいですか?
> インラインアセンブラは禁止としていましたが、使用していただいて構いません。(1/15 更新)

419 :デフォルトの名無しさん:2009/01/15(木) 10:46:52
中の人このスレ見てるな。

420 :デフォルトの名無しさん:2009/01/15(木) 11:23:12
なんか、いきなり競争のルールが変わってしまったな。

421 :デフォルトの名無しさん:2009/01/15(木) 11:33:29
いちいちルールなんて再確認しないだろうから、このスレ見てない人が可哀想だよな。

422 :デフォルトの名無しさん:2009/01/15(木) 11:38:36
迷走してるな。
アセンブラレベルでCellを熟知してない人間にはチャンスを与えない試験に成り果てた。
コンパイルオプション変更許可しない意味が既に無い。


423 :デフォルトの名無しさん:2009/01/15(木) 11:58:29
>アセンブラレベルでCellを熟知してない人間にはチャンスを与えない試験に成り果てた。
そのレベルの人には元々「勝つ」チャンスは無いと思います。
参加する事に意義がある。

424 :デフォルトの名無しさん:2009/01/15(木) 12:05:30
アセンブラ許可自体は歓迎だが、こんなことをやると

「受賞者は最初から決めてあったんだよ!」

と言われかねない。

425 :デフォルトの名無しさん:2009/01/15(木) 12:11:38
>>アセンブラレベルでCellを熟知してない人間にはチャンスを与えない試験に成り果てた。
>そのレベルの人には元々「勝つ」チャンスは無いと思います。

202がんがれ、超がんがれ

426 :デフォルトの名無しさん:2009/01/15(木) 12:18:14
>>425
いやいや、202は既に熟知「した」だろ。

427 :デフォルトの名無しさん:2009/01/15(木) 12:19:00
うーん、確かにコンテストを始めてからルールを変えるのはなんだかな。
再提出のチャンスがあるとは言えど。

主催者はルールが変わった事をメールなどで周知徹底すべきだろう。

428 :202:2009/01/15(木) 12:25:20
ちょ、許可になったのかよ!!

アセンブラを生成するスクリプトをCソース吐くように改変して、
どうやって最適化昨日によるデチューンから逃れるか試行錯誤してたのに!
#pragma GCC optimize ("-O0") も、 __attribute__ ((optimize(0))) も使えない、
変数をvolatileにしたらスタックにpush/popするから超遅い、etcetc、、、

俺の2日間かえせーー!

429 :250:2009/01/15(木) 12:45:16
まぁ、でも本当に Hack the spu-gcc43 になってたからな…
おいらも 4.1 だとうまくいった最適化抑制手法が、4.3 だと
使えなかったりして結構虚しくなってたからよかったかも。

430 :,,・´∀`・,,)っ-●◎○:2009/01/15(木) 12:48:42
敢えて言う。
今までのは全部Cだ。


431 :250:2009/01/15(木) 12:53:01
あ、コンテスト終わったらでいいから、だんごさんがどうやって
最適化抑制してたのか教えてほしいかも。おいらがやってたのは
4.3 にしたら even にまで命令追加されて使えなかったっす。

432 :デフォルトの名無しさん:2009/01/15(木) 12:54:18
どうせ、そこまでやるんならコンパイラオプションも変更可能にして
何でもアリアリの条件で競争させて欲しい。

433 :202:2009/01/15(木) 12:57:42
>>432
インラインアセンブラ解禁=何でもアリだよ。
別のコンパイラで、別のコンパイルオプションでアセンブリソース吐かせて、
それをインラインアセンブラで埋め込めば良いんだから。

434 :250:2009/01/15(木) 12:58:21
>>431
あ、even に追加されたのは、ori $n,$n,0 ね。
even に追加することねーだろ、って叫びたいw

435 :202:2009/01/15(木) 12:58:23
あ、ごめん。
実質なんでもアリなら、本当に何でもアリにしてくれっていう意味ね。

436 :202:2009/01/15(木) 12:59:15
>>434
ありすぎて困るwww
ソース破壊しない命令ばっかだから、絶対いらないのにねー。

437 :デフォルトの名無しさん:2009/01/15(木) 13:00:04
>433
うん、だからもはや意味の無い形式だけのコンパイルオプションを
いじるなと言う制約を外した方が分かりやすいだろ?

438 :デフォルトの名無しさん:2009/01/15(木) 13:19:20
やるなら mt_mine.c だけオプション分離しないと、
オリジナルの速度とかテストベンチにまで影響が…


439 :,,・´∀`・,,)っ-●◎○:2009/01/15(木) 18:47:17
SPUのアセンブリ言語はちょっとだけ読めるけどあれだけのコードをまともに書ける気がしない。
うまく飼いならせばspu-gcc43こそ最強の高級アセンブラ


440 :250:2009/01/15(木) 19:30:29
未だに 4.3 は飼いならし方がわからんす。attribute とかじゃないんすよね?

441 :250:2009/01/15(木) 19:47:31
って、コンテスト前なんだから聞いてる場合じゃないかw
おいらは asm 行くけど、やり方が気になって気になって。
ちなみに 4.1 なら >>383 の率超えました!! 意味ないけどw

442 :,,・´∀`・,,)っ-●◎○:2009/01/15(木) 20:54:44
>>441
>>383は超えたところで意味が無い数字だぞ。
実は>>389もだけど

443 :デフォルトの名無しさん:2009/01/15(木) 20:59:19
なんでそういうの黙ってられないんだろう。


444 :デフォルトの名無しさん:2009/01/15(木) 21:07:59
俺SUGEEEEEEEEEE だからじゃん?w

445 :デフォルトの名無しさん:2009/01/15(木) 21:12:55
せめて締め切られてからにしたらどうかね。


446 :デフォルトの名無しさん:2009/01/15(木) 21:33:05
締切後フカシだった事がばれて「俺参加してねーし」とか言いそうな感じ

447 :デフォルトの名無しさん:2009/01/15(木) 21:37:21
ここらで擁護がきそうな感じ

448 :デフォルトの名無しさん:2009/01/15(木) 23:48:57
いやいい加減うざいと思ってただろみんな

449 :202:2009/01/15(木) 23:53:34
Cellプログラミングに関係してるだけマシだと思ってたんだけど、
ウザかった?
他になんか話題ある?

450 :デフォルトの名無しさん:2009/01/16(金) 00:34:34
糞団子に餌を与えるのはいかがなものか。もそもそ。

451 :,,・´∀`・,,)っ-●◎○:2009/01/16(金) 03:09:49
>>446
それならそれでソースコード公開できるんだけどね。

行動とは裏腹に誰にも気づかれることもなく優勝するシナリオを望んでる。
矛盾してるな。

452 :202:2009/01/16(金) 03:28:27
インラインアセンブラ版動いた。
効率はこれから詰めていくけど、とりあえず適当な詰め方でも98%行く。
デバッグが超面倒だった。

これからインラインアセンブラに手を出す人にヒント。
.balign 16
というディレクティブを使って、命令のアドレスを16byte境界にalignしないと、
Dual-issue ねらってた命令が全部single-issue になってしまう。
めっちゃ遅くなって、間違ってループカウンタ壊したかと思った。

453 :227 ◆eZQcaIaFJs :2009/01/16(金) 21:47:01
今週末は2日間とも強引に休む事にしたんで、インラインアセンブラにでも
手を付けてみます(ちなみにVCの奴は経験有るけど、GCCの奴は初)。

98%超えが4人いる事が判明しているので、まだまだチキンレース続けますよw

>>428
インラインアセンブラ解禁されたので、既に意味無くなった情報でも投下。

volatileによる制約は、メモリアクセスの順番を守る制約でも有ります。
組み込みプログラミングでメモリ空間が外部バスにマッピングされてると、
アクセス順番が狂う=バグ、という死活問題に繋がってくる訳です。

>>439
gcc のコードを並び替えるだけで終わりような予感。


454 :202:2009/01/16(金) 21:55:23
>>453
俺だって元組み込み屋だ。volatileの意味くらい知ってる。

でも、ひょっとしたら、register volatile vector unsigned va; とか書いたら、vaが適当な
レジスタに固定でマッピングされてくれないかなと思って実験してみたくなるのは判るだろ。

455 :227 ◆eZQcaIaFJs :2009/01/16(金) 22:16:02
>>454
その道のプロの方でしたか。これは失礼いたしました。

> vaが適当なレジスタに固定でマッピングされてくれないかな
幾らハッキングが好きなゲーム屋だからと言って、割り込みから
メインスレッドのレジスタ葬るような事はやったこと無いなぁ…。


456 :,,・´∀`・,,)っ-○◎●:2009/01/16(金) 22:49:32
SPUのABI仕様書読んでみると面白いね。
vector型をメンバに持つ構造体も、レジスタ本数に余裕がある限りレジスタ上に展開できる。
これによって複数の返値を持つことができる。

SSE(VC++)だと構造体を返値にすると無条件でスタック返しになってたような。

457 :デフォルトの名無しさん:2009/01/17(土) 02:14:37
高速化がこんなに楽しいものだとは知らなかった。
どんどん速くなっていくのは快感だね。


458 :227 ◆eZQcaIaFJs :2009/01/17(土) 02:31:13
なんか手詰まりの予感orz

mt_mine.c:93: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [mt_mine.o] Error 1


459 :227 ◆eZQcaIaFJs :2009/01/17(土) 03:57:00
拡張アセンブラが腐ってたっぽい感じです。レジスタの待避まで手動でやれば
大丈夫になるのかなぁ…?


460 :,,・´∀`・,,)っ-●◎○:2009/01/17(土) 14:30:48
まさにチキンレースだな。
究極的には両方のパイプを埋めきるまでやるんだろこれ。

461 :sage:2009/01/17(土) 14:58:35
団子さんは今どんなスコアですか?
今までの勢いだと4.5M切ってたりして…

462 :,,・´∀`・,,)っ-●◎○:2009/01/17(土) 15:40:52
そろそろ詰んだかも

463 :デフォルトの名無しさん:2009/01/17(土) 16:17:21
今まで仕事でHTCできなかったから今から本気出す
ASM禁止→解禁のごたごたの間に手を出さなかったのは逆に勝ち組なんじゃね

464 :デフォルトの名無しさん:2009/01/17(土) 16:27:20
>>202>>227>>団子厨
が優勝争ってるんでしょ〜〜
結局だれがいちばん強いわけ?
どれくらいとればこの人たちに勝てるかおしえて

465 :,,・´∀`・,,)っ-○◎●:2009/01/17(土) 16:31:54
たぶん一番上の項目で5Mくらい出せれば準優勝狙えると思うよ
優勝は無理だろうけどね。

466 :464:2009/01/17(土) 16:40:34
>>465
SUGEEEEEEEEEE自信だけど自分はどれくらいまで行けそうなの?
もし準優勝すらできなかったら何してくれんの?


まぁおれは7M切るので精一杯だから関係ないけど。。。

467 :202:2009/01/17(土) 18:21:39
>>465
つまり、だんごさんは5M切ったとw

468 :,,・´∀`・,,)っ-●◎○:2009/01/17(土) 19:19:57
さあそれはどうだか
少なくとも細かいチューンでの対決に持ち込めば勝てる自信がある・・・かもしれないね

469 :デフォルトの名無しさん:2009/01/17(土) 20:54:41
60倍越えたんですね。わかります。

470 :464:2009/01/17(土) 21:46:34
だんごさんの優勝はもう決定事項なのか。。。

471 :227 ◆eZQcaIaFJs :2009/01/18(日) 00:43:53
インラインアセンブラを駆使しても>>389に勝てないという現実orz
今日一日アセンブラ触ってみて、gcc43の凄さを感じ取れました。


472 :202:2009/01/18(日) 00:57:32
アイデア出すたびにガンガン速くなってた時期と違って、5M近くにたどり着くと
苦行になってきたな。
1%未満の調整は投げ出して提出する時期かも。

下馬評では、1位だんごさんで、2位は俺と>>227の対決か。
チキンなので俺のticks数は書けない。

473 :227 ◆eZQcaIaFJs :2009/01/18(日) 01:13:21
>>472
インラインアセンブラ使用前で5119021。


474 :デフォルトの名無しさん:2009/01/18(日) 04:12:17
好きに使っていいレジスタって何番〜何番だっけ
なんかコンパイラが予約してるとことかあった気がするんだけどどの資料を見たのか忘れてしまった

475 :デフォルトの名無しさん:2009/01/18(日) 05:59:54
>>474
ttp://cell.scei.co.jp/j_download.html
「SPU Application Binary Interface Specification」の 「2.2.1 レジスタ」(日本語だと P8) の表

476 :デフォルトの名無しさん:2009/01/18(日) 06:08:38
>>475
ありがと
普通にR80〜を使ってた
なんか普通に動いてるけどたまたまなのかコンパイラが退避してくれてるのか…
できるだけR10〜79位を使う様にするかな

477 :202:2009/01/18(日) 10:56:45
>>476
拡張インラインアセンブリ構文を勉強すると良いよ。
コンパイラにどのレジスタ使うか教えると、変数割り当てがかぶらないように
してくれたり、必要ならレジスタ退避もやってくれる。

478 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 12:15:37
敢えて言う。
俺には無理。


479 :227 ◆eZQcaIaFJs :2009/01/18(日) 18:13:28
nop/lnop を入れると早くなる謎。レジスタの依存関係は無さそうやし、
LSの帯域制限とかいう隠れ仕様でも有るのかなぁ…。


480 :デフォルトの名無しさん:2009/01/18(日) 18:39:43
隠れ仕様なんかじゃないよ。もっと勉強しましょう。

481 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 19:01:48
これ以上性能伸ばすにはOddパイプの命令数削減する方法を本気で考えないといけなくなった。
#トップを目指してる人はどういう状況かわかるよな?


482 :202:2009/01/18(日) 19:27:18
>>481
wwww

483 :202:2009/01/18(日) 19:28:25
>>479
dual-issueとかじゃなく?

484 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 19:29:49
策はある。足りないのはメモリ。

485 :227 ◆eZQcaIaFJs :2009/01/18(日) 19:49:31
>>483
ちょっと違うっぽい。nop+lnopを入れると1クロックのロスで済むものの、
何も入れないと2クロックストールしてるような感じです。

>>481
今のところ Odd 余ってるんやけどなぁ…。まさか限界突破したとかorz


486 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 19:51:25
ループ後半のどうでもいいようなところしか余ってない。
無理になんか処理入れたら逆に性能低下するし、そろそろ別の方針が必要っぽい


#意地でもCでがんばるぞ

487 :デフォルトの名無しさん:2009/01/18(日) 20:04:38
>>485
ヒント欲しい?w

488 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 20:12:08
今なら言うけど、>>394は限界ではない

ラチェクラとか作った会社がまとめたSPU命令のレイテンシ一覧あったんで貼っておきますね。
なんでこういうわかりやすい資料が公式に無いのか疑問。

http://www.insomniacgames.com/tech/articles/0907/spu_instruction_cheat_sheet.php

489 :デフォルトの名無しさん:2009/01/18(日) 20:15:02
まーた、フカシが始まったよ… なんで黙ってられないんだろう。

490 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 20:24:07
別に信じなくてもいいが、現実を受け入れなきゃ優勝が無い、それだけの話だ。

↓これはまだパイプラインに余裕があったときのスコア。

spu-gcc43 -std=gnu99 -O3 -g -c -o mt_mine.o mt_mine.c
spu-gcc43 -Wl,-Map,mt_kadai.map mt_kadai.o mt_mine.o mt19937ar.sep/mt19937ar.o -o mt_kadai
./mt_kadai
ORIGNAL: sum=3c927c56, 294032967 ticks
MINE: sum=3c927c56, 4967580 ticks
ORIGNAL: sum=2e987a4d, 424158953 ticks
MINE: sum=2e987a4d, 7165990 ticks
ORIGNAL: sum=ef1b6aef, 312105208 ticks
MINE: sum=ef1b6aef, 5272912 ticks
ORIGNAL: sum=eedd2516, 290057341 ticks
MINE: sum=eedd2516, 4900408 ticks
ORIGNAL: sum=f7e967a8, 14366933 ticks
MINE: sum=f7e967a8, 242775 ticks
ORIGNAL: sum=1f37a7db, 214217873 ticks
MINE: sum=1f37a7db, 3619145 ticks
ORIGNAL: sum=c7d41f36, 294966530 ticks
MINE: sum=c7d41f36, 4983349 ticks
ORIGNAL: sum=aa9d2e9f, 259567100 ticks
MINE: sum=aa9d2e9f, 4385307 ticks
ORIGNAL: sum=8abd398a, 250846200 ticks
MINE: sum=8abd398a, 4237963 ticks
ORIGNAL: sum=a374bd58, 6110333 ticks
MINE: sum=a374bd58, 103279 ticks

491 :デフォルトの名無しさん:2009/01/18(日) 20:30:40
こんなとこに情報出しまくる奴にも優勝はないと思うw

492 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 20:32:00
だろうね。用心深いから常に古い情報ばっかし出してる。

493 :デフォルトの名無しさん:2009/01/18(日) 20:32:48
それで大丈夫と思ってる井の中の蛙は負けると思うw

494 :デフォルトの名無しさん:2009/01/18(日) 20:33:22
お前らひがみはみっともないぜ

495 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 20:33:44
いったい誰に負けるって?

496 :227 ◆eZQcaIaFJs :2009/01/18(日) 20:36:40
>>490
またCに戻って戦略練り直しかorz チキンレース面白いから大歓迎だけどw


497 :デフォルトの名無しさん:2009/01/18(日) 20:36:47
井=2ch
蛙=団子

498 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 20:38:49
敢えて言う、これは出来レースだ。


499 :デフォルトの名無しさん:2009/01/18(日) 20:43:09
負けた時の言い訳ですね。わかります。

500 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 20:45:33
ん?俺が勝ったか負けたかをどうやって確認する気だ?wwwwww

じゃあ予想だけしておこう。
優勝者は、13clk/qwordを、切る。

501 :デフォルトの名無しさん:2009/01/18(日) 20:46:17
つまり切ったんだな

502 :デフォルトの名無しさん:2009/01/18(日) 20:51:00
2人参加が優勝してたらまず団子だろw

503 :デフォルトの名無しさん:2009/01/18(日) 20:52:47
なんか・・・インパクトに欠ける予想だな・・・

504 :227 ◆eZQcaIaFJs :2009/01/18(日) 20:53:02
>>500
今の実装でも (Odd + Even) / 2 < 13clock だから否定は出来ないなぁ…。


505 :デフォルトの名無しさん:2009/01/18(日) 20:54:00
2人参加が優勝したら、両方名前&社名出すようにfixstarsに働きかけようぜw

506 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 20:55:19
>>504
多いほうの命令ひとつ減らすのに、少ないほうの命令が3つくらい増える悲惨な事態に陥ってますが。

507 :デフォルトの名無しさん:2009/01/18(日) 21:01:59
ってか、2人参加の片割れがfixstarsの関係者かも知んなくね?

508 :202:2009/01/18(日) 21:09:55
>>506
判る判るw
もう、1サイクル減らすとかじゃなくて、0.3サイクルとか0.25サイクルずつ減らす
領域なんだよね。

509 :202:2009/01/18(日) 21:13:02
>>507
fixstars 関係者は参加できないよ。

中の人は、仕事の片手間に応募者より速いコードを目指して実装中。
たぶんまだ5M切れてない。
このスレみてガクブルしてるよw

510 :デフォルトの名無しさん:2009/01/18(日) 21:14:45
参加できないんだから、参加してない事を証明しなきゃダメだろ。
ってことは、チームの場合も両方名前&社名出さないと。

511 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 21:45:34
>>509
そんなしょーもないことしてどうすんねん
優秀な学生の確保と活力ある社会人の引き抜きが目的だろ

512 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 21:48:52
うーむ・・・もはや手詰まりか

513 :202:2009/01/18(日) 21:53:45
>>511
別に非関係者装って参戦してるとかそーゆーんじゃなくて、純粋に遊びで
挑戦してるらしいよ。
Cellのプロフェッショナルとしてのプライドをかけたお遊びねw
マイミクのfixstars社員に「社内で5M切った奴いる?」って訊いてみたら?

514 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 22:08:32
まあプロが俺に負けるわけにはいかんだろうがなぁ

515 :202:2009/01/18(日) 22:21:31
ちょ、だんごさん4.8M切ってるのか。スゲー!

516 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 22:31:34
そこは驚くところじゃない
まだ上はいるんじゃね?何となく。

517 :227 ◆eZQcaIaFJs :2009/01/18(日) 22:52:28
>>473のコードを1命令変更しただけで4.8M切れたw
さて、これをアセンブラに移してループの調整でも始めるかな。


518 :,,・´∀`・,,)っ-○◎●:2009/01/18(日) 22:56:16
だんごやさんピーンチ

519 :227 ◆eZQcaIaFJs :2009/01/18(日) 23:02:30
>>518
ちょっとワロタ。14cycleの時は1位との差が10000tick行くか行かないかの所まで
詰められたけど、ここまで来るとさすがに自信無いなぁ…。


520 :デフォルトの名無しさん:2009/01/19(月) 00:24:58
>>479
実は載ってるところ少ないんだけど8サイクル以上位連続でロード/ストアしようとするとストールした記憶がある
そこでいったんぶった切ってoddでそれ以外の事するかあけてしまった方が速くなったりとか
自分も去年かおととし気づいたことなんで厳密な事は覚えてないんだけど

521 :デフォルトの名無しさん:2009/01/19(月) 00:52:56
↑の制限は8サイクルよりは長いよ。でも 227 はそんな load/store はしてないと思う。

522 :202:2009/01/19(月) 00:53:11
>>520
へぇ。
命令のバッファが空になるとLS命令をストールさせて命令をフェッチする
とかそういうのがあるのかな?

523 :デフォルトの名無しさん:2009/01/19(月) 01:10:02
>>520
SPEのLSはポート一個しか無いので、DMAやload,storeが頻発すると、命令フェッチができなくなる場合がある。
Handbook の 3.1.1.3 に、優先度は、 DMA > load,store > 命令フェッチ と書いてある。
命令フェッチが必要な場合は、hbrp命令すると優先度が上げられる。

詳細は、
ttp://cell.scei.co.jp/j_download.html
「プロセッサにおける命令枯渇に起因する Synergistic Processor Elementの無限ストールの防止について」
あたりに書いてある気がするが、読んでもよくわからん。

524 :227 ◆eZQcaIaFJs :2009/01/19(月) 01:16:02
とりあえず詰ませてみたけど、asmvis 見てもどこでストールが起きてるのか
分からない状態。片っ端から nop/lnop 入れて検証するのかぁ…orz

>>521
カンで16か20とみた。調子に乗ってループ展開しまくっていた頃だから、
知らない間にリミットを追えてしまったのかもしれませんね。


525 :202:2009/01/19(月) 01:23:42
>>524
分岐ヒント命令のレイテンシが15cycleだから、それ以下の可能性が高い。
12cycle=24命令か8cycle=16命令分でオチるんじゃないかな。

526 :デフォルトの名無しさん:2009/01/19(月) 01:42:57
>>523
DMA 用と load/store & ifetch 用の2ポートだった希ガス。
今回は DMA 関係ないけど、DMA は待たせられないからね。
で、load/store と ifetch でポート共有してるから、ifetch が
ストールしないように、load/store は続けちゃだめよ、と。

527 :,,・´∀`・,,)っ-○◎●:2009/01/19(月) 08:09:41
謎のデチューン(笑)で性能改善された説明になるな。
メモしておこう


528 :デフォルトの名無しさん:2009/01/19(月) 12:42:42
学生でやってるけど10倍すらキツい
アセンブラ命令と複数対1命令で対応している組み込み命令は
どの程度コンパイラによる最適化の影響を受けるの?

基礎的な知識が圧倒的に足りていない件・・・orz

529 :,,・´∀`・,,)っ[昼はカレー]:2009/01/19(月) 12:44:00
要するに128バイト分の命令(32命令)をこなす間に8サイクル以上
LSにロード・ストアしないタイミングを確保すればいいらしい。
完全にEven/Oddが同時実行されてる場合はロード・ストアが1バッファあたり8命令を越えるとアウト。
2命令同時発行できないサイクルがあったりすれば1バッファを使いきるサイクル数が17以上に延びるので、その分は延びる。
たとえばEven側20命令、ロード・ストア12命令の32命令でも、バッファのフィルに必要な8サイクルを確保できる。

530 :デフォルトの名無しさん:2009/01/19(月) 14:13:31
>>529
Handbook によると
「SPU instruction prefetches are 128 bytes per cycle.」
らしいので、32命令中に1サイクル空きがあればいいはず。

531 :デフォルトの名無しさん:2009/01/19(月) 14:14:19
>>528
結果さえ同一ならバカ正直に「SIMD版MT」を実装する必要がない

532 :デフォルトの名無しさん:2009/01/19(月) 14:17:58
>>530
bitじゃなくてbyteかよ

533 :デフォルトの名無しさん:2009/01/19(月) 14:30:33
そういえばDMAと命令フェッチが同じバスなんてことが書いてあるような

534 :デフォルトの名無しさん:2009/01/19(月) 15:24:33
>>531ありがとうございます。>>209で言ってたようなことかな・・・
もういちど見直してみます


535 :デフォルトの名無しさん:2009/01/19(月) 15:45:38
>>533
>>526 じゃなくて?

536 :デフォルトの名無しさん:2009/01/19(月) 16:12:20
>>530,532
LS の読み書き単位が 128byte だからね、たしか。
ただ、読み込み自体は 1cycle で終わっても、SPU の pipeline は
結構深くて、15cycle くらい前に fetch されてないとダメなはず。
他にも ifetch 起動条件とか色々あるよ。どっかに資料あると
思うけど、リンクとか張らないでみんな自力で頑張ろうぜw

537 :,,・´∀`・,,)っ-○◎●:2009/01/19(月) 18:04:15
http://www2.vipper.org/vip1074688.png.html

上から下までこうなってないところ捜す方がしんどい

538 :デフォルトの名無しさん:2009/01/19(月) 18:47:38
あ、当たり前では?

539 :デフォルトの名無しさん:2009/01/19(月) 19:50:30
俺も参加したいけど、どうせなら1位2位を争いたい。
でも団子屋さんみたいな暇人じゃないから勝てるわけもないので高みの見物。

540 :,,・´∀`・,,)っ-○◎●:2009/01/19(月) 19:51:04
ひまじんとはしつれいな

541 :デフォルトの名無しさん:2009/01/19(月) 20:30:21
>>531
それ考えてるんだけど思いつかないんだよな
アルゴリズム同じのまま使う命令の入れ替えと並び替えで15サイクルまでは来れたんだけど
しかも現状じゃ隙間は残ってるのに依存性で詰められないところがあってもったいない
ここにいる優勝候補さんたちは社会人部門だと信じてる

542 :,,・´∀`・,,)っ-○◎●:2009/01/19(月) 21:46:33
__builtin_expect()使っても意味ねー
つか遅くなる

543 :デフォルトの名無しさん:2009/01/19(月) 21:49:36
!!!いままで使ってなかったんか!!!w

544 :デフォルトの名無しさん:2009/01/19(月) 21:50:14
今さら?
__builtin_expectでぐぐりゃそんな事例出てくるだろ。

545 :v127251.ppp.asahi-net.or.jp :2009/01/19(月) 21:54:45
だんごうぜー


546 :,,・´∀`・,,)っ-○◎●:2009/01/19(月) 21:59:07
ふゅーじゃーねいざん?

547 :227 ◆eZQcaIaFJs :2009/01/19(月) 22:00:15
ループ内側の最適化は投げ出して、外側の整形作業に移るとしますか。
知らない間にリアルが2末マイルストーンとか言う無茶苦茶な事に
なってたんで、現実逃避も程々にしとかないとマジでヤバイかも。。。


548 :デフォルトの名無しさん:2009/01/19(月) 22:00:49
なんで、こんなところに節穴がいるの?

549 :,,・´∀`・,,)っ-○◎●:2009/01/19(月) 22:03:18
俺の日記はリアルGateKeeperがよく読んでるけどね

550 :227 ◆eZQcaIaFJs :2009/01/19(月) 22:12:55
今更になって>>389見て幻滅してきたorz メモリが無いと勝てる気がしない…。


551 :,,・´∀`・,,)っ-○◎●:2009/01/19(月) 23:17:44
15,000tick削減成功
いけるところまでやるか

552 :227 ◆eZQcaIaFJs :2009/01/20(火) 00:57:49
とりあえず、>>389の一歩手前までたどり着いたのは良いんやけど、ここに
なって拡張アセンブリが使い物にならない(>>458)事がハンデになってくる
とは思わなかったorz

>>551
まだ3日ほど楽しめそうですよw


553 :227 ◆eZQcaIaFJs :2009/01/20(火) 01:35:27
>>552
一歩手前じゃなかったっぽい。見れば見るほど>>389が神に見えてきたorz


554 :デフォルトの名無しさん:2009/01/20(火) 01:38:13
>>517 は何だったの?w

555 :227 ◆eZQcaIaFJs :2009/01/20(火) 01:56:24
>>554
99.91%の壁の高さを痛感しているだけですよ、たぶん。


556 :デフォルトの名無しさん:2009/01/20(火) 02:17:10
あー、>>389 の前提がおいらとは違うのか。
>>551 を見て >>389 は最適化途中だっただけと見てたんだが。

557 :デフォルトの名無しさん:2009/01/20(火) 11:58:58
素人だけど参加

命令書き換えとか、なかなか上手くいかないけど楽しいわコレw

558 :デフォルトの名無しさん:2009/01/20(火) 16:16:18
>>557
命令自己書き換え(self modification)してんの?
仕様書に書いてあるけど、その場合は sync しなきゃ
だめだからあんま早くならない気がするなぁ…

559 :,,・´∀`・,,)っ-○◎●:2009/01/20(火) 17:53:14
【Oddの】命令数削減法思いついた

560 :デフォルトの名無しさん:2009/01/20(火) 19:24:19
何命令くらいの所で頑張ってるんだろう?
自分はもうこれ以上削れる気がしないけど…

561 :202:2009/01/20(火) 19:56:42
だんごさんそのうち4M切りそうだなw

562 :202:2009/01/20(火) 20:24:17
いや、でも4.7Mの壁は今までの壁と比べても相当キツイな。
提出日まで頑張っても超えられない気がしてきた。

563 :,,・´∀`・,,)っ-○◎●:2009/01/20(火) 20:45:21
なんですか4.7Mの壁って

564 :202:2009/01/20(火) 20:49:02
>>563
余裕で切ってるってことかーーー!!!
マジで勝てる気がしねー。

565 :,,・´∀`・,,)っ-○◎●:2009/01/20(火) 22:03:02
逆に遅くなったorz

566 :デフォルトの名無しさん:2009/01/20(火) 22:08:50
だんご優勝できなかったらブログ閉鎖の方向でよさそうなのかな?

567 :,,・´∀`・,,)っ-○◎●:2009/01/20(火) 22:13:22
なんでやねん
逆に優勝しちゃうといろいろまずいことならあるが

568 :デフォルトの名無しさん:2009/01/20(火) 22:23:08
3Mの壁が・・・。イチからやり直すか・・・orz

569 :デフォルトの名無しさん:2009/01/20(火) 22:30:49
16Gくらいメモリ使ったんですか?w

570 :202:2009/01/20(火) 23:24:43
>>568
3Mって、、、俺らと同じ基準なら化け物スコアだな。

571 :227 ◆eZQcaIaFJs :2009/01/20(火) 23:29:48
>>557
でも今日は酔っぱらってて自己書き換えの実装出来ないんだなー。
明日時間有ったら挑戦してみる。


572 :,,・´∀`・,,)っ-○◎●:2009/01/20(火) 23:34:44
30Mの勘違いの予感

573 :227 ◆eZQcaIaFJs :2009/01/20(火) 23:59:18
いつの間にか FAQ 更新されててワロタ

> デクリメンタのオーバーフローを利用することは可能ですか?
> 今回の出題の趣旨に反するので不可能とします。


574 :デフォルトの名無しさん:2009/01/21(水) 00:03:08
不可能ではないと思うんだ。

575 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 00:06:04
本日の捏造

spu-gcc43 -std=gnu99 -O3 -g -c -o mt_mine.o mt_mine.c
spu-gcc43 -Wl,-Map,mt_kadai.map mt_kadai.o mt_mine.o mt19937ar.sep/mt19937ar.o -o mt_kadai
./mt_kadai
ORIGNAL: sum=3c927c56, 294422087 ticks
MINE: sum=3c927c56, 4694973 ticks
ORIGNAL: sum=2e987a4d, 424720276 ticks
MINE: sum=2e987a4d, 6772739 ticks
ORIGNAL: sum=ef1b6aef, 312518235 ticks
MINE: sum=ef1b6aef, 4983550 ticks
ORIGNAL: sum=eedd2516, 290441206 ticks
MINE: sum=eedd2516, 4631487 ticks
ORIGNAL: sum=f7e967a8, 14385949 ticks
MINE: sum=f7e967a8, 229457 ticks
ORIGNAL: sum=1f37a7db, 214501370 ticks
MINE: sum=1f37a7db, 3420537 ticks
ORIGNAL: sum=c7d41f36, 295356889 ticks
MINE: sum=c7d41f36, 4709875 ticks
ORIGNAL: sum=aa9d2e9f, 259910600 ticks
MINE: sum=aa9d2e9f, 4144655 ticks
ORIGNAL: sum=8abd398a, 251178167 ticks
MINE: sum=8abd398a, 4005396 ticks
ORIGNAL: sum=a374bd58, 6118425 ticks
MINE: sum=a374bd58, 97617 ticks

576 :227 ◆eZQcaIaFJs :2009/01/21(水) 00:19:26
>>575
目標修正、4.6Morz


577 :202:2009/01/21(水) 00:54:43
ああくそ、やっと正しい答えが出た。
拡張インラインアセンブラ、かなり茨の道だわ。
レジスタ多いから、どのレジスタが期待値と違うのか判らん。

誰が悪いのか判らないアセンブリのデバッグしながら命令削るより、
C言語の上で一つでも多くのアイデアを実装した方が絶対効率的だ。

578 :202:2009/01/21(水) 00:56:33
>>575
まだ4Mは切ってないようでw
大きな差が無くて安心した。

579 :デフォルトの名無しさん:2009/01/21(水) 01:05:57
今北。

課題は、MTの最適化ではなく、合計の計算の最適化なんだな。

後段の tempering は mt[] に影響を与えないので、tempering 後の
値を合計せずに、tempering 前の「とある値」を集計する。GF(2)の中で。
すると、tempering (相当の操作)は一回で済む。

<いまここ>

団子「スタートライン」ってこれのことだろ?

次に、「とある値」を集計するだけの目的であれば mt[] を「真面目に」
計算する必要はなくって、かなり端折れる。(仮に、端折って計算した
mt[] を pmt[]とする)

どの計算が端折れるか、いま計算しているところ。

<もうすぐここ>

最後に、num_rand % 624 の端数ぶんをどう計算するかで手詰まり気味。
pmt[] から mt[] を計算し直そうとすると、mt[] を最初から計算する
のとあまりコストが変わらない方法しか思いつかない orz

いっそ、mt19937ar.c の mt[] を LS から探してしまおうか。

まず、num_rand % 624 となっている mti を探して、みつかった mt[]
から pmt[] を検定する。

どうかな。


580 :デフォルトの名無しさん:2009/01/21(水) 01:07:43
>>575
人間がレジスタを管理することなんて既に不可能と気づけよ。

581 :デフォルトの名無しさん:2009/01/21(水) 01:12:12
>>579
あーぁ、GF(2) とか出してくるなよw
団子の「スタートライン」は全然そこじゃないって。
井戸の中で満足してる奴に餌与えちゃだめだってw

582 :デフォルトの名無しさん:2009/01/21(水) 01:16:35
井戸の中w

583 :202:2009/01/21(水) 01:21:54
>>579
ルールブレイカー発動か?
tempering前に何かを集計して・・・ということができれば劇的に
速くなるという発想はあったんだが、多分ムリだろと思ってやってないよ。

学がないもんで、GFを今Wikipediaで調べて、やっぱり意味不明だった。

584 :202:2009/01/21(水) 01:24:09
>>580
Pythonでスクリプト組んで、アセンブラコードを半自動生成させてるから、
うまくいってるときは問題ないんだ。
一度計算結果が狂うと、どこが間違ってるのか全然判らなくなる。

585 :デフォルトの名無しさん:2009/01/21(水) 01:46:28
>>202
Matsutomo et al.1994 にも、MK-tempering が GF(2) 行列の掛け算だ、
と書いてあるでしょ。

それから、MTが暗号乱数として脆弱なことは Matsumoto も認めることろ。
そこをつつかなくてどーするw

今すぐ ACM 逝って MT に批判的な論文嫁。


586 :579=585:2009/01/21(水) 01:50:03
とかいいつつ、端数の処理が解決できなかったら俺の負け。


587 :デフォルトの名無しさん:2009/01/21(水) 02:04:10
>>579
団子は何もしらないってことにまだ気付いてない。。。

588 :デフォルトの名無しさん:2009/01/21(水) 02:07:03
>>579
とりあえずそのままSIMD化しただけで放置してたんだが,
そうゆうの面白そうなんでその方向性で考えてみるわ

589 :デフォルトの名無しさん:2009/01/21(水) 02:25:40
ここが井戸か

590 :デフォルトの名無しさん:2009/01/21(水) 03:40:48
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/TEACH/0407-2.pdf

591 :デフォルトの名無しさん:2009/01/21(水) 04:11:57
>>590
ポイントはここですか?w > 「6.5.2 どこがフーリエ変換やねん」

592 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 09:33:19
ま た 勘 違 い の 【さ ん す う や】 か
算術師の花園へようこそ

593 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 10:18:06
>いっそ、mt19937ar.c の mt[] を LS から探してしまおうか。

このレベルのネタでいいなら、
num_randとseedの組を決めうちにして、switch(num_rand) { } で計算済みの結果返すようにしたら?
変更されるらしいけどwww
アホの言ってることは要するにそのレベル。
螺旋の飛んださんすうやさんは計算機で如何実装するかという論点が欠けてる。

余談までに松本教授&斎藤氏のSFMTがオリジナルのMTと比べて如何違うかって、最大の違いは
Temperingの結果を都度(32bit×4要素分単位で)mt[]にフィードバックしてること。
それでうまい具合にビットレベルで数値がばらけてくれる。
逆にそれで依存関係が起きて128ビットを越えるSIMDでは効率的に実行できないわけだが。


>>580
ばかだな。レジスタ管理がどうとかなんて言ってないだろ。
ここまで全部コンパイラにやらせてるし


594 :557:2009/01/21(水) 10:29:40
>>558
え、そうなの?
仕様書あんまし読んでないからわかんないけど
俺がやってるのは例えばodd命令をeven命令に置き換えたりして
同時発行を促すとかそういうのなのだけど・・・

595 :,,・´∀`・,,)っ[タミフル]:2009/01/21(水) 10:45:30
oddをevenかよ。俺様はそれをやる段階じゃないな。


てか、件のOdd側の命令数削減法、実際やろうとするとレイテンシチェインが伸びて
アンロールするレジスタ足りなくなる罠。本末転倒。








インフルエンザですが何か?

596 :,,・´∀`・,,)っ[タミフル]:2009/01/21(水) 10:55:31
>>578
俺が現在進行中のスコア貼ったことは一度も無い。
いまのところ3日前くらいのスコアばっかし貼ってる。

597 :デフォルトの名無しさん:2009/01/21(水) 12:02:37
>>575が3日前だとして
>>551の時点で15,000tick削減成功

だから少なくとも今は4.67M台未満ってことかな?

598 :202:2009/01/21(水) 12:11:40
やっぱりやる気でないから、数学的手法への挑戦はやめとく。
レジスタ上に一瞬とはいえ目的の乱数が出現する俺や団子さんに比べて、
数学的手法だと一瞬たりとも目的の乱数が出現しないから、
※似乱数列は、メルセンヌ・ツイスタの実装 mt19937ar.c と同じ乱数列を生成してください。
の条件に違反しているという理由で reject される恐れもあるしね。

コード整理して、レポート書いて、提出しちゃおう。

599 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 12:18:46
レジスタ上に一瞬とはいえ目的の乱数が出現する俺や団子さんに比べて、

え?アレって出てるって言うのかな?
俺はデータ構造的にあやしいことやってるけど。

600 :デフォルトの名無しさん:2009/01/21(水) 12:20:02
>>593
結局自分で管理しないでコンパイラ任せじゃないか。
レジスタがいっぱいあるからといって自分で全て管理できるはずはないけど。

601 :202:2009/01/21(水) 12:24:23
ひょっとしてまじめに乱数作ってチェックサム取ってるの俺だけか??
俺が団子さんに敵わないのもそのせい???

602 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 12:31:58
>>600
だから何なんだ?管理できるとかできないとかお前は一体何を言ってるんだ?
俺にはさっぱりわからない。

603 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 12:47:36
>>601
ちなみに、彼の珍理論で演算時間の短縮を図るには超次元立方体構造のレジスタや演算ユニットが必要だったりするから気にするなwwww

604 :デフォルトの名無しさん:2009/01/21(水) 13:08:44
団子が天才。はい。だからもうだまれ

605 :デフォルトの名無しさん:2009/01/21(水) 13:43:41
>>604
誰だおまえ?スピード狂オタクの分際で調子に乗るな。

606 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 14:01:25
MT配列は教科書通りの結果になるように都度更新してるけどtemperingをまっとうな方法でやってる自信はないな。

607 :デフォルトの名無しさん:2009/01/21(水) 14:48:01
>>603
おいおい、GF(2) 系の演算の高速化や簡素化はコンピュータの得意分野だぞ?
今時の暗号なら当たり前の事だろ。実装した事ないのか?

608 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 14:49:59
だったら実装してみろよ
机上の空論はおなかいっぱい

609 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 14:56:08
さんすうや君は端数を処理するのにチートやらないと無理だって言ってるんだろ?
ならどのみち芽がない方法だ。

610 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 15:07:30
> GF(2) 系の演算の高速化や簡素化は

やってるよ。
MT[]のデータ状態に矛盾が起きない範囲でな。それが出来ないなら今回のコンテストは諦めろ。

611 :デフォルトの名無しさん:2009/01/21(水) 15:21:50
青筋立てないで落ち着け。
どこのスレでも痛すぎる。正しい事を言っているかどうかじゃなくて。
答えて欲しい質問からは逃げるのに叩けるところはどうでもいいところまでしゃしゃり出てくる。

612 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 15:35:50
なんだ答えて欲しい質問って?

613 :デフォルトの名無しさん:2009/01/21(水) 15:35:58
ゲハ厨学歴厨に何言っても手遅れ

614 :202:2009/01/21(水) 15:38:49
話題変わるけど、spu-gdbってどうやって使うの?
elfspe使ってspe用のバイナリを直接実行できるんだけど、
spu-gdb mt_kadai とかやってもデバッグできない。

今までデバッグは全部コードインスペクションと、mt[]のダンプ取って
バグの箇所を推測するの2種類だけで全部やってた。

615 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 15:40:07
負け犬の遠吠え

616 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 15:43:17
>>614
SPUの実行イメージをPPEから読み出すローダーでも作れば良いのでは?

http://cell.fixstars.com/ps3linux/index.php/Libspeプログラムのデバッグ

617 :202:2009/01/21(水) 15:43:37
>>612
※似乱数列は、メルセンヌ・ツイスタの実装 mt19937ar.c と同じ乱数列を生成してください。
の意味について、
1. プログラム中でmt[]の内容を計算していたら良いのか、
2. 全乱数wordについてtempering後の値も計算していないといけないのか、
3. それともチェックサムだけ合ってればなんでもアリなのか、
を質問してみて、質問して回答が2だとヤバイ?

618 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 15:46:17
俺に聞くな。

ちなみに俺はgenrand_mineを繰り返し呼んでも安全なように設計してる。
ぶっちゃけ外側の最適化はサボってる

619 :デフォルトの名無しさん:2009/01/21(水) 19:26:33
>>612
>>381 は本当? >>389 == 最適化中は本当? >>575 の捏造は本当?w

620 :デフォルトの名無しさん:2009/01/21(水) 19:29:02
鼻高々だな団子。

621 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 19:41:11
手元にある最新のコードよりわざと悪い結果を貼ってるのは本当。

晒す実行結果は前のバージョンだったり、わざとデチューンしたり、色々。

622 :デフォルトの名無しさん:2009/01/21(水) 19:47:57
なんか参加賞あるし、暇だからやってみようかな

プログラム全然書けないけど
このスレ見ながら楽しくやってみよう

623 :557:2009/01/21(水) 20:34:12
>>622
自分もそんな感じ。
勉強と思ってのんびりやろうぜ

624 :579:2009/01/21(水) 21:15:27
>>593

>switch(num_rand) { } で計算済みの結果返すようにしたら?
全然ネタのレベル同じじゃないだろw

>変更されるらしいけどwww
その上でのネタなわけだが。

>最大の違いはTemperingの結果を都度(32bit×4要素分単位で)
>mt[]にフィードバックしてること。
ハズレ。

余談に余談を重ねると、MT と SFMT は GFSR である点で同一。
tempering のコストを MT の更新側に振っただけ。

>逆にそれで依存関係が起きて128ビットを越えるSIMDでは
これも違うな。

MT の漸化式は g(w)_MT = w_0 A + w_1 B + w_M なわけだが、
SFMT は g(w)_SFMT = w_0 A + w_M B + w_{N-2} C + w_{N-1} D
に変更されている。

これが効いてくるのは、レジスタ幅ではなくむしろ並列計算だろ。

625 :579:2009/01/21(水) 21:16:53
>>603
超次元立方体構造ってなんだよw

>>606
その教科書には、w 次 n 階の (T)GFSR も 1 階化すれば nw 次の
GFSR になって、1 階線形漸化式に帰着するとは書いてなかったかい?

>>609
>端数を処理するのにチートやらないと無理だって言ってるんだろ?
誰が無理だと言ったw
思いつかない=無理なのか?

>>610
> > GF(2) 系の演算の高速化や簡素化は
>やってるよ。
MT の内側は全て GF(2) なわけだが。
それを踏まえて外側を如何に GF(2) の上に持っていくかの話だ。


626 :579:2009/01/21(水) 21:17:46
>>598=202

ヒント: 外側の sum += が仮に sum ^= だとしたら?

> 同じ乱数列を生成してください。の条件に違反している
ちょwww

だとしたら
>temperingをまっとうな方法でやってる自信はない
>MT[]のデータ状態に矛盾が起きない範囲でな。
団子道連れだな。


627 :579:2009/01/21(水) 21:19:00
話を戻すと、課題(MTのsumを求める)は、次のように分解できる。

1. mt[] から pmt[] への線形写像を求める。
2. for (num_rand / N) 不真面目な計算。
3. pmt[] から(num_rand / N反復後の) mt[] を戻す。
4. for (num_rand % N) 真面目な計算。
5. tempering

厳密に言えば、mt[] と num_rand から不真面目な計算をして
O(1) で sum を求める事も理論的には可能。が、その理論を
解析している時間はないわけ。

が、たかが 32N 次元程度の GF(2) 上のベクトルであれば、2 の
不真面目な計算を機械的に求めることも非現実的ではない。

いまそれを解析しているところ。

問題としているのは 3 の操作で、pmt[] が mt[] の線形写像で
ある以上、完全に mt[] を元に戻すことはムリ。4 の計算も
不真面目化すればよいのだけれど、そのままでは num_rand % N に
応じて N 種類の不真面目計算方法が発生してしまってコード
サイズ的にムリ。

なので、別の方法での不真面目計算を考えているところ。

O((num_rand % N) ^ 2) であれば解は見つかった。が、これだと
条件「num_rand が 10000 以上」に対してコスト・リスク大きすぎ。

まあ、1回目の不真面目計算が解析できれば、そこから芋づる式に
求まるんじゃないかと楽観視している。

ともかく、いまは解析結果待ち。

628 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 21:30:52
妄想はいいから。


> ヒント: 外側の sum += が仮に sum ^= だとしたら?

→「あり得ない仮定を持ち出す」
これは詭弁の○○箇条にもあったな

まあ珍理論持ち出しても無理だから諦めろ負け犬

くだらねーコンテストなんて目じゃねーぞ。

629 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 21:35:49
> その教科書には、w 次 n 階の (T)GFSR も 1 階化すれば nw 次の
> GFSR になって、1 階線形漸化式に帰着するとは書いてなかったかい?

で、それはSPUの命令を使って何命令で実装できますか?

> 思いつかない=無理なのか?

所詮お前は口だけだな。
ハッタリは何も出来ない人間のためにあるものだぞ。
どう足掻いてもお前にはできない。

630 :デフォルトの名無しさん:2009/01/21(水) 21:38:07
>>579
数学はよくわからんのだが、
自分が優勝だと勘違いしてるやつより期待してるからがんばれ!!

631 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 21:39:12
ああ、ちなみに最初くらいに1ビット×128並列のビットスライス実装思いついたけど
全然速くなかったよ。

632 :デフォルトの名無しさん:2009/01/21(水) 21:39:43
これはどれぐらい高度な数学が必要なんだ?

633 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 21:41:31
さんすうやの詭弁は聞いて呆れる

634 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 21:58:01
>>632
これ読んで何書いてあるか解る程度。そのまんまだけど。
http://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1441-14.pdf



1 ticks = 40clkで、PLAYSTATION 3のSPUのクロック数は3192MHz動作です。
num_rand = 58156364のとき、genrand_mineの実行時間は4.7MTicks程度かかりました。
このとき、genrand_mineの実行時間は何秒かかったでしょう?
これは簡単なさんすう(笑)の問題

でさ、pmt[](笑)求めるのに何十秒かかるのかねぇwww
さんすうや(笑)は計算時間がいくらかかるか、メモリがいくら必要かそういう観点が欠如してるから困る。
その上机上論ばかり並べる。できることをしない。だからできない。

まあ、時間がかかりすぎてSPU Decrementerがラップアラウンドしてくれば、見た目のTick数は(ry

635 :デフォルトの名無しさん:2009/01/21(水) 21:59:50
いや、だから、団子はやらんでいいから黙ってろやw

636 :579:2009/01/21(水) 22:02:50
>→「あり得ない仮定を持ち出す」
物事を簡単に考えるための迂回路だ。TT800から始めてろ。

>で、それはSPUの命令を使って何命令で実装できますか?
だから解析中だって言ってるだろうが。

解析結果?出てねーよ。

課題アナル(仮称)を prolog で実装した策略ミスだ。それは認める。
vsz は順調に(?)太っていってるから、あと 2,3 日ほっといてみるか。

637 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:12:27
59ms弱だよ。

前提からしてアホだろ
MT[n]のsumをTemperingしたものと TemperingFunction(MT[n])のsumは全くの別物

んで、頭弱い子は加算命令をXORとANDに分解してソフト的に加算すればいいと思ってるだろ?
レジスタ足りる?むしろメモリ足りる?

っていうか、脳みそ足りてる?

638 :デフォルトの名無しさん:2009/01/21(水) 22:15:06
>>634
なんとなく分かりました。高度な数学というよりも新鮮なアルゴリズムに気がつくかどうかの問題だし、素数を探すプロジェクトとなんか似てますね。

639 :デフォルトの名無しさん:2009/01/21(水) 22:22:43
団子はうざいが、
>>637
>レジスタ足りる?むしろメモリ足りる?
>
>っていうか、脳みそ足りてる?

これは笑ってしまった。く、くやしい。

640 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:24:26
なんにせよ10000≦num_rand<UINT_MAXだからなぁ
何十年かかる計算を数学的解析によって短縮云々なら価値はあるが
数十ms程度で終わる計算相手にスピードを競うアプローチとしては無謀を通り越して馬鹿かと
5段階の1段階目だけで既に終わってる希ガス。



それよりUNIX crypt(3)のハッシュ値からキーをダイレクトに求めるアルゴリズムでも解明して下さいよwww
数十年来の課題ですww

641 :デフォルトの名無しさん:2009/01/21(水) 22:25:19
fixstars側に十分な数学の知識がある人がいて
なおかつコンテストで生み出されるコードが後々の役に立つものであってほしいと願っているのなら
素直に乱数を作って加算するのが一番速くなるような問題になっているはず、
と信じたい

642 :579:2009/01/21(水) 22:26:22
>>637

頭悪いな。お前が cite した文献に書いてあるじゃん。

> MT の解像度は最大可能な解像度と比べるとかなり悪くなっている
> MT の解像度は最大可能な解像度と比べるとかなり悪くなっている
> MT の解像度は最大可能な解像度と比べるとかなり悪くなっている

> この固定されてしまった j_1,...,j_L が乱数の質を決めるのだが、これがいただけない。
> この固定されてしまった j_1,...,j_L が乱数の質を決めるのだが、これがいただけない。
> この固定されてしまった j_1,...,j_L が乱数の質を決めるのだが、これがいただけない。


643 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:30:54
負け犬は遠吠えだけは達者だな

んで、計算時間は具体的にいくらですか?
O(n)のアプローチのほうが賢明ということもありますよ。


> 1. mt[] から pmt[] への線形写像を求める。
どうせこれだけで天文学的な時間かかるんだろ?w

644 :579:2009/01/21(水) 22:34:24
線形写像求めるだけで天文学的なんて、どこまでお花畑なんだぜ?

645 :デフォルトの名無しさん:2009/01/21(水) 22:35:19
熱い・・・熱いぜお前ら
いいぞもっとやれ

646 :579:2009/01/21(水) 22:36:17
>>645

いや断る。俺下痢。寝る。

647 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:36:36
・メモリ210KBが使用禁止
・チャネル使用不可(メインメモリ間のDMAももちろん不可)



まあとりあえず脳内珍論はブログでやれ。

648 :デフォルトの名無しさん:2009/01/21(水) 22:38:54
線形写像 = 実機動作、高速
解析 = 事前作業、低速

649 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:40:06
机上の空論には
「Temperingはランダムテーブルルックアップで1回の操作で行うことができますが、
4Byte×2^32 = 16GByteのメモリが必要です」
みたいなオチがつくんだよね

650 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:42:01
>>648
> 線形写像 = 実機動作、高速
> 解析 = 事前作業、低速

その「線形写像」なんだけど、46KB未満のメモリ空間で確保できるLUTで
一体なにができるのwwww

651 :デフォルトの名無しさん:2009/01/21(水) 22:42:56
線形写像の意味わかってる?

652 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:45:43
線形写像を実装する方法をソフトウェア工学ではLUT(ルックアップテーブル)って言うんだよ。
Cellはローカルメモリが小さいから一般的には不向きと言われる。

653 :デフォルトの名無しさん:2009/01/21(水) 22:47:26
ほうほう、じゃそれはアルゴリズムで実装することはできないんだな?w

654 :デフォルトの名無しさん:2009/01/21(水) 22:47:47
おいおい団子ちゃんよ、高校の"さんすう"からやり直したらどうなのさ

655 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:50:24
>ほうほう、じゃそれはアルゴリズムで実装することはできないんだな?w

君の「アルゴリズム」が何を指すのかわかりませんが
LUTもアルゴリズムの一つです

656 :デフォルトの名無しさん:2009/01/21(水) 22:51:42
すまん、「LUT でなく、演算で求めることは、できないんだな?w」だ。

657 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:53:19
テーブルのオフセットをアドレスを求めて値をロードするのも「演算」です。

658 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 22:56:17
むしろNOP系の命令以外は全て演算なんじゃないの?

659 :デフォルトの名無しさん:2009/01/21(水) 22:58:02
ま、何でもいーや。線形写像=LUTね。tempering も LUT でやってくれw

660 :デフォルトの名無しさん:2009/01/21(水) 23:04:17
だんご大丈夫か? > インフルエンザ

661 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:04:22
プッ

まさかビット論理演算の組み合わせだけでやろうとしてるのか?
それはそれで何もパフォーマンス上の優位性ねーし

まあ何がアホかって、結局のところ>>637なんだけど

662 :202:2009/01/21(水) 23:04:55
>>656
俺は専門卒なので難しい数学は判らないのだが、
元の計算式自体が「LUTではない方法」で、
結局難しい用語を持ち出してる数学屋の言ってることは

「元の計算式と同じ事をするより短い別の計算式を見つければおk」

って事?
それなら、最初に計算式とにらめっこして、「俺には無理」と判断してる。

Prologで何ができるのか知らないけど、元の計算式より計算量の少ない
式が出てくるっていう根拠が数学屋にはあるの?

663 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:05:31
>>660
みなぎってきたwwwwww
とりあえず今週一杯サボるwwwww

664 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:07:00
>>662
結局は>>649的な実用性のない発想だから気にすることはない。知識におぼれて本質が見えてない人間が暴れてるだけ。

665 :202:2009/01/21(水) 23:09:32
MTの初期値が固定されていたら何かを打ち破る抜け口がありそうな気がするけど、
init_genrand() の引数と num_rand が未知の場合、「乱数のチェックサム」の計算を
ショートカットするのは無理そうというのがソフト屋の直感。

数学屋と違って何の根拠もないし、自分でもそんなに信じてない直感だけどな。

666 :デフォルトの名無しさん:2009/01/21(水) 23:12:40
>「元の計算式と同じ事をするより短い別の計算式を見つければおk」
そういうことだ。Tempering より短い写像式を見つければOK。
って、Tempering も十分短いから無理っぽいけどなーw

667 :デフォルトの名無しさん:2009/01/21(水) 23:13:08
暴れているのはだんごである

668 :デフォルトの名無しさん:2009/01/21(水) 23:14:37
だんごは鳥インフルエンザ

669 :デフォルトの名無しさん:2009/01/21(水) 23:16:59
中の人二人いて煽り担当とプログラミング担当がいるコテの人はずるいと思います。

670 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:17:29
>>666
たとえば
A XOR (B AND C)

これをたとえばMUXを使って式変形するとどうなる?
って、このレベルの試みは俺もとっくにやってるわけだが。

671 :デフォルトの名無しさん:2009/01/21(水) 23:19:12
>>669
3人じゃね?両方○も居た希ガス

672 :デフォルトの名無しさん:2009/01/21(水) 23:20:22
>>671
団子三兄弟ってやつか

673 :デフォルトの名無しさん:2009/01/21(水) 23:24:56
そんなに必死にならなくても大丈夫だよ、団子さんより頭の悪い人だっていっぱいいるから

674 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:28:06
>>673とかな

675 :673:2009/01/21(水) 23:30:02
>>674
まぁ、本当のことだから何もいえないけどね

676 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:31:53
B = A XOR D

が成立するとき

A XOR (B AND C) = spu_sel(A, D, C)

これ、豆知識な

677 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:44:40
結論から言うと>>676は今回使うところはどこにもありません。




たとえるなら、RPGで毒の沼に入ってもダメージを受けない装備を手に入れたけど
この先毒沼なんてどこにもありませんって感じかな。


これの元ネタ解った奴は俺のドッペルゲンガー

678 :デフォルトの名無しさん:2009/01/21(水) 23:52:10
>>676
そういうのを代数学の知識で証明できるようになりたい

679 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:52:33
知ってると思うけど団子の中の人は広大の松本研究室とメールやりとりしたことがある。
結論を言うとseedとnum_randからpmt(笑)を求めるための一意な論理式なんて存在しないよ。
あっても計算時間・メモリ容量的に実用的なモノではない。

680 :,,・´∀`・,,)っ-○◎●:2009/01/21(水) 23:53:34
>>678
カルノー図書けば一発じゃないか

681 :デフォルトの名無しさん:2009/01/22(木) 00:02:26
>一意な論理式なんて存在しないよ。
いや、存在はするんだってば。実用的なのが見つからないってだけで。

682 :デフォルトの名無しさん:2009/01/22(木) 00:04:44
Cell使ってしらみつぶしに探しちゃえば?

683 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 00:05:41
その上、端数を処理するのにチートしないと実用的な性能出ないんだろ?
しねばいいのにwww

それに比べればこちとらまだ青天井みたいなもんだよ。

684 :デフォルトの名無しさん:2009/01/22(木) 00:11:57
どうせMT高速化やるなら、ついでに多変量正規乱数までやってくれよ
デキバイによっては金出すぜ

685 :デフォルトの名無しさん:2009/01/22(木) 00:15:40
出来栄え?

686 :デフォルトの名無しさん:2009/01/22(木) 00:16:46
あーそれだ
日本語苦手だ許せ

687 :デフォルトの名無しさん:2009/01/22(木) 00:21:04
> こちとらまだ青天井みたいなもんだよ。
13cycle 切れた訳でもあるまいにw

688 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 00:26:07
たとえばさ、

「genrand_mineが呼ばれる前には、必ずinit_genrand_mineされると仮定してかまわない」
とはあるが、関数を呼ぶ直前にinit_genrand_mineを呼ぶなんて言ってないんだぜ。


たとえば極端な話、

init_genrand_mine(seed);
hash = genrand_mine(num_rand) + genrand_mine(num_rand2);

みたいな鬼畜な条件での測定にしてきて、サマリ値不整合で失格続出になるかもしれないんだぜ?
俺はどう転んでも言いように丁寧な実装してるけど、
仮定して構わないって言ってること以外は仮定しちゃ駄目だと思うんだぜ。

とりあえず誰か質問してきてよ

689 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 00:27:52
>>687
58156364 / 4 * 13 / 40 = 4725204.575(ticks)
だけど何か?

690 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 00:30:14
既に12clk/qword台の闘いなんだぜ?

691 :デフォルトの名無しさん:2009/01/22(木) 00:36:13
>>688
あー、それは俺も思った。

あと、num_randの期待値も。
下限10,000だけじゃ外側、内側の比重設定に困る。

692 :227 ◆eZQcaIaFJs :2009/01/22(木) 01:08:36
今日もEven13clockの壁を突破できなかった。なんか極大点に達してるような
気がするので、どこまで戻せば正しい道に戻れるか探してる所です。


693 :デフォルトの名無しさん:2009/01/22(木) 01:15:57
コアの部分でEven:12.5、Odd12.1サイクル位
革新がない限りこれ以上どうにもなる気がしない

694 :227 ◆eZQcaIaFJs :2009/01/22(木) 01:18:27
>>580
レジスタ126個使えるんで、カラーリングの必要が無いから楽ですよ。

>>614
stqr + printf でデバッグしてます。バグが出たときは svn diff。


695 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 01:24:15
>>693
ループの内側スカスカだったりするだろ?

696 :デフォルトの名無しさん:2009/01/22(木) 01:31:34
>>688
その場合って mti もちゃんと更新して、mti が0じゃない
ところからでも再開できるようにしてんの?

697 :デフォルトの名無しさん:2009/01/22(木) 01:32:40
全部アセンブリで詰めてるから隙間なんて150サイクルの間にOdd4個あるだけだよ

698 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 01:36:34
>>696
当然

699 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 02:13:27
evenだけ12切る方法思いついたがOddが恐ろしいことになる

700 :デフォルトの名無しさん:2009/01/22(木) 03:57:56
刹那な午後の人が hack the cell 始めてる〜 &ここも見てるっぽい。
いやー、さんざん勉強させて貰ったんで、なんか感慨深い感じ。

701 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 04:13:25
ああ、herumi氏のことか。

ここじゃないと思うよ。
リアルGoogle社員の人の日記(あそこのこと)見て真似を始めたらしい。
交流があるそうな。

去年ぐらいから一連のやり取りヲチしてるけど
東大院出身と京大院出身の頭脳バトルは見てて面白い。


素晴らしいじゃないか。
俺もherumi氏と戦えるなら負けても悔いはない。

#妨害ついでにXbyakのAtom新命令対応パッチまた送りつけてやるかヒヒヒ

702 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 04:29:35
まてよ
60倍云々って・・・俺のカキコが初出の情報かもしれない・・・wwww
まああの人は俺の日記読んでるからな


703 :デフォルトの名無しさん:2009/01/22(木) 04:46:51
んー、わからん。誰だろ? > real google の人
&日記更新してたんね。15cycle の latency の話だけど、
6cycle なのは命令実行後 LS に反映されるまでの latency
だから、命令解釈やら register file から各演算器の latch
への転送とかの 15cycle とは別物だよー。マジ長いねw

704 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 04:51:42
しょっちゅうherumi氏が日記のネタにしてるじゃないの

ヒント:「yajit」

705 :202:2009/01/22(木) 09:29:56
俺も初めてアセンブラ触った動機がMMXで画像処理したい!で、
へるみさんのサイトに散々お世話になった。
なんか感慨深いなー。

706 :202:2009/01/22(木) 09:31:57
>>704
チーム参戦型のICFPプロコンで、個人で上位を取っちゃうあの方ですね、わかります。

707 :デフォルトの名無しさん:2009/01/22(木) 16:11:09
今日もサボリのタミフルが、何故かおとなしいな

708 :デフォルトの名無しさん:2009/01/22(木) 16:16:48
呼んだら出てきちまうだろ!w

709 :デフォルトの名無しさん:2009/01/22(木) 20:26:42
くそー、13 切れねぇ orz

710 :202:2009/01/22(木) 21:07:07
13が増えてきてるのが凄く脅威なんだが・・・
693、俺、だんごさんが13切ってて、227と709が13か

711 :579:2009/01/22(木) 21:08:07
>>640
>それよりUNIX crypt(3)のハッシュ値からキーをダイレクトに
>求めるアルゴリズムでも解明して下さいよwww
暗号乱数とモンテカルロ乱数は別物だと何度もいっているだろバカ

>>647
>まあとりあえず脳内珍論はブログでやれ。
ブログに書くほどの内容でもないからここに書いているわけだがw

>>657
>テーブルのオフセットをアドレスを求めて値をロードするのも「演算」です。
これは痛すぎるだろ。tempering も線形写像なわけだが。

>>683
>それに比べればこちとらまだ青天井みたいなもんだよ。
青天井の意味知ってる?

712 :579:2009/01/22(木) 21:10:55
どうせ団子理解できないだろうから教えてやるよ。
その前に md5sum = 770e20e29056b7e5d420fc46bdc5ee6a

>>637
>んで、頭弱い子は加算命令をXORとANDに分解してソフト的に
>加算すればいいと思ってるだろ?
>レジスタ足りる?むしろメモリ足りる?
お前が挫折したからって俺と一緒にするな。

数値の表記法は n 進表記だけじゃないんだぜ?

欲しいのは 2 進表記の sum なわけだが、最終的に変換可能で
あれば途中経過の表記法は何だって構わない。交番だっていい。
問題なのは、mod 2^32 がガロア体ではないことだ。


713 :579:2009/01/22(木) 21:11:18
ループの内側がガロア体で、外側がガロア体ではなかったら、
そりゃ計数するのは非効率だろう。だったら、2^33 のガロア
拡大体の上で計数してみようという発想にはならんのかい?

33 次 M 系列の生成多項式 (33, 13) を使えば、十分実用的だ。

この系で 1 を計数する方法を考えれば明らか。
外側のループが ^= になっただろ?

>>628
>→「あり得ない仮定を持ち出す」
馬鹿が。

いくらお前でも、ガロア拡大体上での計数を前提としておけば、
tempering をループの外側に出せることも少し考えればわかるだろ?

そして、最後にシンドローム計算すれば 2 進表記に戻せる。

714 :579:2009/01/22(木) 21:11:51
>>631
>ああ、ちなみに最初くらいに1ビット×128並列のビットスライス
>実装思いついたけど全然速くなかったよ。
馬鹿はここで諦める。

ガロア拡大体上での計数は、ビットスライスで行った方が効率が
良いは明らか。が、mt[] の更新をビットスライスで行うのはいささか
非効率。これは、MT が "ビットスライスではない" 計算機での効率を
狙ったものなので当然といえば当然。

ビットスライスではない計算機で扱える効率的な線形写像は、
行列 [[0ii,0ij]T,[Iij,Ojj]T] (つまりビットシフト) の掛け算と
要素どうしの掛け算(AND)と足し算(XOR)、その組み合わせだ。

それに対して、ビットスライスで扱いやすい線形写像の条件は、
行列中に "1" の出現頻度が少ないもの。至極当然。

ならば、最初に mt[] を別の空間に写像しておいて、その空間で
更新行列の "1" が少なくなるように設計すればいくらでも
(それこそ青天井に)効率は改善される。

715 :579:2009/01/22(木) 21:12:34
しかし、これだけだとビットスライスを用いる根拠としてはまだ
少し弱い。それは、mt[] のサイズがレジスタ数と比較して大きい
(load, store をスケジュールするのが大変)のと、"1" の割合を
減らせたとしても行列自体が大きいので、必然的に計算量は多いまま。

そこで、mt[] 自体を小さくすることを考えよう。

が、残念なことに MT は mt[](19968 bit)のうち、19937 bit が
直交していることが理論的に証明されている。

さて、どうしよう?

>>640
>なんにせよ10000≦num_rand<UINT_MAXだからなぁ
答え書いてあるじゃないかーい。INT_MAX だけどな。

つまり、32bit の seed から始まる 31bit の空間は、19937bit の
空間の中で、非常に小さな部分空間でしかない。

その小さな部分空間では、19937bit の大部分が直交していない。
直交していないビットは、それこそ計算する必要はない。

課題アナル(仮称)の正体は、直交していないビットを探索するものに
他ならない。

716 :デフォルトの名無しさん:2009/01/22(木) 21:23:46
だンゴサんの括約で棺桶スレが成立したな

717 :デフォルトの名無しさん:2009/01/22(木) 21:33:32
>>579
なんでこんな大事なことばらしちゃうの?w

718 :202:2009/01/22(木) 21:36:40
一応、みんな判ってると思うが、Hack the Cell の課題が何か確認しておく。

ttp://cell.fixstars.com/challenge/challenge.html
課題は、メルセンヌ・ツイスタの最適化です。

注意事項
※似乱数列は、メルセンヌ・ツイスタの実装 mt19937ar.c と同じ乱数列を生成してください。

719 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 21:39:22
芽のない方法を芽がないと割り切る能力が欠落した人間の遠吠えはむなしいのう

720 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 21:42:03
>>717
机上の空論だよ

突っ込みどころのデパート。詭弁の集大成。

まったくもって今回の課題の解法として役に立たない。

721 :デフォルトの名無しさん:2009/01/22(木) 21:45:16
>>710
あれ?202 も 13 切ってたの? >>598-599 のやり取り見て、
まだ切ってないと思ってたよw
>>720
自分も >>599 が当てはまるとやばいんじゃないの?w

722 :579:2009/01/22(木) 21:47:43
連続投稿引っかかったww

最後に、端数をどうするかだ。

その前に、報告しておく。俺のアナルはもう検算フェーズに入ったぜ?
ざっくりと pmt[] の最悪値を見積もり始めた頃から勝算はあった
わけだが、解析結果を見ると想像以上に小さい。

これが何を意味するかわかるな?

第一に、mt[](pmt[]) の更新はほぼ O(rn^2) のコストであること。
r は線形写像行列に含まれる "1" の割合。n は行列のサイズ。

第二に、pmt[] から計数ベクトルへの写像行列を N-1 種類まるまる
用意してもメモリサイズ的に余裕ができたこと。

いまからマネしようとしても、解析の方法なんて想像もつかないだろ?
お前はご自慢の 59ms アナルでおとなしく全数探索でもしていろw

さーて、そろそろ実装でも始めますかwww


723 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 21:50:46
>>721
単純にMTの式をMTを32ビット×4並列化したものではないということだよ。
配列状態とサマリの値が等価になる範囲で高速化出来る方法は全て駆使してる。

もうやることは終わってさじ加減次第かな。
部分的にスカスカな部分があったりするのでループ全体を見て命令数が減るようにバランス調整が必要だ。

724 :579:2009/01/22(木) 21:51:09
>>719
自分に自信がないやつほど声がでかいってのは本当だったんだな。


725 :579:2009/01/22(木) 21:52:11
>もうやることは終わってさじ加減次第かな。
青天井じゃなかったのかよ

726 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 21:52:40
>>722
机上の空論は結果を出してから言うことだ

727 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 21:53:13
>>724←これとかな

728 :デフォルトの名無しさん:2009/01/22(木) 21:53:27
>>579
アンタ、糞団子と接するのは初めてかい?
まあ力抜いてアナル(r

729 :デフォルトの名無しさん:2009/01/22(木) 22:00:14
だんごも>>579もすごいぜ
少なくとも議論の台に乗れるんだから
俺も工学系だから少なくとも理系ではあるんだが何を言ってるのか全くわからんw

とりあえずサイクルの話はあんまりしない方がいいとおもた
サイクルの話見ただけでどこの最適化やっててどこの最適化やってないか想像できるし

730 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 22:00:24
負け犬579をアボーンリストに追加しとけばいい
彼は全然役に立たないことしか言ってない。

まあ見えない敵と戦ってる馬鹿だから相手にするな

731 :579:2009/01/22(木) 22:05:16
>>717
どうせ団子理解できないだろ?

>>718
>※似乱数列は、メルセンヌ・ツイスタの実装 mt19937ar.c と同じ
>乱数列を生成してください。

何をもって「同じ」とするか、だ。

tempering 前の数値も tempering 後の数値も、表記法が
異なるだけで、同じ数値なわけだ。tempering した方が
モンテカルロに用いる上では好都合な事が多いので
しているだけ。

>3. それともチェックサムだけ合ってればなんでもアリなのか、
>1. プログラム中でmt[]の内容を計算していたら良いのか、
>2. 全乱数wordについてtempering後の値も計算していないといけないのか、

これが 2 だったら、出題者が問題の意図理解していないよ orz
1 の判断は微妙だが、仮に 1 だとするとできる事は限られてくる、
つまりそんなコンテ誰が出ても結果は一緒。ツマンネ。


732 :デフォルトの名無しさん:2009/01/22(木) 22:06:35
ハイ おさらい。
http://pc11.2ch.net/test/read.cgi/tech/1158559031/l50

SSE実行できないCellでSSEの実測をしたという捏造の瞬間wwwww

864 名前: ・∀・)っ-○◎● [sage] 投稿日: 2007/06/17(日) 16:22:27
movd xmm0, eax
movd eax, xmm0
movd xmm0, eax
movd eax, xmm0
movd xmm0, eax
movd eax, xmm0
movd xmm0, eax
movd eax, xmm0


こんな感じで繰り返せば一応往復のレイテンシは計測できるよね
で、何クロックかかるのかな?

答えてね。俺より頭いい子ならすぐわかるはず。


もっとも俺は実測結果あるけど


866 名前: デフォルトの名無しさん [sage] 投稿日: 2007/06/17(日) 16:26:12
CellでSSEって

733 :202:2009/01/22(木) 22:08:13
>>721
>>689は超えたよ。
結構苦労してアセンブラ書いたしね。

>>721(=>>693?)もだんごさんも、tempering後の値をまじめに計算して
add を繰り返してる訳じゃないのか・・・
とりあえず、チェックサムだけ合ってればOKなのか訊いてみて、
OKならまただんごさん超えに挑戦してみるよ。

734 :579:2009/01/22(木) 22:09:04
>>728
アナルの力抜いておくよ。

>>730
ガクブルしている姿が見えて楽しいよw

735 :デフォルトの名無しさん:2009/01/22(木) 22:09:26
693だけどtemperingは毎回やってる
というか処理の7割がtempering
泣きそう

736 :デフォルトの名無しさん:2009/01/22(木) 22:15:59
話の腰をもんで悪いんだが
temperingってなんだ?

737 :デフォルトの名無しさん:2009/01/22(木) 22:17:17
揉むな!w

738 :デフォルトの名無しさん:2009/01/22(木) 22:20:06
勘で出てきた乱数を32bit空間で偏りが無い様に再マッピングしてるんだと勝手に思ってた

739 :デフォルトの名無しさん:2009/01/22(木) 22:21:20
マージャン用語です

テンパイ =【聴牌】
麻雀で、あと一枚必要な牌がくればあがることのできる状態。

これが、転じて何か事を成し遂げようとしたときの最終段階、、待ちの状態になったときに使うケースがあります。


てんぱる、てんぱってる。

スタンばる(スタンバイする)、、などと同じ和製語ですね。

740 :579:2009/01/22(木) 22:22:14
さてさて。

一日静かだと思っていた矢先、団子登場。団子はよっほど俺の
アナルが好きなんだなw 頼むから寝込み襲ってくるなよ。

この手の作戦だと実装を後回しにした方が効率いいわけだが、
結果出せ出せウルセーやつがいるから、俺はそろそろ実装始める
ことにするよ。

その前にクソして寝る。


741 :デフォルトの名無しさん:2009/01/22(木) 22:23:20
>>739
そうだったのか…
勘とはいえすごい的外れな嘘を教えてしまった
ごめんよ>>736

742 :デフォルトの名無しさん:2009/01/22(木) 22:27:12
おおざっぱに、MTで乱数生成の為に行うアルゴリズムでビットシフトを行う操作のことだな
tempering

743 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 22:30:00
>>729
暗号論の世界にも差分解読法なんてのがあって、ビットの並びの特徴から演算をショートカットする
方法に関しては俺自身もいろいろ試したことがあってね。
んで、今回はそういうショートカットは全くもって役に立たない。

MTのTemperingはフェイステイル型暗号でいうところの一種のS-boxみたいなもんだ。
RISCオペレーションで10命令程度のビット論理演算で構成できるとはいえ、
けっこううまい具合にビットがばらけるように考えてある。

加算ってさ、簡易的にはXORとANDの組み合わせで作れるわけだけど、
キャリーアップ先は、1ビット隣じゃん。
Tempering前と後じゃその1ビット隣すら全然別物になっちゃうんだよね。
だからTempering前の値をいくら「加算」しても無意味なんだ。

Temperingは少ない命令数ながら、うまく考えてあると思うよ。

暗号の実装の話になるけど、AltiVecのVPERMやSPUのSHUFBはAESのS-Boxを16並列で処理する
ことができるけど、SSEだと同様のシャッフル命令であるpshufb命令なんかを使うより別の方法のほうが速い。
今回の課題はそう言う観点で何が最適なアルゴリズムかを考えられる人でないと難しいと思う。

744 :デフォルトの名無しさん:2009/01/22(木) 22:31:58
> フェイステイル型暗号でいうところの一種のS-boxみたいなもんだ。
ち・が・う

745 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 22:34:09
>>739
(y << 15)んとこが16だったらアレしてこうして・・・とか思ったけど
なかなかうまくいかないもんだね

746 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 22:36:08
>>744
あらゆるフェイステイル型暗号のS-boxはビット論理演算の組み合わせだけで実装できるの知ってる?

747 :デフォルトの名無しさん:2009/01/22(木) 22:37:44
お得意の bitslice か? それと s-box の意義は全然別物だぞ?

748 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 22:39:16
フェイステイル型暗号におけるS-boxの役割は、簡単に言うと前後のビットの並びの相関性を破壊するための仕組み。
MTのTemperingも、Temperingを省いて合計値を計算しようとしても出来ないようにする程度には相関性を破壊できてる。

749 :デフォルトの名無しさん:2009/01/22(木) 22:45:37
そりゃ、暗号も擬似乱数も拡散って意味ではなんだって拡散だし、
ほとんどが論理演算の組み合わせで実装できるだろうよ。
その程度の意味で、feistel の s-box と同じって言ったのか?

750 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 22:53:59
Tempering=「調律」
スイーツ(笑)用語でいうとチョコレートコーティングの表面を滑らかにするための行程。

もちろん、そのまんまの意味で解釈しても意味はない。
ビットの並びの相関性をある程度破壊することに意味がある。
MTにおいては、相関を破壊することが、ビットの出現確率の均一化(Tempering)になる。


S-BoxのSはsubstitution
ようするにテーブルルックアップなわけだが。

たしかにTemperingとS-boxは別の単語だが、言葉をそのまま捉えても意味はない。
本質を理解しないといけない。

テーブルルックアップを使わない暗号・ハッシュアルゴリズムの実装では
ほとんどMTのTemperingみたいな簡単なシフト+ビット論理演算をやってる。
だから本質的に同じだって言ったんだよ。

751 :デフォルトの名無しさん:2009/01/22(木) 23:07:52
>テーブルルックアップを使わない暗号・ハッシュアルゴリズムの実装では
>ほとんどMTのTemperingみたいな簡単なシフト+ビット論理演算をやってる。
へー、すごいなw。いや、LUT を使わない実装が標準とか思わないほうがいいぞ?
暗号作ってる方は簡単なシフト+ビット論理演算で求められないように sbox を
導入してるのに、なんか可哀想になってきちゃうよ。

まぁ確かに本質的には両方拡散だから同じだしなw

752 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 23:30:18
>>751
RSAのRivest Cipher(RC)シリーズとかMD5なんてS-boxを使わずにスワップを繰り返す
暗号・ハッシュアルゴリズムの代表格なわけだが?
RC6はAESの最終候補まで残ったぞ。

753 :デフォルトの名無しさん:2009/01/22(木) 23:36:19
なんで軒並み落ちてって、今 feistel ばっかなのか考えようぜw

754 :デフォルトの名無しさん:2009/01/22(木) 23:37:45
>>743
よわかりませんが、M系列で「加算」する場合もキャリーは1ット隣なのでしょうか?


755 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 23:42:56
>>754
最低限言えることは、SPUには任意の位置のビットにキャリーアップしてくれるような特殊な算術加算命令はないということだ。

まあそういうことだ。
ハードウェアに不向きなことをやらせて性能を出そうという方が間違い。

756 :デフォルトの名無しさん:2009/01/22(木) 23:49:49
なんだかよくわかりませんが、よくわかりました。
ありがとうございました。


757 :,,・´∀`・,,)っ-○◎●:2009/01/22(木) 23:55:21
関係ないけどJNBのトークンって暗号形式なんだったっけ?

758 :デフォルトの名無しさん:2009/01/22(木) 23:59:44
そろそろ詭弁の○○ヶ条で〆てくれ

759 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 00:06:08
>>753
そこはAESばっか、に訂正しろよ。
AESが世界的に選ばれてるのはAESがAESだからだ。
AESに選ばれなかったfeistel暗号の信頼性を保証する根拠にするのは間違いだな。

とっくに死んだはずのDESが何故かワンタイムパスワードとして現役で使われてたりするくらいだし。
そのレベルで言うならMD5やRC4だって未だに使われてるんだぜ。
iがつかないニンテンドーDSだとWi-FiはWEP(RC4)強制だしwwwww

それに比べれば国産暗号のMISTYとかCamelliaなんてまだまだマイナー杉。
松井さんには悪いが。

760 :デフォルトの名無しさん:2009/01/23(金) 00:11:09
ん? DES も Feistel だろ? MISTY1 も Camellia も NESSIE とってるが。
& MD5 と RC4 をこれから新規に採用する規格があったら驚きだが?

761 :デフォルトの名無しさん:2009/01/23(金) 00:17:04
ちなみに、SHA-3 コンペでも feistel 使われてるぞw

762 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 00:18:28
当たり前のこと言ってどうすんだ。鍵長考えてものを言え。
引き合いに出すならRC6あたりだろ。


RijndaelがAESに選ばれたのはその一つとしてDESみたいな複雑なビットシャッフル演算がなくて
専用ハードウェアでなくても実装コストが軽いからだ。
別にRC6の暗号強度が否定されたわけではない。

763 :デフォルトの名無しさん:2009/01/23(金) 00:30:55
すまん、ちょっと読み違えてた。が、時間がない。また今度w
あ、俺も RC6 の暗号強度を否定するつもりは毛頭ないよ。

764 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 00:33:43
そもそも別にLUTよりビット演算のほうがコストパフォーマンスが優れてるなんて言う気はない。
不毛すぎ

今回のTemperingを通す前にサマリ計算が出来るかどうかだが
実用的な計算時間をはじき出すのは「無理」と言えるレベルの相関性の破壊は達成できてるというのが
俺の見解。

俺個人は国産暗号マンセーの立場なので君に付き合ってRSAの腐れの擁護する気もない。

ちなみにSHA-3候補として俺が注目してるのはこれ
http://ehash.iaik.tugraz.at/uploads/5/5c/Lesamnta.pdf


#あとAESは厳密にはSPNSであってFeistelには分類されない。

765 :デフォルトの名無しさん:2009/01/23(金) 00:37:12
日本語でおk

766 :デフォルトの名無しさん:2009/01/23(金) 00:39:15
当たり前のこと言ってどうすんだ。

767 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 00:43:44
個人的にCamelliaのSSE4向け実装とか開発中
おれ松井さん好きだし


>Fixstarsさん
来年の課題はCamelliaでお願いします。

768 :復活:2009/01/23(金) 01:17:25
>>764
俺の見解は、拡散って意味では tempering も sbox も同じってのには同意。
だが、シフト+ビット論理演算ではできない substitution を実現するために
sbox を導入してんだから、それを安易に同列に扱うのは理解できん。

あ、国産マンセーは俺も一緒。来年 Camellia いいねぇw

769 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 02:09:19
ま、とりあえず俺の情報源のひとつ晒しておくわ。

暗号アルゴリズム及び関連技術の評価報告
http://cryptrec.nict.go.jp/cryptrec_03_0424_outrep.htm

S-boxを使わないRC6はかなり高い評価を得てるよ。


一般的なバイトマシン・ワードマシンでビット演算でやったらめちゃくちゃコストかかる演算を
LUTなら簡単に実装出来たりする。S-boxの多くは、RISCプロセッサのビット演算にそのまんま展開すると
とんでもない演算数がかかったりするんだが、それは暗号理論的な堅牢性の根拠としては弱いと思うよ。

バイトマシン・ワードマシンじゃなくて、ビットマシンとかASIC・FPGAだったら?
たとえばDESのS-boxはAND/OR/NOT/XORの基本的な1ビット論理演算で
たったの平均56ゲートで構成出来る。
これは具体的にいうと32ビットワードの全加算回路に必要なトランジスタ数よりもかなり少ない。

AESのS-boxは・・・実装についての論文あったけど、いくらだったか忘れた。
(総当たりで最短を検索するプログラムが手元にあるけど8ビット×8ビットのS-boxは計算時間的に流石にきつい)

見方を変えようか
AESやCamelliaはS-boxを除けば、DESのIP・E・P・FPでやってるような複雑なビット単位の
攪拌処理をやらずに、世界最高水準の安全性を実現してるわけだ。
更にいうと、CamelliaはS-boxは実質的に8ビット入力×8ビット出力のものがたった1つだけしかない。
その点でみてソフトウェアでの実装の複雑さと暗号的な強度は別モノと考えてる。

770 :227 ◆eZQcaIaFJs :2009/01/23(金) 02:17:31
>>710
とりあえず13clock切れた。けど謎のストールに阻まれ停滞中orz


771 :デフォルトの名無しさん:2009/01/23(金) 02:34:03
本命:団子
対抗:>>202,>>227
大穴:>>579

772 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 02:44:12
Camelliaの教科書的実装より引用。
俺はなんでこれでAESなみの強度が得られるのか疑問だったよ。

#define SBOX1(n) SBOX[(n)]
#define SBOX2(n) (Byte)((SBOX[(n)]>>7^SBOX[(n)]<<1)&0xff)
#define SBOX3(n) (Byte)((SBOX[(n)]>>1^SBOX[(n)]<<7)&0xff)
#define SBOX4(n) SBOX[((n)<<1^(n)>>7)&0xff]

2と3は1の出力値をローテートしてるだけ。4は入力値をローテートしてるだけ。
なんでこれで「AESなみの暗号強度を実現できる」(中の人談)のか


>>771
というか、どうやら俺が見つけた最適化方法は既にこのスレで13clk切った連中は見つけてると思うよ。
あとは実装勝負なわけだが、アセンブラ相手にCで勝てる気はしない。
具体的にいうと現時点では>>693よりは遅い。ガチ。
(てかこの人が最速っぽい)

ただ俺にとっては今回の挑戦はどこまでもHack the spu-gcc43なのだ。
アセンブラ使わないと優勝できないのはわかってるが、アセンブラを使うのは俺的に負けなのである。
Cのみで挑戦する人向けに特別賞でも用意してくれるなら俺は喜んで表彰台にあがってやるぜ。
(herumi氏も参戦してきたことで、それですら負ける気がしてきた)

773 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 02:47:12
まあ、どうやってコンパイラの副作用を抑え込んだのかっていうのはソースにびっしり書いてたりするから
俺が上位に残ってたら参考にしてくれ、的な。

774 :デフォルトの名無しさん:2009/01/23(金) 02:55:35
>>769
俺の言いたい事は >>768 で言ったが、「今 feistel ばっか」とかが
気に食わないんかな? sbox = 堅牢と言ってるんではなくて、堅牢さと
速度を両立するのに sbox が向いてると言いたいだけなんだが。
シフト+ビット論理演算だけで同等の堅牢さを実現するよりも、
sbox の方が早くし易いし、小さくもし易いって理解なんだけど。
だから NIST にしろ NESSIE にしろ、feistel 系ばっかなんでしょ。
それだけ別物だから俺には tempering と sbox を同列には扱えん。
以上。

775 :デフォルトの名無しさん:2009/01/23(金) 02:55:47
>>772
俺はアセンブリじゃないと絶対に出来ないことをやってるから他の点の実装が一緒なら有利かもしれん
正直な話このスレで結構な数のヒント貰ったからこれがないと負けてた

776 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 03:46:15
この程度ならあんまり影響っていうレベルで、Cで組む人にアドバイス。
(というかC+組み込み関数で俺に挑もうと考えてる奴は流石にいないだろう)

特にイライラしたのは、even側の命令減らしたいのに値のロードにimmidiate load(evenロード)に勝手に展開しやがること。
qword型でしてるのにimmidiate load。
どうやらQWORDの全要素が同一の値だと勝手にimm loadに展開しやがるらしい。

んで、volatileにしたらアドレスからロード(Odd)に展開してくれるようになった。
とか、いろいろ。
あと、AND/OR/XORなどで使う値はhalfwordに即値指定すれば命令数を減らせる。

俺としてはまた方針を変えてパイプラインを詰め直そうと思っている。
現時点で片方のパイプが全部埋まるところまでCで詰めることができてるわけで


>>774
残念だが同意できない。
標準規格においてダントツのトップに君臨するAESはFeistel系アルゴリズムとちょっと似てるが分類上別物。

あと示したとおり、Camelliaは普通のFeistel型暗号で従来4つ以上のLUT(S-Box)が必要な処理を
1つのLUTとローテートで水増ししてるけど、その点で強度に問題があるといわれたことは無い。
単一のS-boxにビット演算を少し組み合わせるだけで、強度を得るのに必要なS-boxの数を
実質的に減らすことができるのだから、シフト・論理演算・定数の組み合わせでS-boxを使わずに
性能と強度を得るのが不可能とは思わん。
実際問題、S-boxを使わないRC6は多くのFeistel暗号より高速で、なおかつ十分な堅牢性がある。

S-boxがハードウェアの負担が小さいってこと自体同意できない。
モバイル向けのプロセッサにはAESのS-boxすらデータキャッシュに収まりきらないくらい小さいものもある。
CamelliaがSBOXを最小の実装でたったの256バイトのLUTだけで構成出来るように配慮されてるのは
ミリワットクラスの組み込みCPUでの実装を視野に入れてるからだ。
CamelliaのS-boxが小さいことは、キャッシュメモリが小さいアーキテクチャにやさしいということでもある
で、それでいて十分な強度という評価を得ている。

777 :デフォルトの名無しさん:2009/01/23(金) 04:24:16
うーん、論点がどこなんだかイマイチ解らん。
feistel の sbox と spn の sbox は別物なのか?
俺も不可能とは思ってないし否定もしないよ>RC6
負担が小さいとも思ってない。堅牢性と共に、早く
出来ることも小さくする事も可能なのが重要なだけ。
AES の sbox も 256 だったと思うのだが違うのか?
俺には tempering と sbox を同列に扱うのは理解
できないし、「みたいなもん」なんて説明には到底
同意できんから異は唱えるが、別に団子がそれで
間違ってないって思うのはどーでもいーよ。

ってか、こんな話誰もついてこねーよなw

でもさー、団子も sbox 系とシフト・論理演算系を
綺麗に別けてねーかw やっぱ別なんじゃね?w

778 :デフォルトの名無しさん:2009/01/23(金) 05:11:28
>>770
みんなすげぇなぁ。
おいら even -1 したら、odd +3 = total +1 で意味なかったよ orz

779 :202:2009/01/23(金) 09:21:02
>>778
wwwwwwwwwwwww
すっげーヒントあげたいけど、その壁は自分で超えろ。

780 :デフォルトの名無しさん:2009/01/23(金) 09:41:39
>>778
大丈夫、私もその辺で挫折した。つーか、飽きたw

781 :202:2009/01/23(金) 09:42:23
>>693が、58156364 / 4 * 12.5 / 40 = 4543466 か。
この数値が出せてたら俺より速い。
>>775 の意味も判る。

現時点でこのスレだと、
優勝、準優勝候補 : >>693 , 俺
優勝候補を抜く可能性のあるヒト: >>568, >>579

だんごさんと >>579 の話にはついていけなかったんだが、
とりあえず >>579 の Prolog が導き出した解法のサイクル数が
出るまではインラインアセンブラで限界まで行った者勝ちっぽいな。

782 :デフォルトの名無しさん:2009/01/23(金) 11:13:19
まー普通に考えても、ここに書き込んでないやつで優れた奴もいるだろ〜から
優勝候補をこのスレ内で絞るってのも無理があると思うんだけどな

783 :202:2009/01/23(金) 11:46:04
>>782
もちろんその可能性は否定しない。このスレを読まないと、「命令数どこまで減らせる」という
指標がない状態でチキンレースに参加しないといけないからキツイけど、このスレをROMってるなら
命令数がどこまで減らせるか判るね。

784 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 11:59:48
>>781
おい、俺様を優勝・準優勝の可能性からはずすな!

いや外してもいいや。こっから先の手の内は明かすわけにはいかない

とりあえずカードは残してる。

785 :デフォルトの名無しさん:2009/01/23(金) 12:06:20
>784
だって亀田兄弟的ポジションじゃんw

786 :202:2009/01/23(金) 12:08:22
>>784
まじかよ・・・
>>693の12.5がもう限界だと思ってた。

787 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 12:16:58
>>786
全然関係ないけどさ
Oddへの置き換えなしだとEven側は18くらいかかるわけだけど、これを17に減らす方法って気づいた?

788 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 12:27:55
mt[n] = mt[m] ^ (x >> 1) ^ (((x & 1) == 1)? 0x9908b0dfUL : 0);



x = rotr(x, 1);
mt[n] = mt[m] ^ x ^ ((x > 0x7FFFFFFF)? (0x1908b0dfUL) : 0);



※これを使ってもチキンレースには参加できません。課題が別モノなら有用だったかも

これ問題公開されてから3日くらいで考えたネタだけど、最終的に高速化の候補としては外れた方法だから敢えて紹介しておく。
あとブロック単位じゃなくてスカラ単位で取り出す場合はこっちのほうが速いかもしれない。レイテンシ的な意味で。

789 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 12:44:24

^ x ^

↑このへんがむかつく

790 :202:2009/01/23(金) 13:24:28
>>787
evenの命令数削減は無意識だから、どうやったら even18 になるか悩んだ。
andc ともう一つ命令を使うヤツか?
もう一つの命令で予約違反してるけど、将来のSPUで動かなくなっても
構わないと判断したよ。

791 :202:2009/01/23(金) 13:26:21
andcじゃなくてselでも良いのか。

792 :デフォルトの名無しさん:2009/01/23(金) 13:48:27
>>202 なに言ってんだ?w

793 :202:2009/01/23(金) 13:54:00
いっか、トップランカーには無意味な情報だからバラしちゃえ。
spu_and( matrix_a, spu_cmpeq( spu_and( x , 1 ) , 1 ) )

spu_andc( matrix_a, spu_subx( z, z, x ) )

794 :デフォルトの名無しさん:2009/01/23(金) 13:58:00
コンテスト参加してんのお前らだけじゃねーぞ
少しは考えろ

795 :デフォルトの名無しさん:2009/01/23(金) 14:00:30
ってか、202 には >>788 の答えは見えてないのか?

796 :202:2009/01/23(金) 14:00:57
>>794
悪い。調子乗りすぎた。
締め切りまで黙ってる。

797 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 14:03:11
>>793
そ  ん  な  方  法  も  あ  っ  た  の  か
第一オペランド破壊する命令はうまく考えて使わないと困るんだよね。

>>788見つけたときは俺SUGEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEって思った

798 :デフォルトの名無しさん:2009/01/23(金) 14:06:19
>>797 こんなので思うな!w

799 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 21:14:51
8bit×4の水平加算とかあるけど何に使うんだコレ

SSEのPSADBW/MPSADBWと同じく、動画の動き検出とかに使うんだろ?
それしか思いつかない。

悲しいことに今回の課題でも役に立たない。
如何あがいても垂直加算のほうが性能出る。
これがもしもOddで処理されるならまた使い方も違ったんだけど。

800 :デフォルトの名無しさん:2009/01/23(金) 21:23:56
absdb/avgb/sumb あたりは動画のためだぁな。

801 :579:2009/01/23(金) 21:43:31
ORIGNAL: sum=26842941, 20235458 ticks
MINE: sum=26842941, 296432 ticks
ORIGNAL: sum=ff298dc7, 29209150 ticks
MINE: sum=ff298dc7, 416484 ticks
ORIGNAL: sum=e41976b4, 21287451 ticks
MINE: sum=e41976b4, 359310 ticks
ORIGNAL: sum=1d20a3cf, 19895914 ticks
MINE: sum=1d20a3cf, 271577 ticks
ORIGNAL: sum=7ab6f153, 1012083 ticks
MINE: sum=7ab6f153, 80442 ticks
ORIGNAL: sum=d528faae, 14662211 ticks
MINE: sum=d528faae, 226395 ticks
ORIGNAL: sum=f2e9b16f, 20421921 ticks
MINE: sum=f2e9b16f, 285473 ticks
ORIGNAL: sum=c38c3ffb, 17745083 ticks
MINE: sum=c38c3ffb, 312869 ticks
ORIGNAL: sum=4a476dd4, 17155127 ticks
MINE: sum=4a476dd4, 268986 ticks
ORIGNAL: sum=817388cd, 412802 ticks
MINE: sum=817388cd, 60522 ticks

課題アナル(仮称)間違えていたよ orz

ところで、いつまでも仮称だとアナルが可愛そうなので、正式名称を
ハックtheアナルに決めたよ。ついでに処理系と実装も変えたけど。

802 :579:2009/01/23(金) 21:44:09
$ diff mt19937ar.sep/mt19937ar.c~ mt19937ar.sep/mt19937ar.c
52c52
< #define MATRIX_A 0x9908b0dfUL /* constant vector a */
---
> #define MATRIX_A 0x9908b0cfUL /* constant vector a */

$ uname -mrsv
Linux 2.6.18-6-powerpc64 #1 SMP Fri Dec 12 23:54:31 UTC 2008 ppc64

$ cat /proc/cpuinfo
processor : 0
cpu : PPC970FX, altivec supported
clock : 2700.000000MHz
revision : 3.1 (pvr 003c 0301)

processor : 1
cpu : PPC970FX, altivec supported
clock : 2700.000000MHz
revision : 3.1 (pvr 003c 0301)

timebase : 33333333
platform : PowerMac
machine : PowerMac7,3
motherboard : PowerMac7,3 MacRISC4 Power Macintosh
detected as : 336 (PowerMac G5)
pmac flags : 00000000
L2 cache : 512K unified
pmac-generation : NewWorld

ですが、何か?

803 :579:2009/01/23(金) 21:45:05
ちなみに、実装は C99 な。本当の意味でのな。altivec も使っていない。
32bit ビットスライスwでこの程度。端数の処理はまったく最適化していない。

SIMD 化したらもっと早くなるかなぁ(棒

>>720
>突っ込みどころのデパート。詭弁の集大成。
で、
>>729
>だからTempering前の値をいくら「加算」しても無意味なんだ。
言いたいことはそれだけ?

>>579
>tempering 前の「とある値」を集計する。GF(2)の中で。
>すると、tempering (相当の操作)は一回で済む。
誰も tempering 前の値を「そのまま」加算するとは言っていないぜ?
加算するとも言っていない。首尾一貫してるだろ?

>>730
>彼は全然役に立たないことしか言ってない。
オマエモナー

>>771
そんなに俺のアナル大きい?

>>781=202
俺?優勝する可能性?ないよ。出ないしw

804 :デフォルトの名無しさん:2009/01/23(金) 21:56:21
>>801
おいORIGANALが本来のターゲットより一桁以上速いぞw
でも、多項式取り違えてたとはいえ、すげえ伸び率だね。

805 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 22:05:25
よくできた捏造だな
でもターゲットはPowerPCじゃなくて「SPU」

806 :デフォルトの名無しさん:2009/01/23(金) 22:08:25
よ、よく出来てるのか?w

807 :デフォルトの名無しさん:2009/01/23(金) 22:09:26
> 俺?優勝する可能性?ないよ。出ないしw
これを書くのはもうちょっとあとの方が面白かったかなw

808 :デフォルトの名無しさん:2009/01/23(金) 22:09:33
>>805
たしかに>>732より、よくできてるのは間違いないな


809 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 22:11:27
ゲハ板で発狂してるアスペル君が勝手に勘違いしただけだろそれ



810 :デフォルトの名無しさん:2009/01/23(金) 22:12:40
さすがに俺もそう思う。団子はウザイけど >>732 は無罪。

811 :808:2009/01/23(金) 22:15:00
そうだったのか。団子ごめん

812 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 22:16:23
PPUとSPUが同じコードシーケンスで実行できるとかアホなこと言いやがんだもん
PPUに18issueの命令帯域が必要になるぞって言ったら、十分とかいいやがるし

しまいには、SSEがx86のフォーマットとはかけ離れてるとかwww
あの命令フォーマットがx86でなくてなんなんだよ


813 :デフォルトの名無しさん:2009/01/23(金) 22:37:38
大丈夫だよ。あのコピペで団子は間違ってないってみんな分かってるから。

団子が間違いを認めなくてウザい事もかなりあるがな。
あと接頭辞のように付いてくる「知り合いに誰々がいる」って下りもウザい。
知り合いが有名なだけで、別にスネ夫が偉いわけじゃないだろう。

814 :デフォルトの名無しさん:2009/01/23(金) 22:38:02
「サマリだけ求めるショートサーキット禁止」
とか胴元が慌てて言い出したら爽快だな。
つか出題者があたまわるいってことになるが。

815 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 22:45:01
俺もそろそろトランザム(笑)発動しちゃおうかな
そろそろ勘のいい人は愚直な方法がいくらばかばかしいことに気づいてるかも知れない頃だし

>>814
関数抜ける前にMTの配列に書き戻しさえすれば等価な実装でもかまわないのでは?


816 :デフォルトの名無しさん:2009/01/23(金) 22:59:23
ルールを根本変更されると正直悲しい。そしてキツい。
単なるチキンレースなら降りる。

817 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 23:18:26
課題見直しで延期とかになったら面白い。

MTの配列を毎回舐める必要がない前提ならトランザム(笑)可能なことは気づいてた。
それをやるとアルゴリズムが根本から変わるけど

コアループ抜けてからMT配列に書き戻せばちゃんと再実行も可能。

818 :デフォルトの名無しさん:2009/01/23(金) 23:32:24
>>734の言うとおりになったな

819 :,,・´∀`・,,)っ-○◎●:2009/01/23(金) 23:39:57
俺もロジックジェネレータ改造したそろそろ走らせようかな
テキトーに当たり付けたパターンを再帰で全部試す馬鹿な方法使ってるから最適に近い方法見つけるのに1ヶ月くらいかかる。
俺の試算だと

820 :202:2009/01/24(土) 00:00:50
ごめん、もうプログラムは書かないから、言わせてくれ。

>>816
そもそも、課題は乱数生成を最適化しろというもので、最初からどこまでサイクル数を
減らせるかというチキンレースなんだぞ?

>>579の方法はただのチートで、ルールが「チェックサム合ってれば乱数生成しなくても良い」
ってなったらそれこそ根本的なルール変更だ。

俺はHack the Cellに参加したんだ。単なる数学コンテストなら降りる。

821 :デフォルトの名無しさん:2009/01/24(土) 00:18:10
様々な分野に対する知見が求められる、それだけのことじゃないか?

822 :202:2009/01/24(土) 00:22:59
>>821
課題を100回読んでよ。 つ http://cell.fixstars.com/challenge/challenge.html
どこに「乱数のチェックサムを計算してください」って書いてある?

「課題は、メルセンヌ・ツイスタの最適化です。」
「メルセンヌ・ツイスタの実装 mt19937ar.c と同じ乱数列を生成してください。」

823 :デフォルトの名無しさん:2009/01/24(土) 00:25:25
しかしCellって本当に早い?使ったことないけど
フィクターのサイトにあるパフォーマス例と同じ処理をXeonで組んでみたら
10倍速いのできたんだが・・・

824 :デフォルトの名無しさん:2009/01/24(土) 00:29:55
>>693だけど
なんか裏で本気出してる間にお通夜モードになっとる
とりあえず12.0まではきた
まだ0.3位は詰めれるかもしれない
で、大会中止とかルール変更とかなったらおれはどうすればいいんだ

825 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 00:30:33
>>820
おちつけ

> ルールが「チェックサム合ってれば乱数生成しなくても良い」

乱数なんて所詮擬似的なモノです。
mt[]の配列以外のワークメモリを別に確保して、その上で乱数生成もやる
それが認められるなら高速化はいくらでもやりようがある。

CUDAの1SMあたりのレジスタ本数は32ビット×8192=32KB
配列の要素を全部レジスタに割り当てて計算し、あとでメモリ上のmt[]に書き戻した方が効率がいい。
mt[]の配列をレジスタに割り当てて計算したらMT互換ではないのか?決してそんなことではない。
レジスタに余裕があるアーキテクチャでは、最適化の過程でそんなことは自動でやってくれる
処理系も存在する。

【というわけで】
mt[]を舐めることさえやめれば、いくらかは高速化の余地があるよ。

たとえば、コアループの内側でmt[]のいくつかレジスタに割り当ててしまって、
全部レジスタ上でこね回すとすれば、128ビット×156本のレジスタが必要になり、SPUの128本本数では足りない。
そんなことをSPUで実際やれば56本固定で食っちまう。せいぜいロード・ストア回数が減るくらいしか実用性はないし
アンロールに使えるワークレジスタが実質的に減ってしまって逆に性能低下になりかねない。

そこでだ、レジスタを節約しつつ、スループットを稼げるように、データのレイアウトそのものを弄ってしまえばいいんじゃないかと。
ワークメモリはレジスタに割当て続ける必要はなく、LS上の空きにスワップしていい。
もちろん、これはさんすうやではなく、計算機屋としての理屈だ。


どこまでが王道でどこからが邪道なのか、無用な線引きを脳内で作ってしまっても「勝ち」はないわけで
とりあえず中の人に明確化してもらいたいところだ。
俺はgcc43って指定してあるのにアセンブラ使用可になった時点で最早ルールなんてないもんだと思ったが。

826 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 00:33:09
ごめん文が微妙に抜けてた

×そんなことをSPUで実際やれば56本固定で食っちまう。
○224要素くらいまでを割り当てるにしても、そんなことをSPUで実際やれば56本固定で食っちまう。

827 :202:2009/01/24(土) 00:38:54
>>825
別に、mt[] をいじるなとは言ってないし、一部の計算をメモリ上じゃなくてレジスタ上で
やるのは俺もやってる。

だが、>>579はそもそもMT擬似乱数の生成自体全くやってないように思えた。
mt[]を変形してMT擬似乱数を生成しているだけなら俺の勘違いだ。噛み付いてスマン。

828 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 00:41:37
ネタばらししちゃうけど13切った奴はみんな部分的に8並列とか16並列とかやってるだろ?
spu_shuffle使ってパック・アンパックしてやってるだろ?
それがアリなら何でもアリだよ。

たとえばさ、32ビットの疑似乱数の上位16ビットと下位16ビットが別々のレジスタ上に分かれてたら、乱数じゃないの?
んで、上下が分かれた状態で別々に合計値の計算してもいいよね?

それが速いかどうかは別にして(っていうかcarryの計算が増える分速くない)

829 :202:2009/01/24(土) 00:46:45
>>828
ごめん、それ気づかなかったわwwww

てか、コンテスト参加者でまだ13cycle切ってない、これから頑張る人も居るんだから、
ネタばらしは止めようぜ。

830 :202:2009/01/24(土) 00:51:07
俺は、 >>598>>601 でいってるとおり、まじめに genrand_int32() の戻り値を
計算した上でチェックサムをとってる。

乱数を複数のレジスタに分割するのはどうなんだろうな?
たまたま場所が離れているだけで、ビット単位では元の乱数を生成しているんだし、
別にいい気もするが、、、グレーだな。

831 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 00:58:17
じゃあそのグレーな方法を使わせてもらうよ。

x86で64ビット整数をどうやって扱ってるか知ってる?
下位32ビットがeax、上位がedxだ。

整数を扱うのは2進でなくともたとえばBCDでもイイと思うわけ
浮動小数の仮数部で23ビットを表現してもいい。

なあに、genrand_int32()の形式で要素を抽出するAPIを別途用意すれば問題ない

832 :227 ◆eZQcaIaFJs :2009/01/24(土) 01:26:29
とりあえずストール地獄からの脱出に成功。
明日も出勤だけど>>824目指して頑張る。

ところで、
for (int i = 0; i < num_rand; i+=2) {
sum += genrand_int32();
sum -= genrand_int32();
}
とかやってみたらチート対策になったりしないのかな?かな?


833 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 01:27:20
俺はチートはしないよ

834 :デフォルトの名無しさん:2009/01/24(土) 01:56:42
init_genrand_mine を変更するなとは書いてあるけど、
init_genrand_mine で初期化されたベクタでテストするとは
書いてないわけだが。

835 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 02:00:54
トランザム=通常の3倍の性能
あとはわかるな?

836 :デフォルトの名無しさん:2009/01/24(土) 02:00:58
だんごいい加減ネタばれひどいだろ
13は切ってるけど、>>828の方法は使ってない
あんたが天才なのは結構だけど、コンテスト終わってからにしろよ


837 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 02:04:33
残念だがその方法には芽は無いようだ。
散々罵倒したけど彼には感謝しないといけない。

なあに、単純な理屈だったよ。

838 :デフォルトの名無しさん:2009/01/24(土) 02:25:51
Hack the Cell と見せ掛けて Hack the spu-gcc43、
と思ったら Hack the MT だったでござる。


839 :デフォルトの名無しさん:2009/01/24(土) 02:32:37
ツンデレ?

840 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 02:34:18
おう

841 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 02:46:25
このブレイクスルーは、ある意味でCellの特性を最大限生かしたものになる。
もちろんMTの互換性・再実行性も保障できる。

つまり、アセンブラなんて最初から必要なかったんだよ。

いや、それでも詰めるには必要だけど


842 :デフォルトの名無しさん:2009/01/24(土) 02:48:32
実装するのと極めるのは別物だからな

843 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 03:01:18
いいや、最後にはSIMDerだからこそできるテクニックがものを言うと思うよ。


844 :デフォルトの名無しさん:2009/01/24(土) 03:28:16
なんか色々台無しだね。>>321 の予想通りという事かね。

845 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 03:44:22
どのみち最速で無い(愚直にmt[]を舐めるだけ)の方法は近々俺の日記で公開してやろうと思っている。

Fixstarsはなんでmt[]をvec_uint4との共用体にしといてくれなかったのか?
実はそこに答えがあったのだ。

846 :デフォルトの名無しさん:2009/01/24(土) 03:49:22
>>845
既に気付いてる人間からしたら、滅茶苦茶迷惑なんですけど。

847 :デフォルトの名無しさん:2009/01/24(土) 03:50:25
おいおい
あんまりいらんことするな
12サイクルに到達してない人間の努力は全否定か
ついでに10倍速で参加賞出さなきゃいけないFixstersの身にもなれと

848 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 03:55:15
>>847
10倍到達した人が多い場合は上位からってルールがあったはず
どのみち優勝不可能なコードなんだから文句無いだろ?

俺がやらなきゃどうせ上位者(BSDライセンスでソース公開)はアセンブラばっかしのコードになるんだろ?
アセンブラのコードなんて公開されてもソースの再利用性という面では意味が無いんだよ。
高速化のテクニックを、アイディアを再利用性の高い形で世に出す必要がある。
俺は俺の信念で、アセンブラ許可したFixstarsをこき下ろす

849 :デフォルトの名無しさん:2009/01/24(土) 05:55:21
アセンブラ無しなら自分が最速で、もっとも優れたテクニックやアイディアを持ってると思ってるあたりが痛いよな……


850 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 06:14:29
新しいコードだとTempering相当処理は0.5命令/Word切った。
別のところが増えちゃってるんですけどね。

言ったろ?トランザム発動するって。

851 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 06:48:26
すまん、黙っておく。
実は何も思いついてません。ヒヒヒヒヒ

852 :デフォルトの名無しさん:2009/01/24(土) 07:47:25
土日でエネルギー使い果たして失速するんですね、分かります

853 :デフォルトの名無しさん:2009/01/24(土) 07:53:17
ホント今回「も」呆れる。団子痛すぎ。
でも今回は珍しく本人が非を認めたから許す。
もっとやれ。

854 :557:2009/01/24(土) 08:00:42
本当に迷惑するから公開はやめてくれ
何故そんなことをする

855 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 08:04:54
じゃあ締切後に公開するよ。
どうせ提出しないコードだ。

856 :デフォルトの名無しさん:2009/01/24(土) 08:22:01
>>848に述べられているところの必要性から公開するというなら
まずはフィックスターズに直接文句言ってくれよ
その後でコンテスト終了後に非アセンブラのコードを公開すればいい
それによってあなたの言う「再利用性」の要求は達成されるのでは?

確かに再利用可能なコードとアイディアの公開は必要な要素だと思うし賛同するけど
別にコンテスト中にそれを行って競技を潰さなければ達成できない目的ではないと思う
純粋に自分の信念から公開に踏み切ろうとするのならば、理解して欲しい
また、そんな可能性は無いとは思うが悪意や自己顕示欲からそれを行おうとするのは止めて欲しい
そんなことは分別のない子供のすることだし、恐らく貴方は子供ではないので。

857 :デフォルトの名無しさん:2009/01/24(土) 08:24:13
>>855
あ、そうなのか。ありがとう
必死こいて>>856みたいな長文書いたのが恥ずかしい
気分を害してしまったら申し訳ないです

858 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 08:35:03
まあ、コンテストの上位を狙うにはどっちにしろ「役に立たない」と思うけどね。
公開予定のコードはもう開発凍結するよ。

無駄だとわかったことはやらない。

859 :デフォルトの名無しさん:2009/01/24(土) 09:34:56
無駄でも挑戦するのがロマンだろ?
まぁ、コンテスト潰しはお勧めしない。
# 今回については、「もっとやれ」とは思わなくもないがw

860 :デフォルトの名無しさん:2009/01/24(土) 10:48:45
まあ万人にフェアであるべきだよな

861 :デフォルトの名無しさん:2009/01/24(土) 12:11:49
>>848
>俺がやらなきゃどうせ上位者(BSDライセンスでソース公開)はアセンブラばっかしのコードになるんだろ?
>アセンブラのコードなんて公開されてもソースの再利用性という面では意味が無いんだよ。

痛いやつだなw
参加者全員がソース公開の許可をしているんだから、運営側の判断で
全員のソースコードが取得可能になるとか、最速のコードの他にも十分早くて可読性の良いソースが
公開されるとかも可能性もあるだろ。

>高速化のテクニックを、アイディアを再利用性の高い形で世に出す必要がある。
これも大事だが、他の参加者が”自分で考えて”スキルを磨く事も大事なことだろ?

おまえが凄いのは認めてるやるから、人の”考える”楽しみを奪うなよ。

862 :デフォルトの名無しさん:2009/01/24(土) 16:32:27
>全員のソースコードが取得可能になるとか、最速のコードの他にも十分早くて可読性の良いソースが
>公開されるとかも可能性もあるだろ。
おめでたいこって。

>おまえが凄いのは認めてるやるから、人の”考える”楽しみを奪うなよ。
考える能力の低い奴に限ってそう言うよね。
充分能力があるなら、目の前にゴールへの地図があってもその過程を楽しむことができるのに。

863 :579:2009/01/24(土) 16:44:32
>>838
俺は最初から Hack the MT だとおもてたよ。

真面目に乱数列を生成する方法については、IBM か SCE が最速のコードを
(しかも証明つきで)持っているのではないかと思えるわけだ。CELL の設計を
する際にそのくらいの検討はしているだろう。

それから、これは当てずっぽうだけれど、Folding@Home の乱数も MT では?
だとすると、SCE は広告費を掛けて最適化しているはず。勝ち目ないね。

ならば、C だけで(SIMD 使わずに)最速だしたら面白いんじゃね? と思った。
実際問題、それを行うには「課題」をかなり曲解しないと無理なわけだが、
そこは数学屋と物理屋のスタンスの違いであるわけだ。

最初はそう思っていたけど、興味が変化したのは良くも悪くも >>628

数学は演繹の学問。全ては真実であると証明されたことから導かれなければ
ならない。という意味では、
>→「あり得ない仮定を持ち出す」これは詭弁の○○箇条にもあったな
この指摘は正しい。

片や、物理は帰納の学問。全ては観測に基づく。もっともらしいと評価された
「事実」は、それを反証する観測がなされない限り「事実」であるとする。
そして時には妥協もする。物理屋は、「ありえない仮定」はよく用いる。
「仮想仕事」言葉くらいは聞いたことあるだろ?

864 :579:2009/01/24(土) 16:45:31
数学屋と物理屋、どちらが上だ下だと論じるつもりは毛頭ないが、>>628
自ら「算術師」と名乗り、人を「さんすう屋」と呼ぶ「団子」に興味が移った。

「あり得ない仮定」が「あり得ない」とするのは、団子の「仮定」でしかない。
この仮定は、演繹の学問としては正しい方法ではない。

だから、>>713 でその仮定が間違えていることを証明した。それでも団子は
「机上の空論」といって譲らない。

ここで完全に興味を失った。

団子という人物を知った気になっていた。「数学屋>さんすう屋>>>算術師」
という事実が「観測された」と思っていた。

が、ここに来てどうだろう。最近の団子、俺と同じこと言っていないか?
つまり、最初から俺は団子に乗せられていたんだな。

完敗。

コードは団子同様、締め切り後に公開することにするよ。似たようなロジックで
SIMD 使われたら勝てる気がしない。

ごめんな。


865 :579:2009/01/24(土) 16:59:59
>>820
>メルセンヌ・ツイスタの実装 mt19937ar.c と同じ乱数列を生成してください。
mt19937ar.c は、線形合同法で生成した最初の種からしか数列生成できないだろ?
課題としては、mt19937ar.c と同じ数列が生成できれば良い、と読める。
だって、mt[] の初期値を投入する関数削除されちゃっているんだもん。

>>834
init_genrand_mine() の内容を勝手に変更されたら、それは mt19937ar.c が
生成する(できる)乱数列じゃないよね。そんな風にルール変更されたら
それこそアンフェアじゃないかい?

それから、任意の数だけ生成した乱数列の合計が計算できるということは、
任意の箇所で生成される乱数を計算できる(num_rand - 1 で計算した合計を
引き算すればよい)。つまり、「乱数列が生成できる」のと同じ意味になる。

そして、コンテストは sum を計算する速さで競う、と書いてある。

>>825
>乱数なんて所詮擬似的なモノです。
まさに。

そして、擬似乱数は「使う側」の資質も問われます。
今回は、「合計を計算するために」擬似乱数をつかった。
それだけの事だ。

>>830
ある程度真面目に計算するにしても、水平加算は最後の1回だろ?


866 :579:2009/01/24(土) 17:29:39
>>837
>残念だがその方法には芽は無いようだ。
>散々罵倒したけど彼には感謝しないといけない。
>なあに、単純な理屈だったよ。

最後に捨て台詞吐いておくよ。

俺の発言には所々「嘘」が盛り込まれている。思考の過程で
「こりゃだめだ」と行き詰ったものな。

嘘を混ぜ込むのが団子の常套手段だろ?

そこを起点として少し考えれば、団子以外のやつは気づくと
思っていた。そして、団子は気づかないだろうと思っていた。

なあに、単純な理屈だよ。

867 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 17:36:51
俺は疑わしきは罰せよ、0か1かの代数ばっかし扱う畑育ちだから
数学記号とか読んでもモナー板専用の特殊文字の羅列にしか見えないわけで
最も愚かな解法で再実装してみてるが

各処理の演算コストモデルが完全に逆転してしまった。
マジでXORとシフトだけしかない世界だな

868 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 17:39:41
> 俺の発言には所々「嘘」が盛り込まれている。思考の過程で
> 「こりゃだめだ」と行き詰ったものな。
ああまさに俺の常套手段だ



869 :デフォルトの名無しさん:2009/01/24(土) 19:40:59
なんちゅう厨房の会話だw

870 :202:2009/01/24(土) 19:41:14
「同じ乱数列」が何を意味するのかは、Fixstarsに質問投げたから回答待ち。

>>865
>課題としては、mt19937ar.c と同じ数列が生成できれば良い、と読める。
うん、同じ乱数列を生成する速度を競ってるんだよね。
で、>>579の方法では、同じ数列を生成してるの?
「○○すれば同じ数列が取り出せる」というんだったら、○○も加えた時間を出してね?

>ある程度真面目に計算するにしても、水平加算は最後の1回だろ?
だから?
同じ乱数列を生成するのが課題で、課題を満たした上でチェックサムを取る順番なんて自由だろ?

871 :202:2009/01/24(土) 19:48:05
何度も言うけど、課題は同じ乱数列の生成で、チェックサムはあくまでも同じ乱数列を
生成しているかを確認する手段に過ぎない。
デクリメンタが時間を計測する手段にしか過ぎないのと同じ。

>デクリメンタのオーバーフローを利用することは可能ですか?
>今回の出題の趣旨に反するので不可とします。

このFAQと同じ。
スタック解析してORIGINALの計算結果を探すとか、genrand_mine() を呼び出す前のデクリメンタの
値を書き換えるとか、 mt_kadai の動作に対するハックは幾つかあるけど、それが今回の課題の
回答として認められる訳ではない。

乱数生成しないでチェックサムだけ計算しようとしてるヤツは、ネットゲームでバグ技見つけて、
「バグも仕様のうち」とかぬかしてゲームを滅茶苦茶にするタイプか?

872 :579:2009/01/24(土) 20:05:22
>>870
悪いけどな。

sum が計算できることと、数列が生成できることは >>865 に書いた通り
数学的には合同なんだ。

そして、mt19937ar.c の capability はかなり限られている。

>mt19937ar.c と同じ乱数列を生成してください。
つまり、mt19937ar.c が生成できない乱数は生成する必要がない。

仮に、>>688 のような評価方法が採られたとしても、最後の seed と mti
さえ保存しておけば、端数ぶんの sum をキャンセルして続きの sum を
計算すればおk。

もちろん、キャンセルするぶんのコストは掛かるが、num_rand >= 100000
とかいう条件を加味すれば十分にコストは回収できる。

>>>579の方法はただのチートで、ルールが「チェックサム合ってれば乱数
>生成しなくても良い」 ってなったらそれこそ根本的なルール変更だ。

俺が考えたチートは、全て課題を熟考した上でのことだ。

この段階で、mt19937ar.c の capability を変更することがあれば、それは
fixtars の勝手なルール変更であって、それこそ根本的なルール変更だ。

ごめんな。団子に入れ知恵しちまったのは俺だ。


873 :デフォルトの名無しさん:2009/01/24(土) 20:06:45
優勝狙ってるならともかく、自分の好きな方法で好きに組めばいいじゃん

別に公的組織が開いてる大会ってわけじゃないから、心配なら純粋な最適化と数学的な方法の2バージョンだすとかもありじゃね?
ダメかもしれんが・・(確認は必要だな)

874 :デフォルトの名無しさん:2009/01/24(土) 20:13:04
熱くなりすぎだ
回答待てば万事解決
流石にデクリメンタを書き換えてなんとかとは同列には出来んだろう
きちんと数学的に証明されたアルゴリズムを実装してるだけなんだから

それはそうと11.6まではいった
俺は当分もとのアルゴリズムのままで愚直に乱数列を生成しつつ10↓を目指して頑張るぜ

875 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 20:14:37
>>871
逆に聞こう
mt[]のデータレイアウトはmt19937ar.cと完全互換である必要あるか?

mt[]の配列見て思ったんだけど、こうやりたくて仕方がなかったよ。

union {
   vec_uint vec[N/4];
   unsigned int scl[N];
} MT_Array;

#define mt MT_Array.scl

結局別の方法考えたんでどうでも良くなった。
それはさておき、何がやって良くて何をやったらいけないか?その線引きって誰がやるの?
あまりに固定観念に縛られすぎてるんじゃないかと?

>デクリメンタのオーバーフローを利用することは可能ですか?

みたいな論外な質問だってFAQにあがってるんだし、何ができるかどうかは
聞いたらいいんじゃないの?
自分だけの無用な追加ルールを作ってしまっても損でしかない

876 :202:2009/01/24(土) 20:16:35
>>872
>sum が計算できることと、数列が生成できることは >>865 に書いた通り
>数学的には合同なんだ。
数学的に等価であるから何?これは数学コンテストじゃなくて最適化コンテストだよ?
同じ乱数列が作れるなら、実際に同じ乱数列を作って、その時間を計測して。

ただし、 >>579 はコンテストに参加しないらしいから、数学的な興味から課題とは違う解法を
見つけるのは別に問題ないよ。

でも、参加するヤツは、ちゃんと課題どおり乱数生成しようぜ。

877 :デフォルトの名無しさん:2009/01/24(土) 20:19:26
回答どうなるかね。回答する側も悩んでるんじゃね?w

プログラムの最適化を競う大会で、気が付いたら非常に高度な数学知識を持った人しか
上位入賞できないっていうのもなんだかなぁ

878 :579:2009/01/24(土) 20:19:39
>「同じ乱数列」が何を意味するのかは、Fixstarsに質問投げたから回答待ち。

本当にごめんな。今回のは、そもそもは fixstars の「設問ミス」なんだよ。
>>865 に書いた「擬似乱数は『使う側』の資質も問われます」はそういう意味。

この段階で設問を変更するためには、センター試験同様「全員に参加賞出します」
くらいの覚悟が必要。

例えば、「ウォール街のランダムウォーク」を仮定して「株ロボ」コンテストが
行われる。しかし、乱数生成は線形合同法と宣言されている。

もちろん、みんな線形合同法をつついたチートをするわけだ。そしたら突然、
「乱数生成を MT にします」。そんな感じ。


879 :202:2009/01/24(土) 20:24:31
>>874
たしかに>>579の考えた方法は、数学的に正しいらしいし、その方法を求められるのは凄いと思う。

でも、方法が凄くても凄くなくても、「同じ乱数列を生成する」という課題を満たしてない以上、
今回のコンテストの回答としては不適切だろ?
デクリメンタのオーバーフローと同列に扱って何の問題がある?

880 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 20:25:11
論理演算を最適化するためのブール代数学も数学の一つだよ。
「^ x ^」のアレだって数学的知識に基づくモノだけど、チートなの?

乱数を変形状態で生成したら駄目だなんて書いてないと思うんだぜ。
その辺の融通がきかないと、閉区間内の浮動小数を正規形でダイレクトに生成するdSFMTは、乱数じゃないみたいな話になっちまう。

881 :579:2009/01/24(土) 20:25:37
>>877
>プログラムの最適化を競う大会で、気が付いたら非常に高度な数学知識を持った人しか
>上位入賞できないっていうのもなんだかなぁ

たぶんね、
>>819
>テキトーに当たり付けたパターンを再帰で全部試す馬鹿な方法使ってるから
>最適に近い方法見つけるのに1ヶ月くらいかかる。
に書いてある通り。

クラスタ計算機持っているやつが優勝する。
俺はかなり妥協した。


882 :デフォルトの名無しさん:2009/01/24(土) 20:28:18
よし、Cellのクラスターをつくって勝負しよう!

883 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 20:31:41
【内輪話】
Twisted-GFSRのループ内で何かしら集計できるのはTempering後にMSBに相当するビット以外思い当たらなかった。
加算をXOR 1個で置き換えられるのはMSBしかないだろ?キャリーの計算とかめんどいよ。

んでもってUnslicingはTempering+加算のサイクルに織り込んで一気にやっちまったほうがエレガントかつ速いと言う結論に達した。
SPUにはそれを高速にやるために有用な命令が存在する。

884 :202:2009/01/24(土) 20:33:57
>>880
>論理演算を最適化するためのブール代数学も数学の一つだよ。
>「^ x ^」のアレだって数学的知識に基づくモノだけど、チートなの?

「同じ乱数列を生成してください」という課題なんだから、間でどんな数学を使っても、
同じ乱数列を生成していればOKだろ。

> 乱数を変形状態で生成したら駄目だなんて書いてないと思うんだぜ。
変形の程度によるだろうけど、明らかに違うビット列になってたら、「数学的に等価だから
同じ乱数列だ」なんてのは詭弁に聞こえる。

> その辺の融通がきかないと、閉区間内の浮動小数を正規形でダイレクトに生成するdSFMTは、乱数じゃないみたいな話になっちまう。
いや、今回のコンテストとどういう関係があるのかぜんぜん意味不明なんだが?
dSFMT は同じ乱数列じゃないから、今回の課題の回答としては明らかにアウトだけど、
回答としてアウトだということと乱数であるか否かとは全く関係ない話だ。

885 :579:2009/01/24(土) 20:35:28
残念だけど、数学的に「同じ乱数列」である以上は、どうあがいても
「同じ乱数列」なんだよ。

2 進表記 32 ビットで計数しても GF(2^33) で計数しても同じであるのと一緒。

もっと分かりやすく言うと、ethernet を情報が流れるときに変調される
わけだけれど、その変調によって値が変化するわけではない。計算した
乱数をレジスタに格納するとき、CMOS のキャパシタのポテンシャルに
変換されるわけだけれど、それによって値が変化するわけではない。

ついでに、極論すると MT は GF(2^19937) の「カウンタ」でしかない。


886 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 20:35:30
おっと、「unslicing」の意味がわかってる人間はここには殆どいないか

887 :202:2009/01/24(土) 20:38:47
なんか、根本的にみんなと感覚が違う気がしてきたな。。。

プログラマとして、「同じ乱数列」という言葉を聴くと、「同じ (ワード|バイト|ビット) 列」という意味だと
解釈するのが当然だと思っていたんだが、数学屋は「数学的に等価」と解釈するのか?

888 :579:2009/01/24(土) 20:40:38
>>884
>明らかに違うビット列になってたら

ビット列で数値を表現する方法も、数学的に考えられた一つの方法でしか
ないんだよ。


889 :デフォルトの名無しさん:2009/01/24(土) 20:41:23
仮に1000番目の乱数を取り出してといわれたときに、オリジナルと同じ値が取り出せるなら同じ乱数列ってことでいいんじゃね?

890 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 20:42:41
Tempering+加算が爆速になったのはいいとしてGFSRの処理のほうがめんどいことになってる。なんとかサイクルを減らせないものか
ミスアラインロード・ストアがボトルネックになるのは結局同じだった。何かしら方策を考えないといけない。


>>887
BCDでも2進数でも浮動小数方式でも数値的に値を表してれば十分でないの?
データ構造なんて抽象化してナンボだよ。C++屋の考えだけど。

891 :202:2009/01/24(土) 20:45:47
>>888
そんなこと100も承知で、>>887のように解釈してるんだよ。
どっちの解釈を求められていたかは、公式の回答待ちだ。


とりあえず、暗黙の了解が違いすぎるのはよく判った。
>>579 とは絶対に一緒にプログラム書きたくない。
「utf-8で文字列返して」って言ったら、平気でutf-8をbase64エンコードして返してきそうだ。

892 :579:2009/01/24(土) 20:47:33
>>887
>数学屋は「数学的に等価」と解釈するのか?
数学屋も物理屋もプログラマも、目的のためには手段は選ばないと思うのだが。

例えにするのも憚られるが、IBM は契約書に書いてある以上の仕事は絶対に
しない。日本人的思考からすると、「もうこんな所と契約するか」と思う
だろうし、実際、俺もそう思ったけど、実社会では契約書に穴がある方が
馬鹿。それを認めないと、今のままの日本人的思考では、これから先、
日本は衰退する一方。

>「○○すれば同じ数列が取り出せる」というんだったら、
>○○も加えた時間を出してね?

逆に、これは意味がない。

フェルマーの最終定理が証明されたところで、それを応用できる分野は今のところ
見当たらない。しかし、それを証明する過程で得られた知見は何事にも代えがたい
大切なものである。


893 :デフォルトの名無しさん:2009/01/24(土) 20:47:37
整数型の値を期待しているところでfloatで値を渡されるもの嫌だなw
10.0も10と変わらないとか言って

894 :デフォルトの名無しさん:2009/01/24(土) 20:51:19
ひとつの掲示板でこうなんだから、他にも同じようなことやっているやつがいるだろう。
結局、グローバルスタンダードは、そこになるのかもね。

895 :202:2009/01/24(土) 20:51:43
>>893
7進数でその数値を表した文字列を渡されるかもな。

896 :579:2009/01/24(土) 20:51:47
>>891

return "utf-8";

897 :デフォルトの名無しさん:2009/01/24(土) 20:52:47
まあ不満もあるけども
>データ構造なんて抽象化してナンボだよ。C++屋の考えだけど。
には100%同意だ
既定のインプットから既定のアウトプットを出してる以上文句は言えんとおもうね
元はと言えばfixstersが実装する関数をgenrand_int32と同じにしなかったのが問題なんだろうけどそれじゃあ速度は出ないからなぁ
それに定数時間じゃない以上まだ負けると決まったわけじゃないさ
実装レベルで出来ることだっていくらでもあるんだぜ?
まだまだきついが多分10サイクルは切れる

898 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 20:53:10
>>893
返すのは整数型の「合計値」だろ?

MTで得られた疑似乱数値なんて今回の値では中間値でしかないじゃん。
どのみち中間値なんて公開する必要ないんだから、データ構造がどうなってるかは

当のオリジナルのMTは、得られる乱数がビッグエンディアンかリトルエンディアンかすら規定してないぜ。

899 :579:2009/01/24(土) 21:05:16
>>891
> >>579 とは絶対に一緒にプログラム書きたくない。

いや、マジな話ね。

そう言ってもらえるのは嬉しくて、「じゃ、後はお前に任せた」とかいって
意気揚々とハナクソほじっていると、締日 3 日位前に泣きつかれるんだよね。
勘弁してほしいのだが。


900 :デフォルトの名無しさん:2009/01/24(土) 21:09:48
> 一緒にプログラム書きたくない。
の対象は今回のケースではfixtersの面々なんじゃないか?
FAQの"趣旨"なんて曖昧な表現で一体何がわかるってんだ.
fixtersは普段からこんな表現使って仕事してんのか?
契約書,仕様書にも厳密な記述無しで"趣旨"って書くのか?

901 :デフォルトの名無しさん:2009/01/24(土) 21:10:47
面白くなってきたな
物事を様々な側面から捉える力ってのは大事だと思う

902 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 21:13:23
Cellのスケールメリット上重要な位置づけだったPS3があの惨状なのに
Cellオンリーのリーディングカンパニーの時点で、どうやろなと思ってる。

決算報告書とか意味不明だし。
黒字なのか赤字なのかすら読めない。

903 :579:2009/01/24(土) 21:14:41
>契約書,仕様書にも厳密な記述無しで"趣旨"って書くのか?

ネトゲには「こちらが想定したのと違う方法で...」って書いてあるんだろ?
やったことないから詳しくは知らんが。

想定なんて、後付でどうにでもなる。

そんなレベルのコンテストだとしたら、始めから出る価値ないよ。


904 :デフォルトの名無しさん:2009/01/24(土) 21:16:26
>>875
おまえが捨てたやり方は全部公開ってか?
調子乗りすぎ。

905 :デフォルトの名無しさん:2009/01/24(土) 21:20:27
,,・´∀`・,,)っ-○◎●

このAA、[ ´ ` ]の部分と[, ・ ・ ]の部分、どっちが目なんだよ?
前から気になってしょうがない。
あいまいな事をするなよな



906 :579:2009/01/24(土) 21:22:30
579って、「こんにゃく」って読めるよね。

907 :デフォルトの名無しさん:2009/01/24(土) 21:23:10
>>902
面白そうだから決算書見てみたよ
当期純利益が34百万とあるから黒字だな

しかし大雑把な決算書だな
株式会社の要件満たすため、とりあえず出してるだけといったところだ

908 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 21:23:58
×リーディングカンパニー
○自称リーディングカンパニー

x86とかTeslaとか手広くやります、とかなら俺も心揺れた

909 :デフォルトの名無しさん:2009/01/24(土) 21:26:52
>>906
こん な くそ って呼んでた

910 :デフォルトの名無しさん:2009/01/24(土) 21:27:13
Cellは家電やゲームのほうだと微妙だが
スパコンの方だとかなり活躍しているじゃない

911 :579:2009/01/24(土) 21:29:20
906 は 579 ではありません。

アナルコンニャクより。

912 :579:2009/01/24(土) 21:35:09
>>911 は俺だが、話を戻すとして。

>>877
>非常に高度な数学知識を持った人しか

プログラマという人種は高度な数学的知識を持っていたらいけないの?
数学的知識のないプログラマは、ただの奴隷だよ orz


913 :デフォルトの名無しさん:2009/01/24(土) 21:43:42
>>912
もちろん数学知識は必要だし、他にも英語やらいろいろ求められる。

ただ、今回のコンテストに話をしぼったときに、sumの計算の数学的な解法にたどり着けない人に
入賞の機会すら与えられないのはどうなのって話。
まあ、参加者の半数が納得できるなら問題ないと思うけどね。

914 :579:2009/01/24(土) 21:52:42
>>913
Cマガ電脳倶楽部で、どれだけ数学的知識の差に泣かされたことか。
当時中学生〜高校生。

915 :デフォルトの名無しさん:2009/01/24(土) 21:57:32
なんだ?
高卒が暴れてんのか?w

916 :579:2009/01/24(土) 22:05:11
>>915
そうだね。高校は間違いなく卒業したよ。いやガチで。
お前が末期癌で担ぎ込まれたときの主治医が俺かも知れないけどな。


917 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 22:15:53
SPUのアセンブラを自分で書くのが億劫(レジスタが多すぎて混乱しまくりんぐ)な俺が勝つには
極限られた人間しか思いつかないようなブレイクスルーが必要だったわけだが。

逆に、いつから「フォーマット」が決まった上でのアセンブラチキンレースになったんだ?


918 :579:2009/01/24(土) 22:16:01
お前が包茎手術をする時の執刀医が俺かも知れない。
が、そんなことはどうでも良い。

アイソトープを使う上で、物理屋諸君には大変お世話になった。
物理を理解する上で、数学屋諸君の知見は非常に役に立った。
シミュレーションを進める上で、松本先生(の開発されたMT)には
大変お世話になった。

その上で、今回の設問は、松本先生を馬鹿にしているようにしか
思えないわけだ。


919 :デフォルトの名無しさん:2009/01/24(土) 22:17:38
たとえば、Cellのパイプラインをよく回す最適化という点では、
なにもしていない579のコードが、他のよく最適化したコードの10倍速いとなったとき、
Cellとは関係ないけど、アルゴリズムを考えた579さん優勝〜というのは、非常に変な話だ。
でも、実際に速いなら無視できない。特別賞でもなんでもいいからあげればいいかな?

579のコードで、しかもCell特有の最適化を多少してあったら、文句ないだろうか?

920 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 22:20:50
そんなのは中の人が判断すること。けちつけるくらいなら精進しる

921 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 22:26:14
>>919
ちなみに俺はCell特有と言ってもいい命令を駆使して再設計してるよ。
今まで全くつかってなかった命令だ。

逆に従来のやり方だとSSEでもできることしかやってない。

922 :デフォルトの名無しさん:2009/01/24(土) 22:29:46
>>921
再設計するのは勝手だが、大会終わるまで古い方法はさらすなよw
大丈夫だと思うけど、一応な

923 :デフォルトの名無しさん:2009/01/24(土) 22:32:07
>>922に一票

924 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 22:35:57
古い方法もブレイクスルー来たんだけどね。
今やってる方法がアリならこれもありじゃんって感じで。

晒しちゃうと手の内を一部明かすことになるのでやらない。スコアも一切出さない。
ただ一ついえるのは12とか13とかとは全く意味の無い数字になってしまった。
何もかも方法が違う。


925 :579:2009/01/24(土) 22:40:25
>>924

スコア明かすことは、そのまんま pmt[] のサイズを晒すことに
なっちゃうんだよねw


926 :デフォルトの名無しさん:2009/01/24(土) 22:42:57
>>925
あんま団子にエサやるなって。
めちゃくちゃ釣れやすいんだから

927 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 22:49:12
>>925
そんなものは無いから。
おもっくそ泥っ臭い方法でやってるし。それこそSIMDのパワーにものいわせた頭の悪い方法で。

配列なんてレイアウトが変わったくらいでmt[]のサイズとほとんど変わらん
敢えて言っちゃうけど、160 qword分

928 :579:2009/01/24(土) 22:57:54
>>927
レイアウト変えただけで、mt[] とは等次元空間ですな。

そのやり方ができるのであれば、(演繹的には)それに越したことは
ないと思います。俺は自信なかったからチートしたけど。それとて、
fixstars に文句言われる筋合いはないけどな(帰納的には)。

脱帽です。


929 :デフォルトの名無しさん:2009/01/24(土) 23:04:02
別に数学的なんちゃら考えなくてもだんごの言うくらいには命令減らせるよ
データレイアウトが思いっきり変わるから和を出すときは別として
乱数列を出す時に毎回展開とかやってられんけどな

930 :579:2009/01/24(土) 23:09:03
>>929
12 とか 13cycle の 1/3 まで減らせるの?
それとも、俺また釣られているの?

もう誰もちんじれない

931 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 23:09:22
全加算じゃなきゃ馬鹿らしすぎてやっとられんわ
しかしこの配列構造は大好きです

932 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 23:15:04
というか>>929には気づかれたようだ

933 :デフォルトの名無しさん:2009/01/24(土) 23:16:06
試算だとその方法でtemperingにかかるのはQWORD当たり大体0.6サイクルを切る位
残念ながらだんごよりは2〜3割遅いけどな
俺はとりあえずもとの方法で最適化を続けるけど後はFixsters次第

934 :デフォルトの名無しさん:2009/01/24(土) 23:17:13
すまん
×QWORD当たり大体0.6サイクルを切る位
○WORD当たり大体0.6サイクルを切る位

935 :202:2009/01/24(土) 23:18:07
俺も、Fixstarsの回答しだいでは両方出すかも。。。

936 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 23:21:52
>>933
GFのほうを作り込んでるけどシャッフルによるパッキングのサイクル数を抑えられないので
トータルだと似たり寄ったりな性能になりそうな予感。

しかし最後の加算は美しすぎてアドレナリン出てくるぜwwww

937 :デフォルトの名無しさん:2009/01/24(土) 23:30:08
579の思い置き去りの展開かよw

938 :デフォルトの名無しさん:2009/01/24(土) 23:31:34
0.6は計算ミス
どうやら0.5位だなぁ
殆ど同じ方法かもしれん

939 :,,・´∀`・,,)っ-○◎●:2009/01/24(土) 23:31:42
当たり前だ。1割も理解してない。
力業 is Justice.

940 :202:2009/01/24(土) 23:57:59
やべぇ、俺もチートの方実装したくなってきた。
まだ12.5cycle切ってないんだが、、、

941 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 00:00:17
チートじゃねぇ

【邪道】だ

942 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 00:09:26
うーん。

3倍はフカシでした。サーセンwwwww

943 :デフォルトの名無しさん:2009/01/25(日) 00:40:32
Fixstersから返事があるまでCell Challengeやろうぜ!

944 :デフォルトの名無しさん:2009/01/25(日) 01:05:59
枯渇でストールするのは単なるバグなので、それを考慮してアセンブラチューン
するのはあまり生産的では無いね。90nm版のCellでしか発生しないんだから。
ま、90nm版以外を身近に手にする事は将来にも無いかもしれないけどね。(w



945 :デフォルトの名無しさん:2009/01/25(日) 01:11:05
散々罵って結局だんごも579の方法でやってるのか?

946 :202:2009/01/25(日) 01:16:06
>>945
ちがうよ、数学できない俺でもできる方法。

947 :202:2009/01/25(日) 01:16:55
ちがうか、だんごさんは2種類やってるのか。

948 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 01:21:16
3種類だ。

949 :デフォルトの名無しさん:2009/01/25(日) 01:26:45
>>984
579のやり方は机上の空論だって言ってたのは?

950 :デフォルトの名無しさん:2009/01/25(日) 01:38:25
950

951 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 01:38:31
俺は都度擬似乱数の生成を行ってから加算してる。そこだけは拘る。



952 :デフォルトの名無しさん:2009/01/25(日) 01:42:17
579に謝れよ団子

953 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 01:47:13
繰り返す
【俺は都度擬似乱数の生成を行ってから加算してる】

どんな方法にせよTempering前にサマリ求めるのがアリだとは思わないからな

954 :デフォルトの名無しさん:2009/01/25(日) 01:51:31
ありとかなしとか話題すげ替えんなよ
579はオツムがよわいとか能無しだとか言ってたろ?
机上の空論じゃなかったんだから否を認めろよ

955 :227 ◆eZQcaIaFJs :2009/01/25(日) 01:56:23
やっと12clockになる方法思いついた。けど、そこから先のEvenを減らす道が
見えなくて困ってる所です。やっぱりレイアウト葬らないと壁を越えられない
のかなぁ…。

>>912
数学の教養が無くても、転職してから1.5週で数十万行の構造把握して、
そこからバグ率を低く保って行く位の事なら出来てますよ。

つーか、今日になって(マイルストーン一ヶ月前なのに)コアな部分の
動作変更するとか言い出す上司がいて、バグの対処諸々考えてたら頭が
回らなくなってきました。初回からコケないことを祈るしか無いですw


956 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 01:57:46
本物の頭の弱い子だね。
俺の意図とは無関係に本人が煽りだと思ってないわけでそれ以上は何も言うことは無いだろう。
「カード」そのものは彼が登場する前から用意してたものだよ。

957 :デフォルトの名無しさん:2009/01/25(日) 02:00:59
否を認めろよ
ってくらいだからな

958 :デフォルトの名無しさん:2009/01/25(日) 02:05:59
頭が弱いのを認めとくとして
>>俺の意図とは無関係に本人が煽りだと思ってない
ってどう有意味だ?いやまじめに。

959 :デフォルトの名無しさん:2009/01/25(日) 02:16:49

http://pc11.2ch.net/test/read.cgi/tech/1232817361/l50

960 :デフォルトの名無しさん:2009/01/25(日) 02:23:21
>>958
ようするに団子は本当はできるのわかってて煽ってたってことだよ。


よく恥ずかしげもなくそんな言い訳できるわ。さすが糞団子だな!

961 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 02:40:23
GF(2)の解法が全然別物ということが判明したので俺も俺で思い過ごしだったということだ

962 :デフォルトの名無しさん:2009/01/25(日) 09:57:55
拡大体

963 :579:2009/01/25(日) 13:19:30
>>949 >>952 >>954
今回は俺の負ということで、もう、ゆるして。

>>955
冬山の知識が無くても、入隊してから1.5週で一個中隊の編成把握して、
そこから致死率を低く保って行く位の事なら出来てますよ。

つーか、今日になって(三本木までもうすぐなのに)コアな部分の
編成変更するとか言い出す少佐がいて、凍死の対処諸々考えてたら頭が
回らなくなってきました。初回からコケないことを祈るしか無いですw

いかだ作って川を下るとか言い始めるんですね。わかります。


964 :579:2009/01/25(日) 13:24:09
×三本木
○田代元湯

965 :デフォルトの名無しさん:2009/01/25(日) 19:23:05
うーむ、もはや何の話をしてるのかすら外野の俺には分からなくなってきたw。

966 :デフォルトの名無しさん:2009/01/25(日) 19:25:08
八甲田山死の彷徨だろ
陸軍史くらい勉強しとけよ

967 :デフォルトの名無しさん:2009/01/25(日) 19:32:29
>>966
確かに、プログラマにはデスマーチの知識も必要だな。

968 :デフォルトの名無しさん:2009/01/25(日) 19:35:35
ああ、そういう意味なのか、やっと分かった。
(そういう比喩を持ち出した訳は)

969 :デフォルトの名無しさん:2009/01/25(日) 19:36:20
なんか、学歴厨と学歴僻み厨の争いみたいな展開だな。
正直、どっちもどっち。

数学や哲学が分からん奴は、勉強してから発言しなきゃ不毛だしただの馬鹿野郎。
頭の中の話を主として話をしてる奴は、とりあえず現実とのスリ合わせが下手な駄目人間。

970 :デフォルトの名無しさん:2009/01/25(日) 19:50:22
>579
MATRIX_Aの変更が重要なん?

971 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 19:54:16
MATRIX_Aの変形って意味なら>>788の方法でもやってるね。

MATRIX_AとのXORはMersenne TwisterのTwisterたる所以だ。
ビット単位の行列問題に帰着すれば、なぜMATRIX_Aなのかわかるかもしれない。

972 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 20:04:30
拡大体云々はRSA暗号のクラックにも有用視されてる方法だな
ちょっとモチベーション低下気味なんで文献あさってるけど面白すぎる

973 :デフォルトの名無しさん:2009/01/25(日) 20:30:21
早くFixstarsには答えを出して欲しいところだな
俺はどっちになっても続けるけど脱落する奴もいそうだ

974 :デフォルトの名無しさん:2009/01/25(日) 22:45:03
>971
そうじゃなくて、579が>>801-802で書いたのはMATRIX_Aを変えたMTと、彼の方法の速度比較じゃん。
(だからsumも変わってる)

オリジナルMTのsumを高速化するのは結局無理だったんじゃないの?と。

975 :,,・´∀`・,,)っ-○◎●:2009/01/25(日) 22:55:03
Twist抜いたMTなんてMTじゃないですわ。
MATRIX_Aはビットストリームを改変する一種のsaltとして機能してるらすぃ

余談だが「Saltを加えたDES」(2chのトリップで使われてるcrypt(3)のそれ)は差分解読がやりにくいなんて
現役の数学者が言ってたよ。


976 :デフォルトの名無しさん:2009/01/26(月) 17:33:50
↑こいつ何者?

977 :デフォルトの名無しさん:2009/01/26(月) 18:24:59
アイちゃん

978 :227 ◆eZQcaIaFJs :2009/01/26(月) 22:32:55
とりあえず公式見解が出るまでコーディング作業はお休み。

>>967
デスマに巻き込まれるとゆとりが無い分行動が不安定になってくるんですね。
# 4日連続勤務時間中にFPSやってる上司とか見て発狂しそうになってますw


979 :,,・´∀`・,,)っ-○◎●:2009/01/26(月) 23:19:02
saltをとは何かを考える、
日本語でいえば「お塩学」
ファッキンライト

テンキュー


980 :579:2009/01/27(火) 01:09:23
>>970
>>974
アナルに突っ込んだ行列が間違えていただけの話。
ハックtheアナルの結果でたから、再トライした結果がこれ。

ORIGNAL: sum=3c927c56, 20051002 ticks
MINE: sum=3c927c56, 480600 ticks
ORIGNAL: sum=2e987a4d, 28979324 ticks
MINE: sum=2e987a4d, 680855 ticks
ORIGNAL: sum=ef1b6aef, 21517023 ticks
MINE: sum=ef1b6aef, 573675 ticks
ORIGNAL: sum=eedd2516, 19761023 ticks
MINE: sum=eedd2516, 446886 ticks
ORIGNAL: sum=f7e967a8, 981473 ticks
MINE: sum=f7e967a8, 116481 ticks
ORIGNAL: sum=1f37a7db, 14592172 ticks
MINE: sum=1f37a7db, 365659 ticks
ORIGNAL: sum=c7d41f36, 20085705 ticks
MINE: sum=c7d41f36, 465866 ticks
ORIGNAL: sum=aa9d2e9f, 17899900 ticks
MINE: sum=aa9d2e9f, 495607 ticks
ORIGNAL: sum=8abd398a, 17074673 ticks
MINE: sum=8abd398a, 434344 ticks
ORIGNAL: sum=a374bd58, 415390 ticks
MINE: sum=a374bd58, 86607 ticks


981 :579:2009/01/27(火) 01:09:50
>>722
>ざっくりと pmt[] の最悪値を見積もり始めた頃から勝算はあった
>わけだが、解析結果を見ると想像以上に小さい。
大口たたいたものの、MATRIX_A 直したら、ごらんこのザマだ。
最後の評価なんて最低合格ラインの 10 倍満たしていない。

ぶっちゃけ、46KiB の制約に収まるかも怪しい。

SIMD 化すればまだ可能性はあるかもしれないけど、俺は燃え尽きた。
団子にはかなわないよ。悔しいけどな。



982 :579:2009/01/27(火) 01:21:13
>>978
上司の気持ちもわからんでもないな。

>>202 >>227 まだ若いみたいだから教えておくけど、開発の現場で
一番必要とされているスキルは何だかわかるかい?

ウンコみたいなコードを読み取るスキルでもなく、バグの少ない良質な
コードを生産するスキルでもない。

正しい日本語と、寛容な気持ちだよ。

そのうちわかる日が来るさ。頼むから、俺みたいなクサレジジィには
ならないでくれ。

"Der Alte wuerfelt nicht."


983 :,,・´∀`・,,)っ-○◎●:2009/01/27(火) 01:25:37
ん?シミュと実機じゃTick値の意味が違うのか??????

984 :579:2009/01/27(火) 01:33:35
先週5日間連続+今日1日、勤務時間中にLBPやっていた俺が言うのもなんだが。

985 :579:2009/01/27(火) 01:35:14
>>983
つか、PowerPC なんで。SPU への移植性なんて考えていないよw
tb_get(get_tbだっけ?)は /usr/include/asm/time.h からかっぱらってきた。

986 :デフォルトの名無しさん:2009/01/27(火) 01:47:54
結果出してから大口叩けばよかったのに

987 :,,・´∀`・,,)っ-○◎●:2009/01/27(火) 01:49:14
びびらせんなwwwwww

988 :デフォルトの名無しさん:2009/01/27(火) 07:47:08
579の欺瞞によりダンゴさん始まったな

989 :デフォルトの名無しさん:2009/01/27(火) 10:41:15
>>988
まてまて、スカラと最適化済みベクタで差の出にくい
普通の PowerPC で >>980 だとしたら、SPU じゃさらに
4倍差開くと見ていいだろ。
>>287 >>288 の通りなんじゃねーの?

990 :デフォルトの名無しさん:2009/01/27(火) 14:50:11
>>989
PPC970だろ?ちょっとコードの書き方変えるだけでも差は出るよ。

ループはあまり得意ではなくて、タイトな部分があればアウトオブオーダで並列実行できるから
アルゴリズムレベルでたいしたことは無くてもそれだけで性能が伸びてしまうこともある。

991 :デフォルトの名無しさん:2009/01/27(火) 14:53:04
SIMD化で性能単純4倍と考えるのも愚かだ。
ミスアラインロードの連発で性能出ないことだってある。オリジナルMTがそうであるようにね。
テーブルも16バイトアラインしたら容量オーバーかもしれないね。

992 :デフォルトの名無しさん:2009/01/27(火) 17:24:41
そろそろ皆さんハッタリのネタが無くなって静かになっちゃいましたねw

993 :デフォルトの名無しさん:2009/01/27(火) 17:39:59
10cycを切ることはありえない

994 :,,・´∀`・,,)っ-●◎○:2009/01/27(火) 18:58:49
>>993
ニヤニヤ

995 :デフォルトの名無しさん:2009/01/27(火) 19:15:53
>>981
ってかさぁ、10倍満たしてないし、どうせ参加しないんだったら
コードさらしてみてよ。ハッタリじゃないんだったらさw

996 :,,・´∀`・,,)っ-●◎○:2009/01/27(火) 19:39:44
「Hack the 579コード」のはじまりです

997 :デフォルトの名無しさん:2009/01/27(火) 19:43:25
推測するに>>802はミスにより既約でなくなったんジャマイカ?
つか64ビット整数で処理したら速くならない?

998 :,,・´∀`・,,)っ-●◎○:2009/01/27(火) 19:50:02
>>997
実は、PPC970は64bit ALU×2で、かつAltiVecの並列演算できるユニット少ないから
ALUでやったほうが小回りが利いて速いことがある。

999 :デフォルトの名無しさん:2009/01/27(火) 20:03:39
よっしゃ!! 8.5 cycle 切った!!!

1000 :1000:2009/01/27(火) 20:04:06
「Hack the ハッタリ」 第2章 -> http://pc11.2ch.net/test/read.cgi/tech/1232817361/l50

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

267 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)