のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,906人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレcellプログラミングしちゃいなよ4

    cell覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    151 = :

    それはそうとだんごは学生部門じゃなかったんだな
    それは非常に助かる

    152 = :

    今までの言動からすると、団子が本当のスタートラインに
    立ててるかは疑わしいわけだがw

    153 = :

    >>152
    フィクスタ賞できたから、遅くってもフィクスタ賞狙いだったって言い訳はできるなw
    団子には是非優勝を狙ってると宣言して欲しいものだw

    154 = :

    再利用性にこだわってたからフィクスタ賞狙いでも別にいいけどね
    フィクスタ賞とりつつ優勝者を上回るコードを締切と同時に公開したらかこいい

    155 = :

    10パターンくらい用意しててどれにするか迷ってる状態。

    >>152
    そう思わないとつらいことでもあるんですか?(笑)

    156 = :

    10パターンってw
    一番速いのか一番実用的なの
    一番アルゴリズムが綺麗なの
    3つ位しか選ぶ基準が思い浮かばねえ

    157 = :

    何度も言ってるが出力が互換であることは実用性とはまったく関係ない。

    158 = :

    ならなおさら10パターンも思い浮かばないな
    一番速いの選べばおk

    159 = :

    そこそこの性能を出しつつネタに走るとか

    160 = :

    >>157
    デコードに何十種類もかかるフォーマットじゃなければな

    161 = :

    何十種類→何十サイクル
    一体どんな残念な事が頭の中に起こってこの単語が出てきたんだ…

    162 = :

    IOCCCばりのネタプログラムを希望する

    163 = :

    >>160-161
    ビット配列がどうなっていようと乱数は乱数なんだぜ。
    たとえば公式のMTの64bit専用版は32ビットと生成式が違う
    ビットの配列構造が違ってても乱数は乱数なんだ。

    たとえば、32ビット乱数32個を行列転置したら乱数じゃなくなるのか?

    164 = :

    多分レイアウト変更組がやってることってのはそれだよね
    みんな薄々気づいてただろうけど結局こうなったな
    確かに転置したところで乱数であることには変わりはないね
    で、それを読みだすのに何サイクルかかる?って話だよ
    それとも0bit目を32個集めてそれも乱数って言ってる?

    165 = :

    >>164
    MTの場合、それでも乱数といえそうな気がする。
    bit単位のランダム性が特徴のひとつだから、ビットを特定の順序に並べ替えるだけなら
    ランダム性が崩れない。

    166 = :

    >>164
    ん?0ビット目を32個集めても乱数として使えるだろ?
    同じサマリになるようにしろってのはフィックスターズの都合であって
    現実にモンテカルロなどに使う場合はビット単位でのランダム性を破壊するような改変でない限り
    十分実用的といえる。

    167 = :

    そうか
    理解不足で混乱させてすまん
    って事はフィクスタ賞も危ういなぁ
    純粋な互換で勝負するのは無理があるか

    170 = :

    キョッキョッキョッキョッキョ

    171 = :

    スレ違いだったらごめんなさい。。
    きく人がいなくてここに辿り着きました。

    for ( i = iv->dim; i < new_dim; i++ )
    iv->ive[i] = 0;

    こんな感じの構造体のループって普通にSIMD化できるんですか?
    構造体とかよく分からなくて…汗。

    172 = :

    それと、


    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バイトにアラインメントされてるか分からなかったので、この方法しか思いつかなかったのですが、何かこれじゃ余計遅くなるような気がして;;

    173 = :

    最後に、
    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バイトにアラインメントされてることになりますか?

    長くて&初歩的な質問ばかりですみません。
    よろしくお願いします。

    174 = :

    なんだそのやる気のない記法は。
    outとdpのアドレスを16バイト境界にあわせられない理由がある?

    最悪ストアだけでいいから16バイト境界にあわせること。
    合わない部分はループの外に吐き出してOK。

    175 = :

    16バイトにアラインメントされてるかを検定する方法を知らないとか言わないよな?

    >outとdpは引数で、16バイトにアラインメントされてるか分からなかったので、
    >この方法しか思いつかなかったのですが、何かこれじゃ余計遅くなるような気がして;;

    判定方法が解らないとか言わないでくれよ?
    ループ回数が十分大きければ、ループの外側での条件分岐はトータルの計算時間に大した影響は無い。

    (address + 15) & ~15 などとして、16バイト境界を検出する。
    んで、16バイト境界に合った区間だけのSIMD化を検討しる。



    >>173
    ならねぇwww
    そもそもaの指す実体は何だよ
    そいつがアラインメントされてるかどうか次第だ

    176 = :

    >174さん

    あ、すみません。少なくともoutは代入されるだけなので16バイトにアラインメントしても問題ないですね。

    dpの方が理解できないのですが、引数として貰ってくるものなので…いつアラインメントすればいいのでしょうか?
    宣言された後で、dp __attribute__((aligned(16)))って書けば行列の中身も全部グッと(?)移動するものなんですか?

    よろしくお願いします。

    177 = :

    >175さん
    同時にアップしてたみたいです;;前の質問消しておきます。

    なるほど!そうやってSIMD化するんですね!コード書きなおしてみます…。
    どうもありがとうございます。

    aの指す実体…。う~ん、実はポインタ一週間前に覚えたばかりなんです。汗
    ちょっと考えてからまた質問させていただきます。
    ありがとうございます。

    178 = :

    言ってる意味がわからん。
    dpの配列の実体はダレが決めるの?君以外が決めるの?
    君が自由に決めることができるなら、その配列に、alignオプションを指定しておきなさい。
    自由にならないのなら、交渉しなさい。

    駄目なら、そこではじめてミスアラインロードを検討すればいい。
    __attribute__((aligned(16)))という指定は、配列の定義を指定された通りにデータを配置されるというもので
    元々あるデータ配置を移動するものではない。

    ポインタにalignやってもポインタ型が16バイト境界に配置されるだけで
    実体は実体の定義通りに配置される。

    179 = :

    ポインタ理解してないのにSIMDとか無茶ですから

    180 = :

    なんだかんだ言って親切だな。

    181 = :

    ありがとうございます。
    meschachというライブラリの中のループをSIMD化しているところなんです。プログラム自体をあまり理解してなくて。。

    あと、また質問なのですが、SPEプログラムで実行時間を測りたい場合って、SPU Decrementerでprof.star()とかやるしかないですか?
    これってCELLシミュレーター上でしか使えないですよね?
    #include <time.h>でclock()とか使ってみたんですけど(ps3上で)、エラー出たので、サポートされていないのかなと。

    よろしくお願いします。

    183 = :

    >>180
    ば・・・ばか!だんごやさんはもっと殺伐としてるべきなんだよ!!!!11111

    184 = :

    え、PS3上でも使えるんですか!?何でエラーが出るんだろう…。涙
    ありがとうございます。

    185 = :

    根本的にスキルが足りてない気がするが……
    ツンデレ団子がフォローしているから任せておくかw

    187 = :

    しかもはるか斜め上!!

    188 = :

    ダンゴさんのネタ切れでスレが沈静化したな

    189 = :

    荒らすな。団子のせいにするな。

    190 = :

    んじゃネタ振り。

    「任意の n に対し O(1) 解は存在し得ない。」

    がんばって O(n) 最適化しよう。

    194 = :

    おしまい

    195 = :

    O(n)に実質的に落ち着くんじゃないの?

    197 = :

    俺はO(n)で優勝する気満々だからおk

    198 = :

    ヒントを書かせようとしてる奴がいるな。
    そんな奴はもう参加賞で我慢しる。

    199 = :

    >>197
    無理だね。

    気づいた人もいるだろうけど、O(n)を切るロジックは、ある。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / cell一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について