Mercurial > hg > Game > Cerium
changeset 834:d62bdb15a1f1 draft
merged
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 25 May 2010 18:23:27 +0900 |
parents | 577bde5d0cec (current diff) 5c0215ef9e22 (diff) |
children | beccb8a8bc69 |
files | |
diffstat | 1 files changed, 120 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/Document/Cerium2010.mm Tue May 25 18:22:59 2010 +0900 +++ b/Document/Cerium2010.mm Tue May 25 18:23:27 2010 +0900 @@ -7,38 +7,76 @@ <node CREATED="1271152654975" ID="Freemind_Link_872288409" MODIFIED="1271152689305" TEXT="simple task"/> <node CREATED="1271152689941" ID="Freemind_Link_394170420" MODIFIED="1271152696744" TEXT="array task"/> <node CREATED="1271152707076" ID="Freemind_Link_821908954" MODIFIED="1271152710024" TEXT="old task"/> +<node CREATED="1274588901430" ID="Freemind_Link_93256422" MODIFIED="1274588930968" TEXT="bulk task iterator が必要"/> +<node CREATED="1274589056845" ID="Freemind_Link_525207414" MODIFIED="1274589066504" TEXT="TaskManager は必要でないらしい"> +<node CREATED="1274589068245" ID="Freemind_Link_491724576" MODIFIED="1274589092436" TEXT="TMmain に TaskManager を渡すのではない"/> +<node CREATED="1274589093907" ID="Freemind_Link_479464644" MODIFIED="1274589110014" TEXT="TMmain には SchedTask を渡す"/> </node> -<node CREATED="1272359816085" ID="Freemind_Link_1141511333" MODIFIED="1272359822079" TEXT="Code load"> -<node CREATED="1272359838763" ID="Freemind_Link_559440262" MODIFIED="1272359874862" TEXT="overlayの領域をcode領域に追加する"/> -<node CREATED="1272359908849" ID="Freemind_Link_385235315" MODIFIED="1272359935147" TEXT="Task List を main memoryに追い出す"/> +<node CREATED="1274589412122" ID="Freemind_Link_1178859006" MODIFIED="1274589421381" TEXT="wait for"> +<node CREATED="1274589422665" ID="Freemind_Link_430196306" MODIFIED="1274589445468" TEXT="wait for したときに、その Task が既に終わってるとまずい"/> +<node CREATED="1274589448968" ID="Freemind_Link_1819112747" MODIFIED="1274589485129" TEXT="既に free されてるかもしれない"/> +<node CREATED="1274589463647" ID="Freemind_Link_628313303" MODIFIED="1274589501161" TEXT="既に再利用されてる可能性もある"/> +<node CREATED="1274589504213" ID="Freemind_Link_1256949293" MODIFIED="1274589543285" TEXT="これを防ぐために HTask queue に sequence 番号をつける"> +<node CREATED="1274589543690" ID="Freemind_Link_571012406" MODIFIED="1274589565709" TEXT="pointer と sequence 番号で判断する"/> +</node> +<node CREATED="1274589592652" ID="Freemind_Link_633880071" MODIFIED="1274589611826" TEXT="wait for する先がまだ spawn されてなければ問題ない"/> +</node> +<node CREATED="1274591484600" ID="Freemind_Link_326262522" MODIFIED="1274591901958" TEXT="Scheduler からの Task の終了の通知"> +<icon BUILTIN="bookmark"/> +<node CREATED="1274591515950" ID="Freemind_Link_1155992623" MODIFIED="1274591524009" TEXT="現状"> +<node CREATED="1274591525062" ID="Freemind_Link_1807292931" MODIFIED="1274591565447" TEXT="Simple Task とTask Array の終了ごとに mail がくる"/> +<node CREATED="1274591534573" ID="Freemind_Link_1511819683" MODIFIED="1274591595048" TEXT="ppe が mail を取らないと spe が止まってしまう"/> +</node> +<node CREATED="1274591601138" ID="Freemind_Link_382514949" MODIFIED="1274591605413" TEXT="解決策"> +<node CREATED="1274591606025" ID="Freemind_Link_353884996" MODIFIED="1274591631556" TEXT="ppe 側で task の終了ごとに spe の mail をチェックする"/> +<node CREATED="1274591639087" ID="Freemind_Link_1901780159" MODIFIED="1274591678257" TEXT="task ごとではなくて、tasklist ごとに終了の mail を送る"/> +<node CREATED="1274591690357" ID="Freemind_Link_755676138" MODIFIED="1274591731374" TEXT="tasklist には複数の task が入っているので、それを TaskManagerImpl がチェックする"/> +<node CREATED="1274591739066" ID="Freemind_Link_832928459" MODIFIED="1274591771190" TEXT="post_func の後にも mail をチェックする"/> +<node CREATED="1274591763785" ID="Freemind_Link_781498285" MODIFIED="1274591809082" TEXT="ppe 側を multithread 化すると mail のチェックは速くなる"> +<node CREATED="1274591811494" ID="Freemind_Link_142692230" MODIFIED="1274591847760" TEXT="ただし、ppe の mail check は busy wait なので CPU を食う可能性がある"/> +</node> +</node> +</node> </node> <node CREATED="1271152816566" ID="Freemind_Link_1565696016" MODIFIED="1271152823147" TEXT="RenderingEngine"> <node CREATED="1271152752178" ID="Freemind_Link_547968057" MODIFIED="1271152770913" TEXT="simple task に書き直す"/> <node CREATED="1271152774825" ID="Freemind_Link_1913385705" MODIFIED="1271152782596" TEXT="array task に書き直す"/> -<node CREATED="1272360043545" ID="Freemind_Link_1681599734" MODIFIED="1272360049917" TEXT="光源"> -<node CREATED="1272360050585" ID="Freemind_Link_315378051" MODIFIED="1272360162478" TEXT="光源のスイッチ"> -<icon BUILTIN="button_ok"/> +<node CREATED="1274590740681" ID="Freemind_Link_276160769" MODIFIED="1274590761477" TEXT="createPolygonFromSceneGraph"/> +<node CREATED="1274590763872" ID="Freemind_Link_149309559" MODIFIED="1274590768587" TEXT="createSpan"> +<node CREATED="1274590806277" ID="Freemind_Link_956150988" MODIFIED="1274590821313" TEXT="get_segment で書き直す"/> +</node> +<node CREATED="1274590776014" ID="Freemind_Link_1512564455" MODIFIED="1274590781674" TEXT="DrawSpan"> +<node CREATED="1274591872323" ID="Freemind_Link_694643331" MODIFIED="1274591883214" TEXT="Task Array で書き直す"/> +</node> </node> -<node CREATED="1272360057184" ID="Freemind_Link_208005955" MODIFIED="1272360063316" TEXT="光源機能のスイッチ"/> -<node CREATED="1272360078399" ID="Freemind_Link_1262318818" MODIFIED="1272360104442" TEXT="Material の情報取得"> -<node CREATED="1272360104814" ID="Freemind_Link_647651975" MODIFIED="1272360118536" TEXT="script側から取得"/> -<node CREATED="1272360126181" ID="Freemind_Link_591710456" MODIFIED="1272360136128" TEXT="SceneGraph側から取得"/> +<node CREATED="1271152865996" ID="Freemind_Link_1369046890" MODIFIED="1274591464598" TEXT="ppu の multi threads 化"> +<icon BUILTIN="full-2"/> +<icon BUILTIN="ksmiletris"/> +<icon BUILTIN="bookmark"/> +<node CREATED="1271152923312" ID="Freemind_Link_751477936" MODIFIED="1271154172144" TEXT="ppu の fifo を synchronized queue に書き換える"/> +<node CREATED="1274588938972" ID="Freemind_Link_1843780088" MODIFIED="1274588948726" TEXT="CPU thread を作った"> +<node CREATED="1274589123218" ID="Freemind_Link_1266246688" MODIFIED="1274589152996" TEXT="mail を Blocking queue にする"/> +</node> +<node CREATED="1274588957790" ID="Freemind_Link_1367800310" MODIFIED="1274589249636" TEXT="task 側から createTask する場合"> +<node CREATED="1274588987609" ID="Freemind_Link_869382645" MODIFIED="1274589006891" TEXT="local thread で local でqueue を作成する"/> +<node CREATED="1274589011943" ID="Freemind_Link_1937839870" MODIFIED="1274589047697" TEXT="queue を mail で TaskManagerImpl に投げる"/> +<node CREATED="1274589048518" ID="Freemind_Link_1379141754" MODIFIED="1274589192562" TEXT="task queue は TaskManagerImpl からしかアクセスしないようにする"/> +<node CREATED="1274589260394" ID="Freemind_Link_1946382151" MODIFIED="1274589278845" TEXT="task queue にアクセスするのに lock が不要になる"/> +<node CREATED="1274589321823" ID="Freemind_Link_1691404099" MODIFIED="1274589339817" TEXT="wait for は task queue にアクセスしてしまう"> +<node CREATED="1274589342886" ID="Freemind_Link_374709913" MODIFIED="1274589363144" TEXT="とりあえず、dummy の task に wait for する"/> +<node CREATED="1274589365484" ID="Freemind_Link_664545631" MODIFIED="1274589401118" TEXT="dummy の task を TaskManagerImpl で実際の Task に書き直す"/> </node> </node> </node> -<node CREATED="1271152865996" ID="Freemind_Link_1369046890" MODIFIED="1271154765327" TEXT="ppu の multi threads 化"> -<icon BUILTIN="full-2"/> -<icon BUILTIN="ksmiletris"/> -<node CREATED="1271152923312" ID="Freemind_Link_751477936" MODIFIED="1271154172144" TEXT="ppu の fifo を synchronized queue に書き換える"/> -</node> -<node CREATED="1271153003844" ID="Freemind_Link_11749018" MODIFIED="1272359609370" TEXT="WordCount のネックの検証"> +<node CREATED="1271153003844" ID="Freemind_Link_11749018" MODIFIED="1274588839080" TEXT="WordCount のネックの検証"> <icon BUILTIN="ksmiletris"/> <icon BUILTIN="button_ok"/> <node CREATED="1271153026411" ID="Freemind_Link_245323343" MODIFIED="1271153038270" TEXT="おそらくmail がネック"> -<node CREATED="1271153052617" ID="Freemind_Link_1149688811" MODIFIED="1271153081388" TEXT="TaskArray を使う"/> +<node CREATED="1271153052617" ID="Freemind_Link_1149688811" MODIFIED="1271153081388" TEXT="TaskArray を使う"> +<node CREATED="1274589296144" ID="Freemind_Link_1285789074" MODIFIED="1274589304753" TEXT="ちゃんと早くなる"/> </node> -<node CREATED="1272359665972" ID="Freemind_Link_726453210" MODIFIED="1272359683624" TEXT="run16 バージョン"/> -<node CREATED="1272359696037" ID="Freemind_Link_1920589964" MODIFIED="1272359713399" TEXT="TaskArrayではないものの計測"/> +</node> +<node CREATED="1274588860001" ID="Freemind_Link_248066319" MODIFIED="1274588875979" TEXT="run16がまだ遅い"/> </node> <node CREATED="1271153108206" ID="Freemind_Link_164399149" MODIFIED="1271153120857" TEXT="sort"> <node CREATED="1271153121669" ID="Freemind_Link_618072996" MODIFIED="1271153131585" TEXT="buffer の swap"/> @@ -51,6 +89,7 @@ <node CREATED="1271153157556" ID="Freemind_Link_1374547416" MODIFIED="1271153271401" TEXT="pipeline 未実装"/> <node CREATED="1271153285333" ID="Freemind_Link_214169447" MODIFIED="1271154810421" TEXT="data segment の付加"> <icon BUILTIN="full-4"/> +<node CREATED="1274589620322" ID="Freemind_Link_768784354" MODIFIED="1274589620322" TEXT=""/> </node> <node CREATED="1271153410710" ID="Freemind_Link_285733382" MODIFIED="1271154693091" TEXT="task configuration"> <icon BUILTIN="full-1"/> @@ -64,7 +103,67 @@ </node> <node CREATED="1271152611017" ID="Freemind_Link_1716904506" MODIFIED="1271154668916" POSITION="right" TEXT="c"> <icon BUILTIN="full-1"/> -<node CREATED="1271153567589" ID="Freemind_Link_1467411845" MODIFIED="1271153602887" TEXT="data segment"/> +<node CREATED="1274589647087" ID="Freemind_Link_1711203047" MODIFIED="1274590187203" TEXT="data segment"> +<node CREATED="1274589663940" ID="Freemind_Link_1761381255" MODIFIED="1274589674103" TEXT="double linked list"/> +<node CREATED="1274589679195" ID="Freemind_Link_716452315" MODIFIED="1274602559867" TEXT="template で抽象化する"> +<icon BUILTIN="button_ok"/> +</node> +<node CREATED="1274589705349" ID="Freemind_Link_832842868" MODIFIED="1274602587441" TEXT="CPUごとに2の冪乗ごとのメモリプールで管理する"/> +<node CREATED="1274589739704" ID="Freemind_Link_206718102" MODIFIED="1274589760354" TEXT="Cerium 上のすべての object をこれで管理する"/> +<node CREATED="1274589761446" ID="Freemind_Link_182554869" MODIFIED="1274589772530" TEXT="malloc を追放する"/> +</node> +<node CREATED="1274589813524" ID="Freemind_Link_586150605" MODIFIED="1274589820551" TEXT="Scheduler"> +<node CREATED="1274589827947" ID="Freemind_Link_1419717866" MODIFIED="1274589836750" TEXT="conector"> +<node CREATED="1274589840322" ID="Freemind_Link_1088245803" MODIFIED="1274589849869" TEXT="dma"/> +<node CREATED="1274589850490" ID="Freemind_Link_369884542" MODIFIED="1274589854901" TEXT="mail"/> +</node> +<node CREATED="1274589865633" ID="Freemind_Link_211891458" MODIFIED="1274589869620" TEXT="Manager"> +<node CREATED="1274589873008" ID="Freemind_Link_268505657" MODIFIED="1274589880204" TEXT="createTask"/> +</node> +<node CREATED="1274589893039" ID="Freemind_Link_587727506" MODIFIED="1274589895499" TEXT="memory"> +<node CREATED="1274589904975" ID="Freemind_Link_965289748" MODIFIED="1274589908610" TEXT="memory pool"/> +<node CREATED="1274589910950" ID="Freemind_Link_578423126" MODIFIED="1274590840204" TEXT="get_segment/put_segment"/> +<node CREATED="1274590934078" ID="Freemind_Link_143382264" MODIFIED="1274590965424" TEXT="mainMemGet を廃止"/> +<node CREATED="1274590970972" ID="Freemind_Link_1136306406" MODIFIED="1274590999524" TEXT="その代わりにget_segment のオプション"> +<node CREATED="1274591004146" ID="Freemind_Link_1768521435" MODIFIED="1274591026932" TEXT="write back"> +<node CREATED="1274591080102" ID="Freemind_Link_1090183022" MODIFIED="1274591111872" TEXT="変更をmainmemory に書き戻す"/> +</node> +<node CREATED="1274591031697" ID="Freemind_Link_1603087582" MODIFIED="1274591064235" TEXT="create"> +<node CREATED="1274591116492" ID="Freemind_Link_307854380" MODIFIED="1274591136847" TEXT="新しくmemory を allocate"/> +<node CREATED="1274591140579" ID="Freemind_Link_1504695289" MODIFIED="1274591154135" TEXT="読み出しは行わない"/> +<node CREATED="1274591181001" ID="Freemind_Link_794364854" MODIFIED="1274591198083" TEXT="CPU ごとに前もって pool を割り当てる"/> +</node> +<node CREATED="1274591065575" ID="Freemind_Link_1910072627" MODIFIED="1274591074018" TEXT="read only"> +<node CREATED="1274591220334" ID="Freemind_Link_1059008005" MODIFIED="1274591225706" TEXT="書き込みを行わない"/> +</node> +</node> +<node CREATED="1274591251837" ID="Freemind_Link_430171688" MODIFIED="1274591351305" TEXT="set_inData、set_outData を使わずに get_segment を用いる"/> +<node CREATED="1274591366721" ID="Freemind_Link_1197326816" MODIFIED="1274591403984" TEXT="task の read buff、write buff は get_segment の集合になる"/> +</node> +<node CREATED="1274589942029" ID="Freemind_Link_1433001406" MODIFIED="1274589946856" TEXT="CPU"> +<node CREATED="1274589947596" ID="Freemind_Link_682604250" MODIFIED="1274589966263" TEXT="CPU ごとに Scheduler が存在する"/> +<node CREATED="1274589968071" ID="Freemind_Link_1380281338" MODIFIED="1274589994149" TEXT="conector と memory と Manager は SchedTask に渡す"/> +<node CREATED="1274590016681" ID="Freemind_Link_80180247" MODIFIED="1274590121501" TEXT="こうしないと API を変更する度に、
Scheduler と TaskManagerImpl と SchedTask を変更しないといけない"/> +</node> +</node> +<node CREATED="1274590223101" ID="Freemind_Link_1008928487" MODIFIED="1274590229233" TEXT="code segment"> +<node CREATED="1274590233461" ID="Freemind_Link_911750720" MODIFIED="1274590248855" TEXT="現状"> +<node CREATED="1274590250084" ID="Freemind_Link_1646689425" MODIFIED="1274590260735" TEXT="ppe 上の Task List"/> +<node CREATED="1274590266755" ID="Freemind_Link_1607174160" MODIFIED="1274590277006" TEXT="spe 上の Task List"/> +<node CREATED="1274590277538" ID="Freemind_Link_434593725" MODIFIED="1274590303464" TEXT="gcc の overlay table"/> +<node CREATED="1274590319280" ID="Freemind_Link_182869923" MODIFIED="1274590353362" TEXT="これだと Task の数に比例して Task List が大きくなってしまう"> +<node CREATED="1274590354958" ID="Freemind_Link_598814020" MODIFIED="1274590364501" TEXT="spe に収まりきらない"/> +</node> +<node CREATED="1274590367421" ID="Freemind_Link_1140067654" MODIFIED="1274590402015" TEXT="overlay があるので、どこで切られるか不明"/> +</node> +<node CREATED="1274590421469" ID="Freemind_Link_1440216976" MODIFIED="1274590426038" TEXT="解決"> +<node CREATED="1274590426970" ID="Freemind_Link_1282019170" MODIFIED="1274590448396" TEXT="Task List を main memory 上にただ一つにする"/> +<node CREATED="1274590455731" ID="Freemind_Link_1164092429" MODIFIED="1274590513145" TEXT="Task List に architecture ごとの code を入れる。"/> +<node CREATED="1274590477575" ID="Freemind_Link_1673350057" MODIFIED="1274590505702" TEXT="code は ld を使って一つの object に完結させる"/> +<node CREATED="1274590519829" ID="Freemind_Link_1325862525" MODIFIED="1274590558391" TEXT="Task List を getSegment を使ってキャッシュする"/> +<node CREATED="1274590587801" ID="Freemind_Link_1691372243" MODIFIED="1274590595900" TEXT="overlay を使わない"/> +</node> +</node> </node> <node CREATED="1271153725261" ID="Freemind_Link_1021236986" MODIFIED="1271154721545" POSITION="left" TEXT="SceneGraph"> <icon BUILTIN="full-2"/> @@ -72,6 +171,7 @@ <icon BUILTIN="full-3"/> <node CREATED="1271153732060" ID="Freemind_Link_1208701551" MODIFIED="1271153747479" TEXT="super dandy"> <node CREATED="1271153867093" ID="Freemind_Link_933024710" MODIFIED="1271154718432" TEXT="scale"/> +<node CREATED="1274590639383" ID="Freemind_Link_1328300488" MODIFIED="1274590660969" TEXT="とりあえずFifoManager で動かす"/> </node> <node CREATED="1271153855085" ID="Freemind_Link_443719007" MODIFIED="1271153859665" TEXT="chain"> <node CREATED="1271153871244" ID="Freemind_Link_71013239" MODIFIED="1271153873224" TEXT="speed"/>