*TESTパッケージ [#n730c9ee]
担当者が Cell C/C++ Langage Extensions と Fixstars とかを調べながら作ったチュートリアルパッケージです。とりあえず、

この関数面白そうだ → 使ってみる → 出来た〜

の流れで公開しますので、なかなか増えないかもしれないです。まぁおまけですから。

**パッケージ構成(2007/12/22現在) [#wc0d2f86]
-&ref(test.tar.gz,, テストパッケージ 12/22版);

 - test
   +- listdma
   |  +- p_ldma.c
   |  +- s_ldma.c
   |  +- Makefile
   |
   +- vectorshift
   |  +- s_vshift.c
   |  +- Makefile
   |
   +- reuse
      +- p_reuse.c
      +- s_reuse.c
      +- barrier.c
      +- barrier.h
      +- errors.h

**使い方 [#nb46dd92]
とりあえず、自分の使いたいプログラムのディレクトリで
 make
あとは各プログラムに起動方法かきます。

**説明 [#s1576788]
*** listdma [#o286f03a]
-PPE-SPE間の転送に使う LIST DMA という機能があります。これを使うと、複数の配列を数本まとめて送れるみたいです。
-C/C++ Langage Extensions 節4.4 です
-やっていること
++とりあえず、PPEはa[], b[] に abcdef....z をいれます。13文字ずつわけて
++んで、SPE は a, b のメインメモリのアドレスをもらって、MFC_GETL_CMD をつかって一気に読み込みます
++SPEプリント文でちゃんと受け取れてるか見せてくれます
-キーとなるソース
 for (i = 0; i < 2; i++) {
 	list[i].notify = 0;
 	list[i].reserved = 0; 
	list[i].size = 16;
 }
 list[0].eal = mfc_ea2l(args.a);
 list[1].eal = mfc_ea2l(args.b);
 spu_mfcdma64(buf, mfc_ea2h(args.a), (unsigned int)&list, sizeof(list), 0, MFC_GETL_CMD);
 spu_writech(MFC_WrTagMask, 1 << 0);
 spu_mfcstat(MFC_TAG_UPDATE_ALL);
 
-応用例はこんな感じです→[[FIXSTERS:http://cell.fixstars.com/ps3linux/index.php/DMA%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%AE%E3%83%A3%E3%82%B6%E3%83%BC%E3%81%A8%E3%82%B9%E3%82%AD%E3%83%A3%E3%82%BF%E3%83%BC%E3%82%92%E8%A1%8C%E3%81%AA%E3%81%86]]

-起動方法
 ./p_ldma

*** vectorshift [#o286f03a]
-SPEで、ヴェクトルを回転させたかった。つまり (0, 1, 2, 3) -> (1, 2, 3, 0)
-C/C++ Langage Extensions 節2.10 です
-やっていること
++ヴェクトル全体を左に一要素分ローテートしました
++4回繰り返します、最初に戻ります
-キーとなるソース
 va[0] = spu_rlqwbyte(va[0], (int)sizeof(float));
 
-起動方法
 elfspe ./s_vshift

*** reuse [#i2d21937]
-SPEコンテキストとPthread を再利用するにはどうすればいいかなという試行錯誤
-これを見ると、N体問題の計算部分以外は出来てしまいます。たぶんね。これを骨組みにつくってもいいかもしれない。
-同梱の barrier.c barrier.h errors.h は Dave Butenhof 氏のつくったライブラリです。ライセンスは明記してないけど GPL あたりなので、私用に使うときは気をつけて
-すくなくとも、利益の発生するような使い方では使ってほしくないようです。
-やっていること、キーとなるソース
えっと、書いてしまうと課題が全部分かってしまうので、各自解析してみてください。
--えっと、書いてしまうと課題が全部分かってしまうので、各自解析してみてください。
-起動方法
 ./p_reuse

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS