Mercurial > hg > Papers > 2012 > yutaka-master
changeset 23:02067287fac3 draft
add file
author | Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 12 Feb 2012 23:01:44 +0900 |
parents | fe88829c8fe3 |
children | 716f0a413687 |
files | presen/pix/scenegraph1.graffle presen/pix/scenegraph1.png presen/presen1.html |
diffstat | 3 files changed, 1166 insertions(+), 56 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/pix/scenegraph1.graffle Sun Feb 12 23:01:44 2012 +0900 @@ -0,0 +1,1075 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>ApplicationVersion</key> + <array> + <string>com.omnigroup.OmniGraffle</string> + <string>138.17.0.133677</string> + </array> + <key>AutoAdjust</key> + <true/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {559, 783}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>36</real> + <key>CreationDate</key> + <string>2012-02-12 21:25:18 +0900</string> + <key>Creator</key> + <string>金城 裕</string> + <key>DisplayScale</key> + <string>1 0/72 in = 1 0/72 in</string> + <key>GraphDocumentVersion</key> + <integer>6</integer> + <key>GraphicsList</key> + <array> + <dict> + <key>Bounds</key> + <string>{{352.75, 414}, {52.5, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>61</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 Collision}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{352.75, 397}, {52.5, 48}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>60</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{270, 397}, {52.5, 48}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>58</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 Move}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>60</integer> + </dict> + <key>ID</key> + <integer>57</integer> + <key>Points</key> + <array> + <string>{352.307, 379.293}</string> + <string>{363.349, 401.128}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Pattern</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>50</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>58</integer> + </dict> + <key>ID</key> + <integer>56</integer> + <key>Points</key> + <array> + <string>{322.56, 378.727}</string> + <string>{310.552, 400.291}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Pattern</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>50</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>50</integer> + </dict> + <key>ID</key> + <integer>54</integer> + <key>Points</key> + <array> + <string>{295.921, 281.47}</string> + <string>{320.743, 324.299}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>47</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>47</integer> + </dict> + <key>ID</key> + <integer>53</integer> + <key>Points</key> + <array> + <string>{239.365, 192.224}</string> + <string>{261.095, 228.372}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>55</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>48</integer> + </dict> + <key>ID</key> + <integer>52</integer> + <key>Points</key> + <array> + <string>{149.882, 281.894}</string> + <string>{126.476, 325.079}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>46</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>49</integer> + </dict> + <key>ID</key> + <integer>51</integer> + <key>Points</key> + <array> + <string>{180.921, 281.47}</string> + <string>{205.743, 324.299}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>46</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>46</integer> + </dict> + <key>ID</key> + <integer>24</integer> + <key>Points</key> + <array> + <string>{206.855, 192.347}</string> + <string>{185.082, 229.229}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>55</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{306, 320}, {64, 62}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>50</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 SceneGraphNode}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{191, 320}, {64, 62}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>49</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 SceneGraphNode}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{76, 320}, {64, 62}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>48</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 SceneGraphNode}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{248, 223}, {64, 62}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>47</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 SceneGraphNode}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{133, 223}, {64, 62}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>46</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 SceneGraphNode}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{191, 134}, {64, 62}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>55</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 SceneGraphNode}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>GuidesLocked</key> + <string>NO</string> + <key>GuidesVisible</key> + <string>YES</string> + <key>HPages</key> + <integer>1</integer> + <key>ImageCounter</key> + <integer>1</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>レイヤー 1</string> + <key>Print</key> + <string>YES</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>LinksVisible</key> + <string>NO</string> + <key>MagnetsVisible</key> + <string>NO</string> + <key>MasterSheets</key> + <array/> + <key>ModificationDate</key> + <string>2012-02-12 21:25:25 +0900</string> + <key>Modifier</key> + <string>金城 裕</string> + <key>NotesVisible</key> + <string>NO</string> + <key>Orientation</key> + <integer>2</integer> + <key>OriginVisible</key> + <string>NO</string> + <key>PageBreaks</key> + <string>YES</string> + <key>PrintInfo</key> + <dict> + <key>NSBottomMargin</key> + <array> + <string>float</string> + <string>41</string> + </array> + <key>NSLeftMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSPaperSize</key> + <array> + <string>size</string> + <string>{595, 842}</string> + </array> + <key>NSRightMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSTopMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + </dict> + <key>PrintOnePage</key> + <false/> + <key>QuickLookPreview</key> + <data> + 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 + mrGOu73fcqk7TcKJ9p3cYI0QylbT9A1Ik72ANh8ncoVvbA80R3rjcIUMuXGrDW8FDYy1 + z3IjdJqjrTzZ6XHkSQQ0VzwBbpFcWnhCuEWPSt4i8WnnyfDtoH03M0RDeaL2Jk8IC7HH + PBmZcaYtWODMeIdpccKk2dkfT3Eho3gNaSZWnABhHK6jCpZGnYXfSvLEUlozejpjSkTl + xVy4dIRGvvRGTUhDQnWk9aMBg7CnWCki8UCxfdNOlDVH3p07SDVF9XAuleivjHZsAcbu + Ax0xilTmA/xWGVv5p8DBw0p0NaBr6xsObiJtxMtQaz4bii7QyTLBKWFLHVjhBNupgW+J + Jbnh8MG3rjiiSySGuUQggp854EAyH/DlUfsuPGM+Jop4UyGGULaqWRSH2GkD1CwwK9hF + yFazUxsB7gB5PBDhGkj513AyAIGGSziqB5YPuP0XgIEUwNGJv0WAkXHCK4Jq4W7hQk8Y + a0WUH9RbxB3x3JYLSjeud/AO6Iik4tGgNVibevRoVCrioj3YFzcqmOaDaLGP0JK1MSvH + EwbUxb5IZmwj9Uds8jb2RLGVuBIWo7hWNBLOAwSP1nHCk6h0EDyMIcLYMVzQSAl1iPwT + j1Uy4zKLngTPi6tgN4+B58RQfFQ0kLN0lAN7RUMk4iXHpi3s6VMYni8DdqqE2fldjdph + pnqcBidPVf/8hV+mfp9vYPv9j56QrkZ4dK9BnbnKvYTxdENNltxTAefe1MK1Ys895FBE + NkS/5l6suJq1NffoVoBCdJV7EdNpXLSxp7z4FIh51dLc07Ul08T+lGAjbmN7aoAnX8p+ + frISNOecCjjneP0ldwQFyTDxVCUThTXnGAXLOaeCmXOCgvgIzCfCS84JCpJz4uXX5RyO + 4ScSjlrMp95GX3O+SeI9suTx5bxO/Y8lX+Q3+RpPtvRSu2fpD38AXy2EOgplbmRzdHJl + YW0KZW5kb2JqCjYgMCBvYmoKMjM2MgplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFn + ZSAvUGFyZW50IDQgMCBSIC9SZXNvdXJjZXMgNyAwIFIgL0NvbnRlbnRzIDUgMCBSIC9N + ZWRpYUJveCBbMCAwIDU1OSA3ODNdCj4+CmVuZG9iago3IDAgb2JqCjw8IC9Qcm9jU2V0 + IFsgL1BERiAvVGV4dCBdIC9Db2xvclNwYWNlIDw8IC9DczEgOCAwIFIgL0NzMiA5IDAg + UiA+PiAvRm9udCA8PAovRjEuMCAxMCAwIFIgPj4gPj4KZW5kb2JqCjExIDAgb2JqCjw8 + IC9MZW5ndGggMTIgMCBSIC9OIDMgL0FsdGVybmF0ZSAvRGV2aWNlUkdCIC9GaWx0ZXIg + L0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AYVUz2sTQRT+Nm6p0CIIWmsOsniQIklZq2hF + 1Db9EWJrDNsftkWQZDNJ1m426+4mtaWI5OLRKt5F7aEH/4AeevBkL0qFWkUo3qsoYqEX + LfHNbky2perAzn7z3jfvfW923wANctI09YAE5A3HUqIRaWx8Qmr8iACOoglBNCVV2+xO + JAZBg3P5e+fYeg+BW1bDe/t3snetmtK2mgeE/UDgR5rZKrDvF3EKWRICiDzfoSnHdAjf + 49jy7I85Tnl4wbUPKz3EWSJ8QDUtzn9NuFPNJdNAg0g4lPVxUj6c14uU1x0HaW5mxsgQ + vU+QprvM7qtioZxO9g6QvZ30fk6z3j7CIcILGa0/RriNnvWM1T/iYeGk5sSGPRwYNfT4 + YBW3Gqn4NcIUXxBNJ6JUcdkuDfGYrv1W8kqCcJA4ymRhgHNaSE/XTG74uocFfSbXE6/i + d1ZR4XmPE2fe1N3vRdoCrzAOHQwaDJoNSFAQRQRhmLBQQIY8GjE0snI/I6sGG5N7MnUk + art0YkSxQXs23D23UaTdPP4oInGUQ7UIkvxB/iqvyU/lefnLXLDYVveUrZuauvLgO8Xl + mbkaHtfTyONzTV58ldR2k1dHlqx5erya7Bo/7FeXMeaCNY/Ec7D78S1flcyXKYwUxeNV + 8+pLhHVaMTffn2x/Oz3iLs8utdZzrYmLN1abl2f9akj77qq8k+ZV+U9e9fH8Z83EY+Ip + MSZ2iuchiZfFLvGS2EurC+JgbccInZWGKdJtkfok1WBgmrz1L10/W3i9Rn8M9VGUGczS + VIn3f8IqZDSduQ5v+o/bx/wX5PeK558oAi9s4MiZum1Tce8QoWWlbnOuAhe/0X3wtm5r + o344/ARYPKsWrVI1nyC8ARx2h3oe6CmY05aWzTlShyyfk7rpymJSzFDbQ1JS1yXXZUsW + s5lVYul22JnTHW4coTlC98SnSmWT+q/xEbD9sFL5+axS2X5OGtaBl/pvwLz9RQplbmRz + dHJlYW0KZW5kb2JqCjEyIDAgb2JqCjczNwplbmRvYmoKOCAwIG9iagpbIC9JQ0NCYXNl + ZCAxMSAwIFIgXQplbmRvYmoKMTMgMCBvYmoKPDwgL0xlbmd0aCAxNCAwIFIgL04gMSAv + QWx0ZXJuYXRlIC9EZXZpY2VHcmF5IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh + bQp4AYVST0gUURz+zTYShIhBhXiIdwoJlSmsrKDadnVZlW1bldKiGGffuqOzM9Ob2TXF + kwRdojx1D6JjdOzQoZuXosCsS9cgqSAIPHXo+83s6iiEb3k73/v9/X7fe0RtnabvOylB + VHNDlSulp25OTYuDHylFHdROWKYV+OlicYyx67mSv7vX1mfS2LLex7V2+/Y9tZVlYCHq + Lba3EPohkWYAH5mfKGWAs8Adlq/YPgE8WA6sGvAjogMPmrkw09GcdKWyLZFT5qIoKq9i + O0mu+/m5xr6LtYmD/lyPZtaOvbPqqtFM1LT3RKG8D65EGc9fVPZsNRSnDeOcSEMaKfKu + 1d8rTMcRkSsQSgZSNWS5n2pOnXXgdRi7XbqT4/j2EKU+yWCoibXpspkdhX0AdirL7BDw + BejxsmIP54F7Yf9bUcOTwCdhP2SHedatH/YXrlPge4Q9NeDOFK7F8dqKH14tAUP3VCNo + jHNNxNPXOXOkiO8x1BmY90Y5pgsxd5aqEzeAO2EfWapmCrFd+67qJe57AnfT4zvRmzkL + XKAcSXKxFdkU0DwJWBR9i7BJDjw+zh5V4HeomMAcuYnczSj3HtURG2ejUoFWeo1Xxk/j + ufHF+GVsGM+Afqx213t8/+njFXXXtj48+Y163DmuvZ0bVWFWcWUL3f/HMoSP2Sc5psHT + oVlYa9h25A+azEywDCjEfwU+l/qSE1Xc1e7tuEUSzFA+LGwluktUbinU6j2DSqwcK9gA + dnCSxCxaHLhTa7o5eHfYInpt+U1XsuuG/vr2evva8h5tyqgpKBPNs0RmlLFbo+TdeNv9 + ZpERnzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+G7Z+XD+l5/VB/TwJPa2f0a/o + oxG+DHRJz8JzUR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHytFtkkf0PQBn9ZgplbmRzdHJl + YW0KZW5kb2JqCjE0IDAgb2JqCjcwNAplbmRvYmoKOSAwIG9iagpbIC9JQ0NCYXNlZCAx + MyAwIFIgXQplbmRvYmoKNCAwIG9iago8PCAvVHlwZSAvUGFnZXMgL01lZGlhQm94IFsw + IDAgNjEyIDc5Ml0gL0NvdW50IDEgL0tpZHMgWyAzIDAgUiBdID4+CmVuZG9iagoxNSAw + IG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvT3V0bGluZXMgMiAwIFIgL1BhZ2VzIDQgMCBS + ID4+CmVuZG9iagoyIDAgb2JqCjw8IC9MYXN0IDE2IDAgUiAvRmlyc3QgMTcgMCBSID4+ + CmVuZG9iagoxNyAwIG9iago8PCAvUGFyZW50IDE4IDAgUiAvQ291bnQgMCAvRGVzdCBb + IDMgMCBSIC9YWVogMCA3ODMgMCBdIC9UaXRsZSAo/v8wrTDjMPMw0DC5XDAwMCBcMDAw + MSkKPj4KZW5kb2JqCjE4IDAgb2JqCjw8ID4+CmVuZG9iagoxNiAwIG9iago8PCAvUGFy + ZW50IDE4IDAgUiAvQ291bnQgMCAvRGVzdCBbIDMgMCBSIC9YWVogMCA3ODMgMCBdIC9U + aXRsZSAo/v8wrTDjMPMw0DC5XDAwMCBcMDAwMSkKPj4KZW5kb2JqCjE5IDAgb2JqCjw8 + IC9MZW5ndGggMjAgMCBSIC9MZW5ndGgxIDEwMjU2IC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl + ID4+CnN0cmVhbQp4Ab1aeXxU1b3/nbvPksmsmT0zN5OZSTLZAyEhkYwhC1tiICoJEk0C + gYBQI4RYbOFFZZGI1BUQbCtaWbUMIYUBCqUUxL62itZCRftqKy5dUtv30NcCmXm/cyeJ + kGf78Q8/vXfO8jvn3HN/53t+5/f7nXOne9mKDkiCXmChYU5b1wJQrsBjAKR33tK2rgRt + oknvvJ5ub4LmMwDYJQu6Fi5N0NJTAGr3wiUrh5837QYwfrOzo21+oh6uYVrciQUJmozD + NL1zaffXE7RxANMZS+6ZN1xv6kU6Y2nb14ffD+8i7f1a29IOTPEKLMEoveue5d0KCYF0 + TKd0LesYbk+akL/XgWCpCe4BFdwNIjCgx7sFQPxY7QYOa2k9XvOzNU/elVz+KRgkhb6r + 7ltK+or8w/N/77gW1Dwu/QMLVCPtaSpkxjIBtATrBzWPj9Yoz2FkikJjKApTMVRgGI8h + FLrZBr1kJzyG4TkMLCwij8BKDBswPIOBG83tQeoIeaSfk8JHyUpwkGlhDee51Wz32NQa + z5tRIgx8x/O27f1jxI6z9zti708C1c1q8hz5LswHD3kR/OR+mAIZZNvBzCWeVqzaA10Y + ejGwSkzInv7UQs8Jkg1+juAzAUjlyCHPRwU5ng8Kogzp95wKRjlMfpyKVDjZc9L9Hc+P + 3As9JzDsS1TtzcQWhzx73Es8T6ZGybZ+zxPuKMFnHk8kK9z46CHP0szNnvkFSv2MzVFm + X7+nFOtvD2s8xSWyZ7z7kicvGJUI0jnuGZ6sgl940vFBbObFTv1hg8flftIzEatS3dXB + iRiOkb1kO2SR7f3+aZ6jmMXhHpyaWbI5Sr5xcEpGgT9K7g8XT8nYnDkl6M+c4fFn1gSD + mL/9VXGNeId4s1gohsQMMSDKolM0S0ZJL+kkraSWJEmMkpf6KzzCMbIPKhCWfQclQeKj + 5PtYyB0jLyuFLx+WOImRQDJH4++h8BIwR8m+AT3NYeaQoOSEKHn5YKLo5bCHozlOqdAz + NI8RxsAQiYFpECGPRgVYm9JTYaswTjKU1lT9s6hVqRmJQ//8shF3ZPP0xqbIXndzpJBm + 4u7mkea2kcw/TbtXYFVHZSg0fdbKgz1dixdUd/iqW33VHRhaI4/0dNoive1e74HFXbTC + G2EDre3zOmna1hHp8nVURRb7qrwHepTnxlQvoNU9vqoDsKD61qYDC8IdVf094Z5qX1tV + 88H2ymUtN7xrw+i7llV+wbsqaWfL6LvalefGvKuFVrfTd7XQd7XQd7WH25V30cFXL2qs + XN6N0umtXjTdG8lojEydOacp4m1rroqSnVhYtQL4k6Dnj0MG3wsOLg88APG3MVykaey2 + +If8WdDHlsb/xpbhpB6hgYlVlMNJeBS2w34QYDfmM+BO2Ao/JYtxbc+FAThPUiEXdS8H + UZgBPyfx+BuwAL6H7bvhFDwNB0CLzywFC9ZuIv74/UiHMd8Oa+LPQzqUwDo4DqXY6yYY + jO+JH8TaWXAb7IV9+PzPiI85wJni349fAglmYp9rsOaN+Iz4fjBCNlRCA5augRPEz16M + d4INypC7Z+G7sAN+DH8mD5KBeGe8J34u/jsUVRu4oBHvVWSA/I7dz62LPxv/YzyGSGRA + Fr61FZ6EF7D//XifRNVaTe4m3eRJ8jQTZh5kBri1vDU2hDhkQi3eU1ArP4wIHIHT8N/w + D/IJY2P1bDd7Jj4+/j+ggek4SjqSDujBez3em3BMx4hA8slk0kBWkafI0+SXTBZzG9PE + 3Md8nfmQrWfnsivZX3LLuX5+I79V0MQ+jR+Ln43/CqzghjtgGazG0Z2Cc3AZrhAW+3IR + PykjleROvHvJduYI2UGOMA3kJDnH7CW/Je+TT8hVhme0jIUJMd3Mk8w+5hTzGruIfZp9 + hv0t+yk3iWf4HfwHgl98J9Ye2xB7LV4W/13876hiJZBxZiqhHu6CNhxtF4yD/8BRvIz3 + fpy103AGfqrc7xMXDMLfEQUgRuIghaQO73pyC1lAFpHvkKN4n1B4+YzBiWBUjIGxMi6m + kWlnljK9zK+YXtbJZrHT2DnsfrxfZc+zV9mrHM+ZOAtXy02FjdxSbhveO7ndXD/3Ol/K + T+Lr+dv5Xn4Dv5Gdx7/BnxdWC5uEfuET4a+oFmeI94gbcXZ+ijL7Y5Tlzy+OpCP3hfA1 + mEeqSDtsxtnYQdqgD6VrPnkY8eqCjHgLu5qtZfJRGk7AN1Bat8Eq2MDOhR3xX7N74QJK + CrXfvbCLqwQ3vwVn50HIRykavsOZWZkZwYA/3Zcme1Hlu5wOu82aYjGbjAZ9klajVkmi + wHMsQyC72lfT6o0EWiNcwDdlSg6lfW1Y0HZdQSsuZW+k5sY2ES99rg2rbmgZxpYLxrQM + J1qGR1sSvbccynOyvdU+b+QXVT5vlMyZ2YT5R6t8zd7IoJKvU/KPKfkkzMsyPuCttnVW + eSOk1Vsdqenp7KturcrJJkfCCIc6J5sqjjBoaMcRmNy2ChUsTKYtqiMOX1V1xO7DPNax + /uq2+ZGGmU3VVU5ZbsYyLJrVhO/IyV4UQT7hEe183/xHomFob6W5trlNEbatOcK00r4M + oYjVVxWx3v+B7XNyJFe98brKCOOvaevoq4mEWx9BcCnZSqm2jUhNb/Rit8za5qYIWTvM + BOVxMXJK2U3YBH/rYm9E5av0dfYtbkVwYVZTvyPsUJRvBBqa+u1hu0LkZB+xrS6TcfRH + cm7OuZmmZbJtdSL96KFE+ZsnaWpbffo9TKfPGgWAUAR8U5HPiHee8hIfMltCo44S6JtX + gjjh1UxwmIuQn8kRBmWG9Ud4/9S2SG/jCBudVQnmWhdX9avsDsUIVTZj+9Y+/UScKWyv + 93n7PkVr3eob/PONJW3DJYJf/ynQSjrRo7ISIW0j+R5qLP046k6br5POb48yp0j7bNXX + FSBNoaE8R8xowBua5Ii3GQvQm8yeHgVVQ9MBQjY1R0l8bRSq3EfQR2XvuhOrs6moLarC + 9yORk40FWTLmcrO9NfjmGior3j5v39T5fd4abycKE+dXUqzo6GvOQwQbmxAnuBXfGG52 + jmY7mpsnYj95tB98BJv3NWMPi4d7wFQpyhvCRvnZaEzZQEPTzKZIb5UzEq5qxllA8T3Z + 0BQ5iZLb3IytCkY5RY5XLbIN81yIPBdkYX1Rohf0XXqxi+a+PtpnY5NPjpzs63P20fWW + oKMExhaEhwuiQJtQyKOktwGfxcQnO5U5kH0ystVMMR2HIj0iUeiz/2uEi0f5xicnILfF + CsIlXxHCpV8G4YlfCuGyUU5vQLgceS6jCN/070N40g0IV/xrhMOjfCOTNyO3YQXhyq8I + 4clfBuGqL4Vw9SinNyBcgzxXU4Rr/30IT7kB4an/GuFpo3wjk9OR22kKwjO+IoTrvgzC + 9V8K4VtGOb0B4Qbk+RaK8Mx/H8KzbkC48V8jfOso38jkbcjtrQrCt39FCM/+Mgg3fSmE + m0c5vQHhOchzM0X4jlGEw84IXK+He8eoXfjKFfPc6yBHT4k3QiXut+YIpTBP2AtbMP8s + fzu0csthFm6yyzAtwTAFwxpyVgkbaB4Dreth9sIGbFeJQYPdjZwDaXF3sgzpyeip47Zc + uZjhlCYs7tNGLn4k8wWpgGUi+v8qpU6tvAOPipBKAh0kY6oHg1JnVOJxcJosIX9n6lkH + e4lbwL3JP8v/WXAI5cJWUS8+KL4q7VZNQse/EoA7h3tQFnuvSJwvSXnoBGCQ9FGAcxgo + jXn23ShwGADz4rtwFJ8AuD10FHvhMc0vKDLIhiCGSm5T9Nrv+eNXJke5uqt4VoEt5sQv + 8vfyH6BXngoHwmVOfgvZzLMe4uEeJOv5DSa+UWLXuQ0GizDRzWonWlSpTGqqnS1gyvQF + BodXVWC3e7w75MUL8ISh/nLdYL3+s7rBy4PG0jyoqBisoBn9YEH+5JXhieCy+k0Bnd8Z + 0KSoCiHJrC8kRkOyXnQhxQNbSAjDsWqbthCSjRhJDqGQcAQjum8n+nJ9eSiUiGnBAy2k + RSJWXy7xpYFBbywqnFA8oUgQBdkbDBj0E4plH5dKxhlOyWf63459+rdP3l1+U+opxxP7 + Yxfi8P0PXjpKajP4D2IXj23aGXs9diYWi/1oT/PjH3/7+PZfkJdI9bnfK/jMi79N93yQ + Bj54IzzJKawjaxnWTTz8OrLBdcjLh6VkzpLC6pemrE5hklMMSdy6NL0h1WQ0WsSJaaxF + SproUPkYn49NNUbJ9LCe5QrYMr3f5PCrC1Lt6Xh4tfCgvLjrBvyG9IOGEQgVDMuHypWi + 0haCFaXGUgXSbKcMWpffGyB+rVONiMkYCcAVEoblOY07qRBUHrGQ8AxGeCY5AqICH8UP + rCmmUQDlwnSTPF42+IIIom8ExCD74ZZ3Cs6k//6ln8f+8CHhzhKejY1j1vbmd9Q/9J+x + qz/8xasnSK7Mv9+wPPbejidjr8XeiF2JHf6IMC9e+8vxe0LT9rxFlpF7L56jq4vAFjxN + taJcm+Bn4eYqMp1lBKJiU4idvUB4E3GxZo1TO5s0sW+Rd9i3NO9o1ZyaS6pm1jHcTGYL + w2SqM5JK1CVJtcxspocR/fOT1AxrZAmj0RpZQbJYrQ6OwwO87eEktYfVCENawgwleRD6 + 7YdMYDf3IND1+svldUOX7JdLS/FnuzRUXq+v7qj6ECqs5RXlRmspHoEdSNJGyd4BhjBq + DWb6GYZdz9fl3j/ErTq9nk+kBfnQsuxesqzlXpOsIgicYVzxeOIjFnOKxeDbQtxkJ3mB + OI5zsZYzsTn8Cf741QB38cpkdl7OufuuZnIXcop/M+7atxU5exY1XRbiogI19ITNE0iJ + wIjESoKkljQxvEgYhg7KahQEkRElHDAeVKpZtZoIEsPSuh/wnEMrSrSVWgV2jfY5mQ4W + VyUOFkf4GU2o8ChLkw60tJRbnxtav+oMHQhpMRURQ5HBR/D37J+YD4//dij5BDMRmZ7D + 7bwymXvx6h3IH9UZrfFfcZ/hmsjDfXwsfGdmctAXCBTrxsu1gfbA/br70lV3Szad1c80 + 6zp1e9NYtW5iWnqamuVctnXmvLyQa6KZ5SaGVPmMWicZ0tM8Gfn5BpvfOlXyZzgKPX7D + VPDn2QsKn5MXbxheFpevUyxGAy4ADNcpGANOWu5QUcu9yrKoy8g1eEBiAkwgxy/4HQE2 + G0KQk6skfJYUIm6TJwROiy1E7DaSw4VAFdSEiF9DcjEvZmKUanRhZQpGdN2E9Hpl8ShZ + 1EL0euCBBxC1FGsKVTzjxwUDeSQQDIwfl15UyFl8mPWlCRazNcVD21jMHF1REwhJFcfN + u9I1t3/6jOfP/mTmRmK8+hGZfCy54I6LkW1zys699vTMjbFv/yn2l+3bWaaOXFxV/4R3 + 0nNfLyr052SPn3v4ldhvP+2pWP5U+5JCb35eWtnC05ff3PjIXzg0bSzMir+rnAAl49le + OfwmXJKVT9R6XE+uYNEU/SLVYr1YKhm1KtZZKKar3HqtuyzE5GaWHS5jygqz/Ea9yEuu + YJrVFSV9YZ/V7RGD7lwN4x6vKRfLy11mMTNrd7pjkjPTNS05WGK/adIPyRY8+DpCNsMN + 03Rp6PSI8kILgCaATk8Lil7uYO4g1V8Ga0J/ZRRPsKQBsftJcbIMtlRUZyles0zkNJjA + yOBwW2VikTEa1l2fw96SrsB+E9GRZILqykKK6SQg5qIg+iaRokLE3GDGRvgKHVqIYCBI + E5yf4gkmoltWf1fzZrmzcGl7QSMZmGTRPnT/o2Wyejf/vy8c71lh9WtTDVnZgZasFNWE + 17759PGjW/pen5M9defjFpegS3LlLSRLpGxbztzGGVmNr2yfMmXr0BZXGsuu1QqVvvCU + xT94+OnvmcglulbwhJA9x9WDA5ywK5y3y0622nZLe23sNMmw3cyyZsHtEJPcqPVEp9Oq + DxoJG2QMDrc6aLW78LOJeFBetupz21BeN1ha+kXWdRzYJb/Wog6AzqQPJOyqHSm0q7Ji + VzUpSQG0qxipbEKA2lX5C+wqFekWSElYVYQ1gWARhY4Zr4cikTn/vnW/ftnql6blP/xE + 10P2/al/PfbmFWJ8y8XVRy7Me2j30ud2vLvhvl+dIUUf4vHmRB4xKIlfZAf5U+gbueG+ + cOEEXa1utm4Xt8fJ+yUzk+zWg+R2iyY147Zq+FxTrj7TYHR4NEGHPdWzXl5Wef3why5d + AvQr8GcoNSSkyGFzqdRAiE2DY3NhBHYmAGqnFMAB4k9ZqEYqCoqACBa0elaq6cbTYcH4 + ccaiz57YsWrHzvsf3kP6GvNvevn5ipfuORi78sl/kbs+vvDTn/3k3H8yE8alTmfcVyY9 + Pa+J5Fz5I5mN621K/CLnwBNXF57O+4k2vHKL9Ixjl4fldUwyb7bojMkWc1gbNkuZDjJd + c4g9S15hzzp/Lb2tOu/5te9j68c+zVnDWSMzV+Ll9ORtKe70UkEUU2S3S1S7UzR+cYtr + l+uw64KL86ck+128Xa0VDbpgsjvIO4LpuWLQbg8E35J3tiQAGrqkOF9vDaF7gEuOegl5 + LaNKcsSDUDRkDfg4nsXjbMJzgge9JaPepDfrOUHrT3OmB8AL7gBJdausYgA0Fl2AJOl8 + DhmLeIwkG8pVkh4jRTWiY0bdMlybWaGsB8i9LXBvCxUhqvXkVFyJ1C3TEVyXguKoQRHV + k6gc0aYNnC8pNuqvfcI/tuXRW/PNB8RbCmatvHnWq7E/EtvviUeTMe3lb+7miY+rvfu2 + mUumPf/CmZbi2rLHcxtcerSzAmFIZSywoubBg32EfjRG/2INKkIqaynQGM5GNCWraJWC + XNC0QlwhSaYkxmQBMLgF0aJVJ2WqHTZiyYQUu9WGX1kPyu0JWRs2mHWDUFGuSFopoR4X + oIk0oJ5JKBe09gkdb/CtGQgXzX7wD405R1IL1ncdGuBPDb07Uy59ofk7QzOZF3omNG07 + P/Qq5Y+h/JEytKPUry8Ou8QPOGRaYNUqdFxwPJkiiwtZtfdzTk4PlZ+uT3gnyEwd+tLI + hM9QZPGtOYwXl3X1PH/858rYN2DfNyl9Z4ZxlKyax06xT2DtHH9dl+gNDHeY6GzDwADd + FIzwxw6iTNtRY90ZLjgsnBUYTjALQXOP0C3yZi1jtundvAiCTaN2iA4HaDNVDhfJtWXa + we5E03EDjAmRTFiDcly1aLaHoaT+hmVEUQ9jiTKiI+g6kTX7ZuztvNSQfdidvzqcOa0k + xzlAdnF5W++c9d3Zz1NM28vnJ6VUjr930dDryCyiWRZ/m5NRz2rx25UdHgsXbZU2659J + eZHbLe3U70mJSq9KF7gPdH8waydKgtsmat1GjV202y1MMNnhVAUtdoczSlSobYdXU8Lh + GLVjCX8brFxAY1Kh5BuYABGtmOOTMKc2awNA9BhJKahcWR1G1FgpUQiVarqRegiKR5BS + ZMTtCoM2LqFQ31ubP+Poi5s3v4AfCK/F/vc3sWvE+JHQTZJ3br7zqWv9+y6xF2N/jl2O + DcW+T0LX0OCFqU7tid3G+XHoOtyZdIez90i7rEyG5HUZdILbIiYLOrdLk6ZjgjZHujpX + nytnpiXbfenr5eOJ4VH/NzE3ioKgEzO8p3ClOIF3BLgAOHFgfApGxK4LAGtVxqSMiHo+ + 6YrPQ+0tdXKKSJFFWRn40YauczS3Bh/zyi5/zdFj1X6MY7n7i8N3fONQ7HD3tpWz8ssG + Vv7yzd65B47N3/bN2TvZA5umZpTH/oBjfH7zXeNTpw79hq5llGfmCa4W98+3hANBNpA0 + ga3lOJ2kZ3Qqg0oblKgYGtSSw0SozQC70RQl1biKVysKkY6xXo9efUVdxemh01QjUucj + sY4V0UuxWnLRBAgochv2Wb53N29z6536h58Y4PKOFG9n2BMss3/Z0Fa6bivjF9hD3HT8 + gptHcsPfKlFt5TcbnzFvtWzNEjLS/cFiuUauTa8N3p4+O7ggfWFgpXZl0kpdj687vdvf + HdiZujvbxKIq5XO4XBM4LE6ry2bJMedmJGsWSQF/sZ/xpyWpuZDJ9orLbRI5d+62kCZP + VOn0jAh5cp7DY0uxBa2TMgJiMMNRoPME9ZMgmGvPL+gf1f+Dl4dKqQUYKtVjjg63NA/j + YU+ZemLUD0u4yDNIDhOwoGss6zwyqPCvEQS9Yxn3IJhzG7HMabbJxJucJoOcpkuSgmqZ + BPwqNXrLMv4fBqNUg0umHnLCO0tszJXdeULoFV8NWui+QvGRr3eRFQ0q/n8fGQUnECSf + SP6q3fO33hRc/q0NN3e/c+S/757M7OUDk55ZsKg6o/6+U5WL3v6vT86K5DBpmJM/e/Yd + 1eloOdOypj6w9Yeb5nTeVFhbH67JspvcednVT33r3NvPMf9AWaIO8h+5PEAdG86tJGcI + Awuhk+lkFwrruYf5XbCbkfBLNVPNTePXcRv4s9yrvDQ1Y3kG3VGhWlhIZQr3hdF41wAa + TS8XJQ8dZtmlRtwh4nbzoXCqICzFIx7CCxxLcMfNCizgd0u1hDqY3c8cJVTzrzlI9gt2 + e/1lW93Qe+8N2RU9bKNWxorbMSqdxlKxLjekr79UJyaS0PSZK8N+JtPIshxk4vYPbfYN + neOZyX4ePu+3tHSotHRMz7yoD+GvIJ+aZ9yuqkgR2s93SSoJnYktORlbweVd28p2Xn0D + ERo+BYt34Pf4L7ro38MC+PU2HwqgGKqgRvnCT7/h34L/MJiF/xq4DW6HZmxF8J8HibM1 + AU/BYE7TjIY5c0JTOpb0dHQvmtemtBh5w62YacXQhaEXw2MYnsMQwXASwzkM72H4K+0W + gx6DF0M+hjCGBgytGLriwxfgNZoneM53I107hq4bQ9ePoRvH0JT76/ufN4aeP4ZWsLyO + n84x9YvG0PSb+fX9f20Mfc8YumsMTc82r39++Ri6h9L/B1VpacYKZW5kc3RyZWFtCmVu + ZG9iagoyMCAwIG9iago2NjU3CmVuZG9iagoyMSAwIG9iago8PCAvVHlwZSAvRm9udERl + c2NyaXB0b3IgL0FzY2VudCA3NzAgL0NhcEhlaWdodCA3MTcgL0Rlc2NlbnQgLTIzMCAv + RmxhZ3MgMzIKL0ZvbnRCQm94IFstOTUxIC00ODEgMTQ0NSAxMTIyXSAvRm9udE5hbWUg + L1pYTFBaWitIZWx2ZXRpY2EgL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDAgL01heFdpZHRo + IDE1MDAgL1hIZWlnaHQgNjM3IC9Gb250RmlsZTIgMTkgMCBSID4+CmVuZG9iagoyMiAw + IG9iagpbIDcyMiAwIDAgMCA3NzggMCAwIDAgMCAwIDgzMyA3MjIgMCAwIDAgMCA2Njcg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NTYKMCA1MDAgNTU2IDU1NiAwIDAgNTU2 + IDIyMiAwIDAgMjIyIDAgNTU2IDU1NiA1NTYgMCAzMzMgNTAwIDAgMCA1MDAgXQplbmRv + YmoKMTAgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNl + Rm9udCAvWlhMUFpaK0hlbHZldGljYSAvRm9udERlc2NyaXB0b3IKMjEgMCBSIC9XaWR0 + aHMgMjIgMCBSIC9GaXJzdENoYXIgNjcgL0xhc3RDaGFyIDExOCAvRW5jb2RpbmcgL01h + Y1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjIzIDAgb2JqCihNYWMgT1MgWCAxMC42Ljgg + UXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoyNCAwIG9iagooRDoyMDEyMDIxMjEyMjUz + OFowMCcwMCcpCmVuZG9iagoxIDAgb2JqCjw8IC9Qcm9kdWNlciAyMyAwIFIgL0NyZWF0 + aW9uRGF0ZSAyNCAwIFIgL01vZERhdGUgMjQgMCBSID4+CmVuZG9iagp4cmVmCjAgMjUK + MDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDEyMzA4IDAwMDAwIG4gCjAwMDAwMDQ2MDEg + MDAwMDAgbiAKMDAwMDAwMjQ3OCAwMDAwMCBuIAowMDAwMDA0NDUyIDAwMDAwIG4gCjAw + MDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAwMjQ1OCAwMDAwMCBuIAowMDAwMDAyNTgyIDAw + MDAwIG4gCjAwMDAwMDM1NTIgMDAwMDAgbiAKMDAwMDAwNDQxNiAwMDAwMCBuIAowMDAw + MDEyMDM5IDAwMDAwIG4gCjAwMDAwMDI2OTIgMDAwMDAgbiAKMDAwMDAwMzUzMiAwMDAw + MCBuIAowMDAwMDAzNTg4IDAwMDAwIG4gCjAwMDAwMDQzOTYgMDAwMDAgbiAKMDAwMDAw + NDUzNSAwMDAwMCBuIAowMDAwMDA0Nzc4IDAwMDAwIG4gCjAwMDAwMDQ2NDkgMDAwMDAg + biAKMDAwMDAwNDc1NiAwMDAwMCBuIAowMDAwMDA0ODg1IDAwMDAwIG4gCjAwMDAwMTE2 + MzMgMDAwMDAgbiAKMDAwMDAxMTY1NCAwMDAwMCBuIAowMDAwMDExODc5IDAwMDAwIG4g + CjAwMDAwMTIyMTQgMDAwMDAgbiAKMDAwMDAxMjI2NiAwMDAwMCBuIAp0cmFpbGVyCjw8 + IC9TaXplIDI1IC9Sb290IDE1IDAgUiAvSW5mbyAxIDAgUiAvSUQgWyA8YzUxMmI2MjEy + YmNiMjJjNDA1YmY1MDIyZDdjZDNlMjI+CjxjNTEyYjYyMTJiY2IyMmM0MDViZjUwMjJk + N2NkM2UyMj4gXSA+PgpzdGFydHhyZWYKMTIzODMKJSVFT0YKMSAwIG9iago8PC9BdXRo + b3IgPGZlZmY5MWQxNTdjZTAwMjA4OGQ1PiAvQ3JlYXRpb25EYXRlIChEOjIwMTIwMjEy + MTIyNTAwWikvQ3JlYXRvciAoT21uaUdyYWZmbGUgNS4yLjMpL01vZERhdGUgKEQ6MjAx + MjAyMTIxMjI1MDBaKS9Qcm9kdWNlciAyMyAwIFIgPj4KZW5kb2JqCnhyZWYKMSAxCjAw + MDAwMTMwNDEgMDAwMDAgbiAKdHJhaWxlcgo8PC9JRCBbPGM1MTJiNjIxMmJjYjIyYzQw + NWJmNTAyMmQ3Y2QzZTIyPiA8YzUxMmI2MjEyYmNiMjJjNDA1YmY1MDIyZDdjZDNlMjI+ + XSAvSW5mbyAxIDAgUiAvUHJldiAxMjM4MyAvUm9vdCAxNSAwIFIgL1NpemUgMjU+Pgpz + dGFydHhyZWYKMTMxOTgKJSVFT0YK + </data> + <key>QuickLookThumbnail</key> + <data> + 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 + APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoB + oQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6 + AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oD + lgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wTh + BPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoG + ewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghG + CFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzA + DNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14P + eg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJk + EoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsV + vRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlF + GWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4d + Rx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1 + IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcm + JyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUw + bDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9 + Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8 + JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJy + QrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1J + Y0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1Bx + ULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BY + L1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AF + YFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6 + cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6 + pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQd + hICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+O + Zo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4 + mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj + 5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8W + r4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7 + LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bU + SdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE + 4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTv + QO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p + /br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAA + AAABAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2 + AACpQAAAUYAAADUAAACrAAAAJMAAABGAAABQQAAAVEAAAjMzAAIzMwACMzMAAAAAAAAA + AHNmMzIAAAAAAAELtwAABZb///NXAAAHKQAA/df///u3///9pgAAA9oAAMD2bW1vZAAA + AAAAAB5tAABXlAADcZvF5zuAAAAAAAAAAAAAAAAAAAAAAA== + </data> + <key>ReadOnly</key> + <string>NO</string> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>キャンバス 1</string> + <key>SmartAlignmentGuidesActive</key> + <string>YES</string> + <key>SmartDistanceGuidesActive</key> + <string>YES</string> + <key>UniqueID</key> + <integer>1</integer> + <key>UseEntirePage</key> + <false/> + <key>VPages</key> + <integer>1</integer> + <key>WindowInfo</key> + <dict> + <key>CurrentSheet</key> + <integer>0</integer> + <key>ExpandedCanvases</key> + <array/> + <key>Frame</key> + <string>{{576, 55}, {693, 937}}</string> + <key>ListView</key> + <true/> + <key>OutlineWidth</key> + <integer>142</integer> + <key>RightSidebar</key> + <false/> + <key>ShowRuler</key> + <true/> + <key>Sidebar</key> + <true/> + <key>SidebarWidth</key> + <integer>120</integer> + <key>VisibleRegion</key> + <string>{{0, 0}, {558, 783}}</string> + <key>Zoom</key> + <real>1</real> + <key>ZoomValues</key> + <array> + <array> + <string>キャンバス 1</string> + <real>1</real> + <real>1</real> + </array> + </array> + </dict> + <key>saveQuickLookFiles</key> + <string>YES</string> +</dict> +</plist>
--- a/presen/presen1.html Sun Feb 12 17:51:19 2012 +0900 +++ b/presen/presen1.html Sun Feb 12 23:01:44 2012 +0900 @@ -105,10 +105,25 @@ <li>ソフトウェアMailQueueの実装</li> <li>TaskをグルーピングするTaskArrayの実装</li> <li>明示的なDMAロードを隠蔽するMemorySegmentのAPIの実装</li> -</ul> +</ul><br> などの改良を行い、信頼性のある並列プログラミングフレームワークを目指す。 </font> +<li class="slide"> +<h1>発表構成</h1> +<ul> + <li>Cellの機能</li> + <li>Ceriumの構成</li> + <li>Ceriumに行った改良とその効果</li> + <ul> + <li>TaskArrayの実装(Mailの待ち時間の削減)</li> + <li>ソフトウェアMailQueueの実装(Mailの待ち時間の削減)</li> + <li>MemorySegmentの実装(アーキテクチャ依存記述の隠蔽)</li> + </ul> + <li>まとめ</li> + <li>今後の課題</li> +</ul> + <li class="slide"> <h1>Cell Broadband Engine</h1> <font size="5"> @@ -131,18 +146,22 @@ </font> <li class="slide"> -<h1>DMA転送</h1> -SPE は直接 MainMemory にアクセスできない。 明示的な DMA 転送命令を用いてデータにアクセスする。データは +<h1>Cellの機能(DMA転送)</h1> +<font size="6"> +Cell の SPE は直接 MainMemory にアクセスできない。 明示的な DMA 転送命令を用いてデータにアクセスする。転送するデータの条件として <ul> <li>16アラインメントに揃える</li> - <li>16byte の倍数のサイズ</li> - <li>一度の転送は16KB の大きさまで</li> -</ul> + <li>16byte の倍数のサイズでなければならない</li> + <li>一度の転送は16KB の大きさまでできる</li> +</ul><br> +プログラムが明示的にDMA命令を発行して、データ転送を行う +</font> <li class="slide"> -<h1>Mailbox</h1> +<h1>Cellの機能(Mailbox)</h1> +<font size="6"> PPE と SPE の通信には Mailbox を用いる @@ -154,22 +173,26 @@ <li>SPU Outbound Mailbox: SPE -> PPE</li> <li>SPU Outbound interrupt Mailbox: SPE -> PPE (割り込み)</li> </ul> -</ul> +</ul><br> + +</font> <li class="slide"> <h1>Cerium</h1> +<font size="6"> Cerium とは + <ul> <li>並列プログラミング用のフレームワーク</li> <li>学生実験での使用を考慮して PS3/Cell, Linux, MacOSX で動作する</li> - <li>構成</li> + <li>Ceriumの構成</li> <ul> <li>TaskManager</li> <li>RenderingEngine</li> <li>SceneGraph</li> </ul> </ul> - +</font> <li class="slide"> <h1>TaskManager</h1> @@ -177,15 +200,15 @@ <ul> <li>Task とよばれるデータ構造を提供</li> - <li>処理(単位は関数に近い)を Task で記述していく</li> - <li>定義された、Task の情報に沿って各コアに処理を割り振る</li> -</ul> + <li>ユーザは処理(単位は関数に近い)を Task で記述していく</li> + <li>定義されたTask は、Task 情報に沿って各コアに処理を割り振られる</li> +</ul><br> Task で記述された部分の、自動的な並列処理スケジューリングを行う。 <li class="slide"> <h1>RenderingEngine(1/2)</h1> -PS3 では Graphics Engien の仕様が公開されていないので、独自の RenderingEngine を開発した。 +PS3 では Graphics Engine の仕様が公開されていないので、独自の RenderingEngine を開発した。 Task で記述され、主に3つの Task から構成される <ul> <li>CreatePolygonTask</li> @@ -213,10 +236,15 @@ <li class="slide"> <h1>SceneGraph</h1> -ゲームのシーンを構成する木構造のグラフ。 +ゲームのシーンを構成する木構造のグラフ。各 Node がゲームのオブジェクトになる。オブジェクトには Move 関数と collision 関数が設定でき、ステイトパターンで入れ替える。 + +<p style="text-align: center;"> +<img class="scale" src="pix/scenegraph1.png" width="30%" alt="" title="At a Glance" /> +</p> + <li class="slide"> -<h1>Cerium の改良</h1> +<h1>Cerium の改良(Mailの待ち時間)</h1> <font size="5"> RenderingEngine を用いた例題で、ball bound, panel がある。(FPS = Frame per second) @@ -255,21 +283,18 @@ </ul> </ul> -ball bound では Mail 待ちが約70%と、稼働率が出ていない。<br> -panel は ball bound より処理の描画の処理が重く、その分稼働率が高くなっている。 -アムダールの法則より稼働率がでないとマルチコアの性能は発揮されない。フレームワークとしての信頼性が十分でない +ball bound では Mail 待ちが約70%、稼働率23%と十分な稼働率ではない。(panel は ball bound より描画の処理が重く、その分稼働率が高くなっている)<br> +アムダールの法則より稼働率がでないとマルチコアの性能は発揮されない。フレームワークとしての信頼性が十分でない問題がある </font> <li class="slide"> <h1>Mail 通知のスケジューリング</h1> +稼働率を向上させるために、Mail の待ち時間を削減する。<br><br> Cerium では SPE が Mail で 待ち時間が発生するタイミングは2つ <ul> <li>TaskList を待つ場合</li> - <li>Mail の書き込みを待つ場合</li> - <ul> - - </ul> + <li>SPE から Mailbox へ書き込む際の待ち</li> </ul> <li class="slide"> @@ -295,12 +320,16 @@ <li class="slide"> <h1>TaskArray(1/3)</h1> -TaskList は Cerium 側で固定長であり、ユーザは変更することができない。ユーザが設定できる TaskList のようなものが、TaskArrayである。TaskArray は複数の Task をグルーピングできる。 +<font size="5"> +Task毎に依存関係の解決のため、Mail を通知する。バリア同期など複数の Task が同じ Task を待つ場合にはグルーピングできる。 +Task のグルーピングを可能にするために TaskArray を実装した。 <p style="text-align: center;"> <img class="scale" src="pix/taskarray1.png" width="80%" alt="" title="At a Glance" /> </p> +</font> + <li class="slide"> <h1>TaskArray(2/3)</h1> 例えば TaskListのサイズが4, TaskArray のサイズが4の場合、Task が8個の場合 @@ -361,7 +390,6 @@ <th>67.6%</th> </tr> - <tr> <th>あり</th> <th>4.2</th> @@ -377,7 +405,7 @@ <li class="slide"> <h1>MailQueue(1/3)</h1> -ソフトウェア MailQueue の実装 +Task 毎の Mail 書き込み時の待ち時間を削減するため、MailQueue を実装した。 <ul> <li>SPE から Mailbox に書き出せない場合に MailQueue へと書きだす</li> @@ -385,8 +413,6 @@ <li>MailQueue に残っている Mail は TaskList のTask を消化した時点で、すべて書き出す処理を挟む</li> </ul> -Task 毎の Mail 書き込み時の待ち時間を削減するのが目的 - <li class="slide"> <h1>MailQueue(2/3)</h1> @@ -398,9 +424,9 @@ <li class="slide"> <h1>MailQueue(3/3)</h1> +<font size="5"> MailQeueuの効果 -<font size="5"> <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center"> <caption>ball bound</caption> <tr> @@ -457,9 +483,12 @@ </table> </font> +ball bound , panel ともに Mail 待ち時間が削減され、稼働率、FPS の向上につながった。 + + <li class="slide"> -<h1>MemorySegment(1/7)</h1> -CreateSpanTask では明示的にDMA転送命令を記述している。 +<h1>Ceriumの改良(アーキテクチャ依存記述の隠蔽)</h1> +RenderingEngine の Task内 では明示的にDMA転送命令を記述している。 <ul> <li>処理するデータ構造上の理由、Task内でのデータロードが必要</li> @@ -467,12 +496,13 @@ <li>他のアーキテクチャなどでは不要</li> </ul><br> +フレームワークとしての汎用性に欠ける。 アーキテクチャ依存の記述を隠蔽できるAPIが必要になった。 <li class="slide"> -<h1>MemorySegment(2/7)</h1> +<h1>MemorySegment(1/6)</h1> 明示的なDMA転送命令を隠蔽するため MemorySegment を実装した - +MemorySegemnt はデータ構造。LS 内のデータを管理する。 <ul> <li>一定のメモリを確保し、ハッシュで管理(LRU方式)</li> <li>API 内部で自動的なキャッシュを行う (サイズは任意に設定できる)</li> @@ -485,7 +515,7 @@ </ul> <li class="slide"> -<h1>MemorySegment(3/7)</h1> +<h1>MemorySegment(2/6)</h1> <p style="text-align: center;"> <img class="scale" src="pix/getsegment1.png" width="50%" alt="" title="At a Glance" /> @@ -493,7 +523,7 @@ <li class="slide"> -<h1>MemorySegment(4/7)</h1> +<h1>MemorySegment(3/6)</h1> <p style="text-align: center;"> <img class="scale" src="pix/putsegment1.png" width="50%" alt="" title="At a Glance" /> @@ -501,7 +531,7 @@ <li class="slide"> -<h1>MemorySegment(5/7)</h1> +<h1>MemorySegment(4/6)</h1> 明示的に記述したDMA転送命令の例 <pre> loop() { @@ -523,7 +553,7 @@ </pre> <li class="slide"> -<h1>MemorySegment(6/7)</h1> +<h1>MemorySegment(5/6)</h1> MemorySegment を適応させた例 <pre> loop() { @@ -543,29 +573,28 @@ </pre> <li class="slide"> -<h1>MemorySegment(7/7)</h1> +<h1>MemorySegment(6/6)</h1> MemorySemgment を導入 <ul> <li>アーキテクチャ依存の記述を隠蔽することに成功した</li> <li>汎用的な Task 内でのデータ転送APIとして使用でき</li> <li>Core i7, Xeon などの汎用のメニーコアにも対応可能</li> - <li>CreateSpanTask 内のデータロードと、DrawspanTask の Texture のロードに使用している</li> </ul> <li class="slide"> -<h1>まとめ(1)</h1> +<h1>まとめ(1/2)</h1> 並列プログラミングフレームワーク Cerium の改良を行った。 <ul> - <li>Mail の待ち時間を削減、稼働率とFPSの向上に成功</li> - <li>汎用的なデータ転送APIを実装した</li> - <li>Cell アーキテクチャ依存の記述の隠蔽に成功</li> -</ul> + <li>MailQeueu, TaskArry を実装、導入した。その結果 Mail の待ち時間の削減、稼働率と FPS の向上に成功した</li> + <li>MemorySegment を実装し、汎用的なデータ転送APIが利用できるようになった。Cell アーキテクチャ依存の記述の隠蔽に成功</li> +</ul><br> +以上の改良を行い、稼働率の向上、アーキテクチャ依存のコードの排除に成功し、フレームワークとしての信頼性が向上した。 <li class="slide"> -<h1>まとめ(2)</h1> +<h1>まとめ(2/2)</h1> 改良の効果を示す @@ -651,18 +680,24 @@ <li class="slide"> <h1>今後の課題</h1> -アムダールの法則より、 - -<li class="slide"> -<h1>自動的な依存関係の解決</h1> - -<li class="slide"> -<h1>Task 化による並列化率の向上</h1> - -<li class="slide"> -<h1>SPE の LS の利用方法</h1> - +<ul> + <li>SceneGraph 部分の Task 化</li> + <ul> + <li>Task 化によって並列化率の向上</li> + </ul> + <li>自動的な依存関係の解決</li> + <ul> + <li>扱うデータから Task の依存関係がわかる</li> + <li>ユーザが複雑な依存関係を設定しない</li> + </ul> + <li>プログラムとデータの On demand Load</li> + <ul> + <li>プログラムコードはすべて LS に置いている</li> + <li>LS の容量を圧迫しプログラムが動作しなくなる</li> + <li>すべてのデータを扱う包括的なデータ構造が必要</li> + </ul> +</ul> <li class="slide"> <h1></h1>