私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレcellプログラミングしちゃいなよ4
cell スレッド一覧へ / cell とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
再利用性にこだわってたからフィクスタ賞狙いでも別にいいけどね
フィクスタ賞とりつつ優勝者を上回るコードを締切と同時に公開したらかこいい
フィクスタ賞とりつつ優勝者を上回るコードを締切と同時に公開したらかこいい
10パターンってw
一番速いのか一番実用的なの
一番アルゴリズムが綺麗なの
3つ位しか選ぶ基準が思い浮かばねえ
一番速いのか一番実用的なの
一番アルゴリズムが綺麗なの
3つ位しか選ぶ基準が思い浮かばねえ
>>157
デコードに何十種類もかかるフォーマットじゃなければな
デコードに何十種類もかかるフォーマットじゃなければな
>>160-161
ビット配列がどうなっていようと乱数は乱数なんだぜ。
たとえば公式のMTの64bit専用版は32ビットと生成式が違う
ビットの配列構造が違ってても乱数は乱数なんだ。
たとえば、32ビット乱数32個を行列転置したら乱数じゃなくなるのか?
ビット配列がどうなっていようと乱数は乱数なんだぜ。
たとえば公式のMTの64bit専用版は32ビットと生成式が違う
ビットの配列構造が違ってても乱数は乱数なんだ。
たとえば、32ビット乱数32個を行列転置したら乱数じゃなくなるのか?
多分レイアウト変更組がやってることってのはそれだよね
みんな薄々気づいてただろうけど結局こうなったな
確かに転置したところで乱数であることには変わりはないね
で、それを読みだすのに何サイクルかかる?って話だよ
それとも0bit目を32個集めてそれも乱数って言ってる?
みんな薄々気づいてただろうけど結局こうなったな
確かに転置したところで乱数であることには変わりはないね
で、それを読みだすのに何サイクルかかる?って話だよ
それとも0bit目を32個集めてそれも乱数って言ってる?
>>164
ん?0ビット目を32個集めても乱数として使えるだろ?
同じサマリになるようにしろってのはフィックスターズの都合であって
現実にモンテカルロなどに使う場合はビット単位でのランダム性を破壊するような改変でない限り
十分実用的といえる。
ん?0ビット目を32個集めても乱数として使えるだろ?
同じサマリになるようにしろってのはフィックスターズの都合であって
現実にモンテカルロなどに使う場合はビット単位でのランダム性を破壊するような改変でない限り
十分実用的といえる。
そうか
理解不足で混乱させてすまん
って事はフィクスタ賞も危ういなぁ
純粋な互換で勝負するのは無理があるか
理解不足で混乱させてすまん
って事はフィクスタ賞も危ういなぁ
純粋な互換で勝負するのは無理があるか
>>129
あ り え な い 。それは。
GF2^33で tempering 処理を80%近くまで外部化してやらないと、そのトランザムは出来ない。
仮にビット単位の数え上げをMacWilliams恒等式で集中計算しても、ハミング距離が使えないその段階では
mod2^32 変換行列が手に入れられないはず。 妄 想 で つ か ?
とりあえず SIMD でループを大量にアンロールして合計値にどんどん足していけ。
アセンブラならABIに従ってレジスタ値取っておくのを忘れんなよ。説教くさくなってスマソ・・・。ついな・・・。
あ り え な い 。それは。
GF2^33で tempering 処理を80%近くまで外部化してやらないと、そのトランザムは出来ない。
仮にビット単位の数え上げをMacWilliams恒等式で集中計算しても、ハミング距離が使えないその段階では
mod2^32 変換行列が手に入れられないはず。 妄 想 で つ か ?
とりあえず SIMD でループを大量にアンロールして合計値にどんどん足していけ。
アセンブラならABIに従ってレジスタ値取っておくのを忘れんなよ。説教くさくなってスマソ・・・。ついな・・・。
スレ違いだったらごめんなさい。。
きく人がいなくてここに辿り着きました。
for ( i = iv->dim; i < new_dim; i++ )
iv->ive[i] = 0;
こんな感じの構造体のループって普通にSIMD化できるんですか?
構造体とかよく分からなくて…汗。
きく人がいなくてここに辿り着きました。
for ( i = iv->dim; i < new_dim; i++ )
iv->ive[i] = 0;
こんな感じの構造体のループって普通にSIMD化できるんですか?
構造体とかよく分からなくて…汗。
それと、
register int i;
for ( i = 0; i < len; i++ )
out[i] = s*dp[i];
上の様なコードをSIMD化したかったら、
vector float *out_v, *dp_v;
for(i = 0; i< len/4; i++){
out_v[i] = vec_misaligned_load(*(out + i*4));
dp_v[i] = vec_misaligned_load(*(dp + i*4));
out_[i] = spu_mul(spu_splats(s), dp_v[i]);
vec_misaligned_store(out_v[i], *(out + i*4));
}
for(i = 4*(len/4); i < len; i++){
out[i] = s*dp[i];
}
こんな風にするしかないんですか?
outとdpは引数で、16バイトにアラインメントされてるか分からなかったので、この方法しか思いつかなかったのですが、何かこれじゃ余計遅くなるような気がして;;
register int i;
for ( i = 0; i < len; i++ )
out[i] = s*dp[i];
上の様なコードをSIMD化したかったら、
vector float *out_v, *dp_v;
for(i = 0; i< len/4; i++){
out_v[i] = vec_misaligned_load(*(out + i*4));
dp_v[i] = vec_misaligned_load(*(dp + i*4));
out_[i] = spu_mul(spu_splats(s), dp_v[i]);
vec_misaligned_store(out_v[i], *(out + i*4));
}
for(i = 4*(len/4); i < len; i++){
out[i] = s*dp[i];
}
こんな風にするしかないんですか?
outとdpは引数で、16バイトにアラインメントされてるか分からなかったので、この方法しか思いつかなかったのですが、何かこれじゃ余計遅くなるような気がして;;
最後に、
for ( i = 0; i < px_size; i++ )
px_pe[i] = i;
がSIMD化可能とコンパイラに言われたのですが、適切なintrinsicsが思い浮かびません。どうSIMD化できるのでしょうか?
あと、signed int **a __attribute((aligned(16)));
と宣言したら、**a, **(a+4), **(a+8),...が16バイトにアラインメントされてることになりますか?
長くて&初歩的な質問ばかりですみません。
よろしくお願いします。
for ( i = 0; i < px_size; i++ )
px_pe[i] = i;
がSIMD化可能とコンパイラに言われたのですが、適切なintrinsicsが思い浮かびません。どうSIMD化できるのでしょうか?
あと、signed int **a __attribute((aligned(16)));
と宣言したら、**a, **(a+4), **(a+8),...が16バイトにアラインメントされてることになりますか?
長くて&初歩的な質問ばかりですみません。
よろしくお願いします。
なんだそのやる気のない記法は。
outとdpのアドレスを16バイト境界にあわせられない理由がある?
最悪ストアだけでいいから16バイト境界にあわせること。
合わない部分はループの外に吐き出してOK。
outとdpのアドレスを16バイト境界にあわせられない理由がある?
最悪ストアだけでいいから16バイト境界にあわせること。
合わない部分はループの外に吐き出してOK。
16バイトにアラインメントされてるかを検定する方法を知らないとか言わないよな?
>outとdpは引数で、16バイトにアラインメントされてるか分からなかったので、
>この方法しか思いつかなかったのですが、何かこれじゃ余計遅くなるような気がして;;
判定方法が解らないとか言わないでくれよ?
ループ回数が十分大きければ、ループの外側での条件分岐はトータルの計算時間に大した影響は無い。
(address + 15) & ~15 などとして、16バイト境界を検出する。
んで、16バイト境界に合った区間だけのSIMD化を検討しる。
>>173
ならねぇwww
そもそもaの指す実体は何だよ
そいつがアラインメントされてるかどうか次第だ
>outとdpは引数で、16バイトにアラインメントされてるか分からなかったので、
>この方法しか思いつかなかったのですが、何かこれじゃ余計遅くなるような気がして;;
判定方法が解らないとか言わないでくれよ?
ループ回数が十分大きければ、ループの外側での条件分岐はトータルの計算時間に大した影響は無い。
(address + 15) & ~15 などとして、16バイト境界を検出する。
んで、16バイト境界に合った区間だけのSIMD化を検討しる。
>>173
ならねぇwww
そもそもaの指す実体は何だよ
そいつがアラインメントされてるかどうか次第だ
>174さん
あ、すみません。少なくともoutは代入されるだけなので16バイトにアラインメントしても問題ないですね。
dpの方が理解できないのですが、引数として貰ってくるものなので…いつアラインメントすればいいのでしょうか?
宣言された後で、dp __attribute__((aligned(16)))って書けば行列の中身も全部グッと(?)移動するものなんですか?
よろしくお願いします。
あ、すみません。少なくともoutは代入されるだけなので16バイトにアラインメントしても問題ないですね。
dpの方が理解できないのですが、引数として貰ってくるものなので…いつアラインメントすればいいのでしょうか?
宣言された後で、dp __attribute__((aligned(16)))って書けば行列の中身も全部グッと(?)移動するものなんですか?
よろしくお願いします。
>175さん
同時にアップしてたみたいです;;前の質問消しておきます。
なるほど!そうやってSIMD化するんですね!コード書きなおしてみます…。
どうもありがとうございます。
aの指す実体…。う~ん、実はポインタ一週間前に覚えたばかりなんです。汗
ちょっと考えてからまた質問させていただきます。
ありがとうございます。
同時にアップしてたみたいです;;前の質問消しておきます。
なるほど!そうやってSIMD化するんですね!コード書きなおしてみます…。
どうもありがとうございます。
aの指す実体…。う~ん、実はポインタ一週間前に覚えたばかりなんです。汗
ちょっと考えてからまた質問させていただきます。
ありがとうございます。
言ってる意味がわからん。
dpの配列の実体はダレが決めるの?君以外が決めるの?
君が自由に決めることができるなら、その配列に、alignオプションを指定しておきなさい。
自由にならないのなら、交渉しなさい。
駄目なら、そこではじめてミスアラインロードを検討すればいい。
__attribute__((aligned(16)))という指定は、配列の定義を指定された通りにデータを配置されるというもので
元々あるデータ配置を移動するものではない。
ポインタにalignやってもポインタ型が16バイト境界に配置されるだけで
実体は実体の定義通りに配置される。
dpの配列の実体はダレが決めるの?君以外が決めるの?
君が自由に決めることができるなら、その配列に、alignオプションを指定しておきなさい。
自由にならないのなら、交渉しなさい。
駄目なら、そこではじめてミスアラインロードを検討すればいい。
__attribute__((aligned(16)))という指定は、配列の定義を指定された通りにデータを配置されるというもので
元々あるデータ配置を移動するものではない。
ポインタにalignやってもポインタ型が16バイト境界に配置されるだけで
実体は実体の定義通りに配置される。
ありがとうございます。
meschachというライブラリの中のループをSIMD化しているところなんです。プログラム自体をあまり理解してなくて。。
あと、また質問なのですが、SPEプログラムで実行時間を測りたい場合って、SPU Decrementerでprof.star()とかやるしかないですか?
これってCELLシミュレーター上でしか使えないですよね?
#include <time.h>でclock()とか使ってみたんですけど(ps3上で)、エラー出たので、サポートされていないのかなと。
よろしくお願いします。
meschachというライブラリの中のループをSIMD化しているところなんです。プログラム自体をあまり理解してなくて。。
あと、また質問なのですが、SPEプログラムで実行時間を測りたい場合って、SPU Decrementerでprof.star()とかやるしかないですか?
これってCELLシミュレーター上でしか使えないですよね?
#include <time.h>でclock()とか使ってみたんですけど(ps3上で)、エラー出たので、サポートされていないのかなと。
よろしくお願いします。
time.hは使えない。
SPU DecrementerはPS3やSpursEngine上のSPU実機でもつかえる。
SPU DecrementerはPS3やSpursEngine上のSPU実機でもつかえる。
>>180
ば・・・ばか!だんごやさんはもっと殺伐としてるべきなんだよ!!!!11111
ば・・・ばか!だんごやさんはもっと殺伐としてるべきなんだよ!!!!11111
んじゃネタ振り。
「任意の n に対し O(1) 解は存在し得ない。」
がんばって O(n) 最適化しよう。
「任意の n に対し O(1) 解は存在し得ない。」
がんばって O(n) 最適化しよう。
×O(n)に実質的に落ち着くんじゃないの?
○>>195がO(n)のロジックしか思いつかない
○>>195がO(n)のロジックしか思いつかない
みんなの評価 : ○
類似してるかもしれないスレッド
- cellプログラミングしちゃいなよ3 (1001) - [97%] - 2009/1/27 2:23 ☆
- CELL鬯ッ?ゥ隰ウ?セ??ス??オ????コ?????ッCore2 QX6700鬯ッ?ゥ隰ウ?セ??ス??オ????コ???? (92) - [18446744073709551581%] - 2012/1/21 0:39
トップメニューへ / →のくす牧場書庫について