annotate TaskManager/Cell/spe/CellScheduler.cc @ 666:4615489c5faa

simplify word_count
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 03 Dec 2009 02:11:31 +0900
parents 8cc609285bbe
children ab3cd3aeacff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
1 #include <stdio.h>
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
2 #include "CellScheduler.h"
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
3 #include "CellDmaManager.h"
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
4 #include "error.h"
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
5
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
6 // ユーザプログラムで定義
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
7 // なんだけど、それは微妙じゃね?
430
fb62b7acc92b code loading (on going...)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 388
diff changeset
8 extern void task_init(Scheduler *scheduler);
88
504899860e66 *** empty log message ***
gongo
parents: 70
diff changeset
9
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
10 void
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
11 CellScheduler::init_impl()
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
12 {
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
13 connector = new CellDmaManager;
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
14
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
15 mainMemNum = 0;
88
504899860e66 *** empty log message ***
gongo
parents: 70
diff changeset
16
430
fb62b7acc92b code loading (on going...)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 388
diff changeset
17 task_init(this); // PPE側ではUser 側で既に呼んでいる...
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
18 // SPE側はここで呼び出す必要がある
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
19 // Fifo ではSPEは無いので呼び出されない
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
20 }
98
f320d1039d51 *** empty log message ***
akira
parents: 94
diff changeset
21
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
22 /**
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
23 * メインメモリ領域を allocate する。
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
24 * allocate した領域のアドレスは mainMem_get で取得するが、
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
25 * mainMem_get を実行できるのは
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
26 * Renew Task (タスク内で create した Task) から。
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
27 * alloc してすぐ get しても、アドレス何も入ってないです。
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
28 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
29 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
30 CellScheduler::mainMem_alloc(int id, int size)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
31 {
629
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
32 mainMemList[id] = (memaddr)NULL;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
33
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
34 mainMemNum++;
626
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
35 mail_write((memaddr)MY_SPE_COMMAND_MALLOC);
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
36 mail_write((memaddr)id);
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
37 mail_write((memaddr)size);
98
f320d1039d51 *** empty log message ***
akira
parents: 94
diff changeset
38 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
39
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
40 void
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
41 CellScheduler::mainMem_wait()
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
42 {
626
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
43 unsigned long id;
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
44 memaddr addr;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
45
141
fc314f28b66e TileList を作ろうとしたがに動かない。
gongo@charles.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
46 while (mainMemNum > 0) {
626
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
47 id = (unsigned long)mail_read();
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
48 addr = mail_read();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
49
629
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
50 mainMemList[id] = (memaddr)addr;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
51 mainMemNum--;
141
fc314f28b66e TileList を作ろうとしたがに動かない。
gongo@charles.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
52 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
53 }
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
54
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
55 /*
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
56 dma channel を返す
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
57 本来、SPU用に閉じているはず。ユーザが明示的に使うことはない。
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
58 良くわからないが、ある分だけcounterで廻せば良い。しかし、
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
59 そのためには、全部で、get_tag()する必要があるはず。
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
60
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
61 */
451
95dbf6bd8cd9 tag fixed... test_nogl move
kazz@henri.cr.ie.u-ryukyu.ac.jp
parents: 442
diff changeset
62
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
63 #define TEX_LOAD1 0
491
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 451
diff changeset
64 // #define TEX_LOAD2 1
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
65
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
66 uint32
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
67 CellScheduler::get_tag()
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
68 {
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
69 static int count = 0;
496
58240647b23b PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 491
diff changeset
70 return TEX_LOAD1+(count++ % 2);
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
71 }
451
95dbf6bd8cd9 tag fixed... test_nogl move
kazz@henri.cr.ie.u-ryukyu.ac.jp
parents: 442
diff changeset
72
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
73
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
74
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
75 /* end */