Mercurial > hg > Game > Cerium
view Document/Cerium2010.mm @ 1786:ba6ffc679a8f draft
minor fix
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 30 Nov 2013 21:06:44 +0900 |
parents | 0718a4e40450 |
children |
line wrap: on
line source
<map version="0.8.1"> <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> <node CREATED="1271152588111" ID="Freemind_Link_375342021" MODIFIED="1271152594247" TEXT="Cerium"> <node CREATED="1271152599573" ID="_" MODIFIED="1271154701003" POSITION="right" TEXT="c++"> <icon BUILTIN="full-1"/> <node CREATED="1271152808239" ID="Freemind_Link_1256511474" MODIFIED="1271152815914" TEXT="TaskManager"> <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="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="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="1274782798929" TEXT="Task Array で書き直す"> <icon BUILTIN="ksmiletris"/> </node> </node> </node> <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="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="1274589296144" ID="Freemind_Link_1285789074" MODIFIED="1274589304753" TEXT="ちゃんと早くなる"/> </node> </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"/> </node> <node CREATED="1271153137101" ID="Freemind_Link_444857579" MODIFIED="1271154822132" TEXT="mandelbrot を測定"> <icon BUILTIN="full-1"/> </node> </node> <node CREATED="1271152623808" ID="Freemind_Link_1847789980" MODIFIED="1271152627326" POSITION="right" TEXT="cbc"> <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"/> <node CREATED="1271153429597" ID="Freemind_Link_627953940" MODIFIED="1271153430800" TEXT="xml"/> <node CREATED="1271153431277" ID="Freemind_Link_1317238745" MODIFIED="1271153461455" TEXT="専用のlanguage"/> </node> <node CREATED="1271154374673" ID="Freemind_Link_700065337" MODIFIED="1271154801325" TEXT="continuation をネットワーク越しに送る"> <icon BUILTIN="full-2"/> <icon BUILTIN="full-4"/> </node> </node> <node CREATED="1271152611017" ID="Freemind_Link_1716904506" MODIFIED="1271154668916" POSITION="right" TEXT="c"> <icon BUILTIN="full-1"/> <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"/> <icon BUILTIN="full-1"/> <icon BUILTIN="full-3"/> <node CREATED="1271153732060" ID="Freemind_Link_1208701551" MODIFIED="1274782926740" TEXT="super dandy"> <icon BUILTIN="ksmiletris"/> <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"/> <node CREATED="1271153879020" ID="Freemind_Link_1114941689" MODIFIED="1271153880552" TEXT="simd"/> </node> </node> <node CREATED="1271153919146" ID="Freemind_Link_119460356" MODIFIED="1271154614151" POSITION="left" TEXT="many core"> <arrowlink DESTINATION="Freemind_Link_751477936" ENDARROW="Default" ENDINCLINATION="5;-54;" ID="Freemind_Arrow_Link_1578496781" STARTARROW="None" STARTINCLINATION="-93;-437;"/> <icon BUILTIN="full-2"/> </node> <node CREATED="1271154512690" ID="Freemind_Link_993715285" MODIFIED="1271154642774" POSITION="left" TEXT="test"> <icon BUILTIN="full-3"/> <node CREATED="1271154529145" ID="Freemind_Link_1077511388" MODIFIED="1271154536444" TEXT="task 単体のtest"> <node CREATED="1271154546560" ID="Freemind_Link_99283433" MODIFIED="1271154552779" TEXT="入力の取得"/> <node CREATED="1271154553200" ID="Freemind_Link_1403723539" MODIFIED="1271154560827" TEXT="出力の比較"/> </node> <node CREATED="1271154538272" ID="Freemind_Link_617172359" MODIFIED="1271154575498" TEXT="task間の同期"> <node CREATED="1271154577102" ID="Freemind_Link_467596986" MODIFIED="1271154587209" TEXT="実行可能な状態の集合"/> </node> </node> <node CREATED="1271154195395" ID="Freemind_Link_950358459" MODIFIED="1271154658269" POSITION="left" TEXT="cluster"> <icon BUILTIN="full-2"/> <node CREATED="1271154281230" ID="Freemind_Link_1279933054" MODIFIED="1271154299465" TEXT="task queue message passing"> <node CREATED="1271154310869" ID="Freemind_Link_791415331" MODIFIED="1271154317632" TEXT="xdr"/> <node CREATED="1271154320244" ID="Freemind_Link_1057940637" MODIFIED="1271154324928" TEXT="message pack"/> <node CREATED="1271154326516" ID="Freemind_Link_491852741" MODIFIED="1271154339630" TEXT="protocol buffer"/> </node> </node> <node CREATED="1271154447381" ID="Freemind_Link_934362224" MODIFIED="1271154455456" POSITION="left" TEXT="member"> <node CREATED="1271154457869" ID="Freemind_Link_1375011247" MODIFIED="1271154492855" TEXT="yutaka"> <icon BUILTIN="full-1"/> </node> <node CREATED="1271154460644" ID="Freemind_Link_1907487683" MODIFIED="1271154496342" TEXT="kaito"> <icon BUILTIN="full-2"/> </node> <node CREATED="1271154475020" ID="Freemind_Link_1436135377" MODIFIED="1271154498806" TEXT="koba"> <icon BUILTIN="full-3"/> </node> <node CREATED="1271154780619" ID="Freemind_Link_1416914098" MODIFIED="1271154791885" TEXT="ryoma"> <icon BUILTIN="full-4"/> </node> </node> </node> </map>