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

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

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

    1 = :

    前スレ

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

    2 = :

    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 = :

    一応たててみたもののスレタイみすった/(^o^)\

    4 = :

    >>1 乙。久しぶりに話題投下してみる。

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

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

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

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

    5 = :

    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 = :

    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 = :

    >>6
    同時に32個以上突っ込めるなら後者の方が良いな

    8 = :

    音声圧縮かな?

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

    とか妄想してみた

    9 = :

    >>7
    その心は?

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

    10 = :

    >>9
    パック一回で十分だね

    11 = :

    CUDA本格的になってなんたらエンジン窮地に立たされる

    12 = :

    >>11
    よくわかんねーよw

    13 = :

    >>11
    大丈夫、スパースエンジンなんて最初っから立場がないから。

    14 = :

    Cell が GPU に敵う進化を続けられるかは別だが。

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


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

    15 = :

    実際問題、超並列プロセッサっていっても、ハイパーSIMD/MIMDと変わらないような用途でしか使ってないだろう。
    プロセッサがいくつかあって、すごいことがいつできるんだ。LinuxがSPEに仕事割り振れるようにでもなればなあ。

    16 = :

    ブロードバンドエンジンは内蔵されたホストCPUがPen4程度の低性能、
    スパースエンジンは並列度が落ちた挙句にホストCPUが外付け。
    某芝の目指す方向はどこなんだか。

    17 = :

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

    18 = :

    つーか超並列はMIMDでしか作らない訳だが。

    19 = :

    Cellプログラミングをやろうと思い
    PS3にxUbuntuをいれSynapticパッケージマネージャでCell-sdkとbinfbinfmts-supportを入れました。
    spu-gcc でhello world

    20 = :

    途中で送信してしまいました

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

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

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

    22 = :

    レス有難うございます
    xUbuntuだと結局Cellやるのには問題多いんですかね・・・
    軽いって話を聞いたんですけど。無理そうならFedoraにしときます。

    23 = :

    PS3で開発って辺りが結構無茶っぽい。
    いいクロス開発環境ないのかねぇ。

    24 = :

    SPU用のバイナリのファイル名が違ってるか作られてないのでは?
    俺のとこはxじゃないUbuntu7.10だけど問題なくセルフ開発できてる

    25 = :

    >>23
    そうだよな
    開発成果をBDまたは仮想BDで出力する環境が欲しい

    26 = :

    素直に一旦ゲーム屋に行けよw

    28 = :

    >>24,27
    レスありがとうございます。
    はじめに実行したときcannot execute binary file と表示されたのでSPU用のバイナリが原因かもしれません。
    それを解決するためにbinfbinfmts-supportを入れてみたのですが・・・解決にはなってなかったかもしれないですね。
    SPU用のバイナリについて勉強不足であまりよくわからないので調べてみたいと思います。

    29 = :

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

    31 = :

    仕事でやるんならそうだね

    34 = :

    自分も是非感想を聞きたい。

    35 = :

    誰かファイル操作についてのCの制御文?(printfのようなもの)知らない?
    知ってる分だけ伝授してほしいです

    36 = :

    >>35
    スレ違い。

    37 = :

    MARSってコンテキスト量減らせるだけ?

    38 = :

    MARSでやれるようなことは、GPGPUだとたぶん無理だと思う。こういうことにこそ、Cellの強みがあるんじゃないかな。
    実際どれだけ使えるようになっているのかが問題だ。

    39 = :

    データの入れ替えには対応してないみたいだな。(まだ)

    40 = :

    CPUの省エネ、後編(CELL、BG/Lを参考に考える。)
    http://www.ne.jp/asahi/comp/tarusan/main190.htm

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


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

    41 = :

    「5年は追いつけないでしょう」──東芝が作るAVノートの新しい未来形・Qosmio G50の革新性とは
    http://journal.mycom.co.jp/articles/2008/07/30/qosmio/001.html

    通常
    supers engine
    これは結構いいな。

    42 = :

    問題はノートでここまでの要求があるかだが

    43 = :

    映画好きの人とか、結構、本気で欲しがるんじゃないか?
    自宅で使うデスクノートとして。まあ、あくまでマニア需要かな。

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

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

    44 = :

    アプリは自作用のカードに乗らないから色々なメーカーに期待するって……
    自作用カード出しても、エコシステムが回るほどアプリが出てくる思えないな。

    45 = :

    Qosmio G50新兵器、SpursEngineがスゴすぎる件【前編】
    http://ascii.jp/elem/000/000/157/157525/

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

    46 = :

    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 = :

    ついにベールを脱いだIntelのCPU&GPUハイブリッド「Larrabee」
    http://pc.watch.impress.co.jp/docs/2008/0804/kaigai457.htm

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

    48 = :

    そろそろCellも次世代のバージョンの詳細がでてくるだろうか。2PPE+32SPEがでる
    っていう情報はでてるけど、それ以上の話はまだなくて、今まさに検討中なんだろう。

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

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

    49 = :

    >>45
    > Qosmio G50新兵器、SpursEngineがスゴすぎる件【前編】
    >http://ascii.jp/elem/000/000/157/157525/
    >
    > NvidiaのGPUまわせば、SpursEngineいらないんじゃ…。

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


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

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


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