私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレcellプログラミングしちゃいなよ4
cell スレッド一覧へ / cell とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
Cell Challenge予選の結果が発表された
(入力をまだみれてないのでおそらくだけど)
2^34の問題が0.2秒で解けてるチームが1位っぽい
(入力をまだみれてないのでおそらくだけど)
2^34の問題が0.2秒で解けてるチームが1位っぽい
お察しの通りチームImoですー
2^34が1秒切ったと喜んでいたけども1位とは4倍の壁…
evenの埋まってる率はおそらく7割以上なのでアルゴリズムの変更が必須で悩み中
2^34が1秒切ったと喜んでいたけども1位とは4倍の壁…
evenの埋まってる率はおそらく7割以上なのでアルゴリズムの変更が必須で悩み中
何気にハックざセルの提出期限近いな
優勝ラインはどれぐらいだろうな?
4.5Mぐらいだと予想しているんだが
優勝ラインはどれぐらいだろうな?
4.5Mぐらいだと予想しているんだが
ああ、ふぃく☆すた賞狙ってる人は、コンパイラを飼い慣らすテクニックのほうを重視したほうがいいかもです。
自分はオプションにアンロールとO3つけてstripぐらいしかしてないです。
さすがに-pgとかつけたままにしたりましませんが・・・
けどその位を殺っておけばいいだろうという認識です。
そんなに激しく差がでるのかー
さすがに-pgとかつけたままにしたりましませんが・・・
けどその位を殺っておけばいいだろうという認識です。
そんなに激しく差がでるのかー
残念なこともあるにはあるけどなかなか楽しめたな
しばらくしたらコード公開されるのかな
それとも20までお預けかな
しばらくしたらコード公開されるのかな
それとも20までお預けかな
ビット入れ替え思いつかずに、12cycleの壁超えられなかったもします。
フィックスターズ賞狙いですが、99%越えの接戦に勝てるか不安…。
フィックスターズ賞狙いですが、99%越えの接戦に勝てるか不安…。
トランザムってどうやって加算したの?
spu_cntbとかをうまく使うの?
締め切りすぎたけど、結果発表までは内緒なのかな…
spu_cntbとかをうまく使うの?
締め切りすぎたけど、結果発表までは内緒なのかな…
俺なんか12.3cycle/qwordだ。ランク外orz
>>371
spu_cntbは最初に思いついたね
たとえば、
cntb(a) << 24 | cntb(b) << 16 | cntb(c) << cntb(d)
を8組作って、左シフト+加算で畳み上げるってのはどう?
8ビット単位のシフト+論理和ならspu_shuffleでできるからOddパイプ側で処理を割り振ることもできるし
このへんはいろいろやりようは有ると思う。
どっちかというとmt[]の更新のほうがめんどいんだ。
どういうレイアウトを組むかによってOddパイプの演算量が全然変わってくる。
spu_cntbは最初に思いついたね
たとえば、
cntb(a) << 24 | cntb(b) << 16 | cntb(c) << cntb(d)
を8組作って、左シフト+加算で畳み上げるってのはどう?
8ビット単位のシフト+論理和ならspu_shuffleでできるからOddパイプ側で処理を割り振ることもできるし
このへんはいろいろやりようは有ると思う。
どっちかというとmt[]の更新のほうがめんどいんだ。
どういうレイアウトを組むかによってOddパイプの演算量が全然変わってくる。
( cntb(a) << 24 ) | ( cntb(b) << 16 ) | ( cntb(c) << 8 ) | cntb(d)
に訂正しときます
>>373
俺が最初に言い出しました。transpose + sumだからトランザム(笑)
あと速いし。さすがにmt[]の更新のほうがネックで3倍にはならないようだけどね。
なんのことはない、1bit×128並列のSIMD演算ですよ。
暗号のクラックなんかでよく使う方法です。
に訂正しときます
>>373
俺が最初に言い出しました。transpose + sumだからトランザム(笑)
あと速いし。さすがにmt[]の更新のほうがネックで3倍にはならないようだけどね。
なんのことはない、1bit×128並列のSIMD演算ですよ。
暗号のクラックなんかでよく使う方法です。
>>376
やっぱり1bitx128並列の事だったか。
その方法ならshift無くせるしxorとかの回数も減らせることは気が付いてたけど
めんどくさいからやらなかった。
やった場合には1要素平均何cycleまでいくものなんだろう?
やっぱり1bitx128並列の事だったか。
その方法ならshift無くせるしxorとかの回数も減らせることは気が付いてたけど
めんどくさいからやらなかった。
やった場合には1要素平均何cycleまでいくものなんだろう?
temperingはそれこそすげー速くなるんだけどMT[i+1]とMT[i+M]のロードがなかなか難しいよね
いろいろやったけど命令数的に90倍速程度が理論限界で諦めた
コンパイラはレジスタ足りないってわめくし
結局普通の方法で11.75/cycleの68倍速で提出したよ
こっちのコードの方が最適化自体に手間掛けたから気に入ってるんだ
いろいろやったけど命令数的に90倍速程度が理論限界で諦めた
コンパイラはレジスタ足りないってわめくし
結局普通の方法で11.75/cycleの68倍速で提出したよ
こっちのコードの方が最適化自体に手間掛けたから気に入ってるんだ
>>382
mt[i+1]のほうは奇数・偶数みたいな分け方をすればpermuteの回数を「減らす」
くらいは出来るという結論に達した。
幸いなことに先頭から226個まではは並列実行できるし。
ただ、128ビット全部使うことは諦めないといけない。
1レジスタにビットを限界までの6分割とか8分割とかにしないといけない。
参加者が少なかったせいか10倍すら超えなくても参加賞は貰えることになったらしいので
ウケを狙うのもアリだったな。
mt[i+1]のほうは奇数・偶数みたいな分け方をすればpermuteの回数を「減らす」
くらいは出来るという結論に達した。
幸いなことに先頭から226個まではは並列実行できるし。
ただ、128ビット全部使うことは諦めないといけない。
1レジスタにビットを限界までの6分割とか8分割とかにしないといけない。
参加者が少なかったせいか10倍すら超えなくても参加賞は貰えることになったらしいので
ウケを狙うのもアリだったな。
○1レジスタにビットを限界まで詰めることを諦めて104ビットずつ6分割とか78ビットずつ8分割とかにしないといけない。
「トランザム」 = 「とらん、sum」かとおもてたよ
Tempering後のchecksumをとらないのかと。どやってやるんだそんなのと
Tempering後のchecksumをとらないのかと。どやってやるんだそんなのと
> z = si_lqx(spu_slqw(spu_gather(y), 4), mag_lut);
> r = spu_xor(spu_rlmaskqw(y,-1), z);
懐かしい
左4ビットシフトもspu_shuffleでできるよね?
このへんはみんな気づいたかなと思うけど。
> r = spu_xor(spu_rlmaskqw(y,-1), z);
懐かしい
左4ビットシフトもspu_shuffleでできるよね?
このへんはみんな気づいたかなと思うけど。
spu_gatherやるとさ、プリファードスロットの下位4ビットにLSBが集約されるじゃん。
で、他は0になるじゃんじゃん。
spu_shuffleの第一引数に
{ 0x00, 0x10, 0x20, 0x30, 0x40 ,,, 0xF0 }
ってベクトルブッ込むわけだ。
spu_shuffle( pattern, pattern, (vec_uchar16)spu_gather(y) )
これで
spu_slqw(spu_gather(y), 4)
とまったく同じ結果になる筈。
で、他は0になるじゃんじゃん。
spu_shuffleの第一引数に
{ 0x00, 0x10, 0x20, 0x30, 0x40 ,,, 0xF0 }
ってベクトルブッ込むわけだ。
spu_shuffle( pattern, pattern, (vec_uchar16)spu_gather(y) )
これで
spu_slqw(spu_gather(y), 4)
とまったく同じ結果になる筈。
>>395
ノーコメント
ノーコメント
みんなの評価 : ○
類似してるかもしれないスレッド
- cellプログラミングしちゃいなよ3 (1001) - [97%] - 2009/1/27 2:23 ☆
- CELL鬯ッ?ゥ隰ウ?セ??ス??オ????コ?????ッCore2 QX6700鬯ッ?ゥ隰ウ?セ??ス??オ????コ???? (92) - [18446744073709551581%] - 2012/1/21 0:39
トップメニューへ / →のくす牧場書庫について