Mercurial > hg > Papers > 2014 > masakoha-thesis > final
changeset 74:ec6ddf37a60b
fix slide
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 26 Feb 2014 04:08:26 +0900 |
parents | 17c93faef65b |
children | eaa8a657efe2 |
files | paper/fig/blockread.graffle slide/images/includeIOTask.png slide/index.html |
diffstat | 3 files changed, 1289 insertions(+), 200 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/fig/blockread.graffle Wed Feb 26 02:56:44 2014 +0900 +++ b/paper/fig/blockread.graffle Wed Feb 26 04:08:26 2014 +0900 @@ -26,7 +26,7 @@ <key>MasterSheets</key> <array/> <key>ModificationDate</key> - <string>2014-02-25 17:43:44 +0000</string> + <string>2014-02-25 17:59:41 +0000</string> <key>Modifier</key> <string>masataka kohagura</string> <key>NotesVisible</key> @@ -38025,6 +38025,1242 @@ <key>GraphicsList</key> <array> <dict> + <key>Bounds</key> + <string>{{349.83002928005732, 112.35235622913868}, {108.41831207275391, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>83</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 wait for Output Data}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{243.64874258292048, 73.25925488982746}, {108.41831207275391, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>82</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 spawn Output Data}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{165.26627324696224, 59.259258212703131}, {81.463137313527341, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>81</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 wait for\ +file read}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>AllowToConnect</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>87</integer> + <key>Points</key> + <array> + <string>{369.32896222233944, 253.9936572872839}</string> + <string>{407.76977495207439, 211.54560281664553}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>AllowToConnect</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>73</integer> + <key>Points</key> + <array> + <string>{369.32894897460938, 233.82559103016305}</string> + <string>{395.58490270484458, 206.51466797364506}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>AllowToConnect</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>72</integer> + <key>Points</key> + <array> + <string>{369.32894897460938, 160.7163508481004}</string> + <string>{395.58490158839709, 188.67089596956819}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>AllowToConnect</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>62</integer> + </dict> + <key>ID</key> + <integer>70</integer> + <key>Points</key> + <array> + <string>{369.32896222233944, 143.48946092014191}</string> + <string>{419.50243577478443, 184.18386725525298}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>52</integer> + </dict> + <key>ID</key> + <integer>69</integer> + <key>Points</key> + <array> + <string>{293.77972128175168, 261.76213271651505}</string> + <string>{264.53314945889986, 269.97998629484528}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledArrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>60</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>51</integer> + </dict> + <key>ID</key> + <integer>68</integer> + <key>Points</key> + <array> + <string>{287.36645641602695, 234.70460873750284}</string> + <string>{267.69575650613575, 235.66914326922986}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledArrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>59</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>67</integer> + <key>Points</key> + <array> + <string>{287.36642299774809, 159.77429402731738}</string> + <string>{267.69577205475645, 158.80977381411248}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledArrow</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>28</integer> + </dict> + <key>ID</key> + <integer>66</integer> + <key>Points</key> + <array> + <string>{293.77963710187345, 132.71674530119205}</string> + <string>{264.53317063951829, 124.49893677491676}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledArrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>54</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>52</integer> + </dict> + <key>ID</key> + <integer>65</integer> + <key>Points</key> + <array> + <string>{183.49285030115306, 262.43781723862367}</string> + <string>{191.80789890658932, 253.29921570905844}</string> + <string>{212.35765330484233, 253.29921570905844}</string> + <string>{225.76468571828983, 264.56145477864015}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</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>51</integer> + </dict> + <key>ID</key> + <integer>64</integer> + <key>Points</key> + <array> + <string>{182.19324748926189, 222.64794375790373}</string> + <string>{191.80789376886767, 210.89872323676454}</string> + <string>{212.35764816712063, 210.89872323676454}</string> + <string>{226.85845272979398, 224.44266155136057}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>46</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>63</integer> + <key>Points</key> + <array> + <string>{180.27231672314932, 143.53164879550511}</string> + <string>{191.80790294741374, 132.85200477392701}</string> + <string>{212.35765734566669, 132.85200477392701}</string> + <string>{225.81004116434357, 145.30621858185688}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>28</integer> + </dict> + <key>ID</key> + <integer>35</integer> + <key>Points</key> + <array> + <string>{183.25662822953271, 103.34382564020828}</string> + <string>{192.76627965277558, 92.697403177720687}</string> + <string>{213.31603405102859, 92.697403177720687}</string> + <string>{226.76841786970544, 105.15161698565052}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{390.63884893286468, 183.59107764089654}, {90.731513977050781, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>62</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Result Task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{287.86584946941747, 242.33088234514204}, {81.463103909583637, 19.295995712280273}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>60</integer> + <key>Shape</key> + <string>Rectangle</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Output Data}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{287.86585639268458, 223.03488938207519}, {81.463103909583637, 19.295995712280273}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>59</integer> + <key>Shape</key> + <string>Rectangle</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Output Data}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>58</integer> + <key>Points</key> + <array> + <string>{327.84303487611038, 183.26216910861453}</string> + <string>{327.84303487611038, 211.2167148771924}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>Pattern</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{287.86582298874123, 152.14799269137089}, {81.463103909583637, 19.295995712280273}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>55</integer> + <key>Shape</key> + <string>Rectangle</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Output Data}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{287.86582991200845, 132.85199972830398}, {81.463103909583637, 19.295995712280273}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>54</integer> + <key>Shape</key> + <string>Rectangle</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Output Data}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{213.31602108687596, 262.80766376930353}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>52</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{213.31602108687596, 223.03493092281334}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>51</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{213.31603405102854, 143.48945685495173}, {54, 27.954545768578228}}</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{213.31603405102859, 103.71672400846133}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>28</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>48</integer> + <key>Points</key> + <array> + <string>{165.26627488093757, 183.26218666204076}</string> + <string>{165.26627488093757, 211.21673243061869}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>Pattern</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{138.76627276886592, 262.80764162659648}, {63.344825298837208, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>47</integer> + <key>Shape</key> + <string>Rectangle</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 File Read}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{138.76627276886592, 223.03489581595906}, {63.344825298837208, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>46</integer> + <key>Shape</key> + <string>Rectangle</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 File Read}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{138.76627276886592, 143.48945226567864}, {63.344825298837208, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>45</integer> + <key>Shape</key> + <string>Rectangle</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 File Read}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{138.76628084405212, 103.71672630309789}, {63.344825298837208, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>1</integer> + <key>Shape</key> + <string>Rectangle</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 File Read}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{99.999998233936481, 289.710876759602}, {35.433071398293073, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>44</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\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 FILE}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>43</integer> + <key>Points</key> + <array> + <string>{117.21652858486596, 262.80763005446465}</string> + <string>{117.21652858486596, 290.76217582304253}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>NegativeControls</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>NegativeControls</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>42</integer> + <key>Points</key> + <array> + <string>{117.21652858486596, 223.03490154432578}</string> + <string>{117.21652858486596, 250.98944731290354}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>NegativeControls</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>NegativeControls</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>40</integer> + <key>Points</key> + <array> + <string>{117.21652858486601, 183.26217787078312}</string> + <string>{117.21652858486601, 211.21672363936099}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>Pattern</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>39</integer> + <key>Points</key> + <array> + <string>{117.21653342146274, 143.48945705826318}</string> + <string>{117.21653342146274, 171.44400282684146}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>NegativeControls</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>NegativeControls</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>38</integer> + <key>Points</key> + <array> + <string>{117.21652858486607, 103.71672957002347}</string> + <string>{117.21652858486607, 131.6712753386017}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>NegativeControls</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>NegativeControls</string> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{129.84034610743049, 90.352357778038964}, {81.463137313527341, 213.3585205078125}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>89</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>1</string> + </dict> + </dict> + </dict> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>HPages</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>Orientation</key> + <integer>2</integer> + <key>PrintOnePage</key> + <false/> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>キャンバス 22</string> + <key>UniqueID</key> + <integer>24</integer> + <key>VPages</key> + <integer>1</integer> + </dict> + <dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>AutoAdjust</key> + <true/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {558.99997329711914, 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>BaseZoom</key> + <integer>0</integer> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>36</real> + <key>DisplayScale</key> + <string>1 0/72 in = 1.0000 in</string> + <key>GraphicsList</key> + <array> + <dict> <key>Class</key> <string>LineGraphic</string> <key>Head</key> @@ -40308,7 +41544,7 @@ <key>WindowInfo</key> <dict> <key>CurrentSheet</key> - <integer>20</integer> + <integer>19</integer> <key>ExpandedCanvases</key> <array/> <key>Frame</key> @@ -40436,6 +41672,11 @@ <real>1.3500000238418579</real> <real>1</real> </array> + <array> + <string>キャンバス 22</string> + <real>1.3500000238418579</real> + <real>1</real> + </array> </array> </dict> </dict>
--- a/slide/index.html Wed Feb 26 02:56:44 2014 +0900 +++ b/slide/index.html Wed Feb 26 04:08:26 2014 +0900 @@ -52,50 +52,9 @@ <li> PS3 に搭載されている Cell 向けに開発を行っていた。近年では、Mac OS X、Linux でも使用ができるように改良された。 </li> - <li> - マルチコア CPU だけでなく、GPGPU での動作もサポート。 - </li> </ul> </article> - - <article> - <h3>用語の定義</h3> - <ul> - <li> - Blocked Read Task<br> - ファイルを実メモリに読み込む処理 - </li> - <li> - Task<br> - 分割されたファイルに対して何らかの計算を行う処理<br> - </li> - </article> - - -<!-- - <article> - <h3>Cerium Task Manager の流れ</h3> - <table border="0" cellpadding="0" cellspacing="0"> - <tbody> - <tr> - <td><img src='images/cerium.png' style="height:350px"></td> - <td> - <ol> - <font size=5> - <li>Taskを生成後、Task Managerにて Task の管理、依存関係のチェック</li> - <li>TaskList に生成された Task を set </li> - <li>Task を各 Scheduler に転送</li> - <li>並列実行</li> - </font> - </ol> - </td> - </tr> - </tbody> - </table> - </article> ---> - <article> <h3>並列処理向け I/O の 設計と実装</h3> <br> @@ -113,8 +72,8 @@ <br> <img src='images/includeIOTask.png' style="height:250px" align="middle"> <ol> - <li>file を実メモリに格納後、file をある一定の大きさに分割する</li> - <li>分割した file に対して、それぞれ計算を行う</li> + <li>テキストファイルの読み込み後、ファイルをある一定の大きさに分割する</li> + <li>分割したテキストファイルに対して、それぞれ計算を行う</li> <li>計算した結果を集計する</li> </ol> </article> @@ -129,13 +88,10 @@ <ul> <font size = 5> <li> - mmap は、C 及び C++ で使用できるAPIであり、ファイルを仮想メモリに mapping する。 + mmap は、C 及び C++ で使用でき、ファイルを読み込む API である。 </li> <li> - code がシンプル <br>(実メモリを自分自身で malloc せず、read を書いて読み込まなくていいため) - </li> - <li> - 実メモリより大きなファイルは開けない + code がシンプル <br>(メモリを自分自身で malloc せず、read を書いて読み込まなくていいため) </li> </font> </ul> @@ -152,14 +108,11 @@ <h3>mmapでの実装の問題点</h3> <ul> <li> - mmap で file を読み込むと、file は実メモリ上にて即座には展開されない。 + mmap でファイルを読み込むと、ファイルはメモリ上に即座に展開されるわけではない。 </li> - <li> - 実メモリへの呼び出しがOS依存。 - </li> <li> - file が実メモリに展開されるタイミングは、その file に対して何らかの計算を行うときである。<br><br> - →つまり、Task が走るときに初めて実メモリに file を格納するので、I/O と Task が分離できない。 + ファイルがメモリに展開されるタイミングは、そのファイルに対して文字列検索を行うときである。<br><br> + →つまり、文字列検索が行われるときに初めてメモリにファイルが格納されるので、ファイル読み込みと文字列検索が分離できない。 </li> </ul> </article> @@ -173,56 +126,12 @@ <ul> <li> - 明示的な read - </li> - <li> - 実メモリへの呼び出しを自分で書ける(制御できる) - </li> - <li> - 実メモリより大きなファイルを扱える + メモリへの呼び出しを自分で書ける(制御できる) </li> </ul> + 以後、ファイルに対して文字列検索を行う処理を Task と定義する。 </article> -<!-- - <article> - <h3>divide read の実装(1)</h3> - <br> - <h3 class="yellow">Read Task の ブロック化</h3> - <pre> -program_run(TaskManager *manager, char *filename) -{ - FileReadPtr fr = (FileReadPtr)manager->allocate(sizeof(FileRead)); - fr->self = fr; - fr->fd = fd; - ・・・ - read = manager->create_task(RUN_READ_BLOCKS, - (memaddr)&fr->self, sizeof(memaddr),read_text,fr->filesize); - - read->spawn(); -} -</pre> - </article> - - <article> - <h3>divide read の実装(2)</h3> - <br> - <ul> - <li> - divide read Task の実行の際に、ブロック単位で Task の生成、実行を行う。 - </li> - <li> - 1つずつ生成すると Task の数だけ memory address が取られるために肥大化してしまう。 - </li> - <li> - しかしブロック単位で生成すると、同じ変数を使用しているので memory の節約になる。 - </li> - - </li> - </ul> - </article> ---> - <article class='smaller'> <h3>Blocked Read の実装</h3> <br> @@ -233,15 +142,15 @@ <li> Task を 1 つずつ生成するのではなく、ブロック単位で生成する。<br> この図では、1 Block 当たり n 個の Task を生成する。<br> - (1つずつ生成すると、生成された Task で実メモリを圧迫するため) + (1つずつ生成すると、生成された Task でメモリを圧迫するため) </li> <li> Task 1つ当たりの読み込む領域を L とする。<br> - Blocked Read Task 1つ当たり、実メモリに格納する大きさは L × n となる。 + Blocked Read Task 1つ当たり、メモリに格納する大きさは L × n となる。 </li> <li> Blocked Read Task が読み込み終わるまで、Task Block に wait を掛ける。<br> - (Read Task がファイルを実メモリに格納する前に走ると、まだ格納していない領域を読みこんでしまう。) + (Read Task がファイルをメモリに格納する前に走ると、まだ格納していない領域を読みこんでしまう。) </li> </ul> </article> @@ -252,13 +161,13 @@ <img src='images/SPE_ANYblockread.png' style="height:350px"align="middle"> <ul> <li> - Task 単位で CPU Type を set することができる。 + Task 単位で使用するデバイスをセットすることができる。 </li> <li> - SPE_ANY で set をすると、Cerium Task Manager 側で自動的に CPU を割り振ってくれる。 + SPE_ANY でセットすると、Cerium Task Manager 側で自動的に CPU を割り振る。 </li> <li> - 自動的に割り振るので、Blocked Read に割り込むおそれがある。 + 自動的に割り振るので、Blocked Read に 他のTask が割り込むおそれがある。 </li> </ul> </article> @@ -269,10 +178,9 @@ <br> <img src='images/IO_0blockread.png' style="height:350px"> <ul> - <li>IO_0 という CPU Type を実装した。</li> - <li>他の CPU Type より priority を高く設定している。</li> - <li>Blocked Read Task が他の Task に割り込まれないので、<br> - 連続で動作する。 + <li>IO_0 という I/O 専用の Thread を追加した。</li> + <li>Blocked Read Task が最優先されるので、他の Task に割り込まれなくなる<br> + これにより、Blocked Read Task が連続で動作する。 </li> </ul> </article> @@ -287,10 +195,8 @@ <li> Memory 16GB 1333MHz DDR3</li> <li> HHD 1TB</li> <li> file size : 約 10 GB</li> - <li> - "doing" という文字列が file 内にいくつあるか計算<br> - ("doing" は 25,961,792 個存在する) - </li> + <li> ファイルに対して Boyer-Moore String Seaech で文字列検索をかける </li> + <li> ファイルの読み込みから結果までを測定</li> </ul> </article> @@ -298,7 +204,7 @@ <h3>ベンチマーク(2/2)</h3> <ul> <li> - file がメモリに残っていない状態での測定 + ファイルがキャッシュに残っていない状態での測定 </li> <li> one task size 128KByte @@ -306,6 +212,9 @@ <li> Task Blocks 48 </li> + <li> + CPU num 12 + </li> </ul> <br> <h3 class="yellow">結果</h3> @@ -313,40 +222,28 @@ <tbody> <tr> <td>read mode</td> - <td>cpu num</td> - <td>min time(s)</td> - <td>MAX time(s)</td> <td>ave time(s)</td> </tr> <tr> <td>mmap</td> - <td>4</td> - <td>135.2</td> - <td>148.9</td> - <td>142.3</td> - </tr> - <tr> - <td>BRead</td> - <td>4</td> - <td>94.5</td> - <td>109.2</td> - <td>98.8</td> - </tr> - - <tr> - <td>mmap</td> - <td>12</td> - <td>147.0</td> - <td>181.8</td> <td>154.6</td> </tr> <tr> - <td>BRead</td> - <td>12</td> - <td>91.6</td> - <td>117.5</td> + <td>一括Read</td> + <td>114.9</td> + </tr> + <tr> + <td>Blocked Read & SPE_ANY</td> + <td>106.0</td> + </tr> + <tr> + <td>Blocked Read & IO_0</td> <td>99.2</td> </tr> + <tr> + <td>[参考] mmap (CPU num:2)</td> + <td>106.2</td> + </tr> </tbody> </table> @@ -354,80 +251,31 @@ <article> - <h3>まとめ</h3> + <h3>考察</h3> <br> <ul> <li> - mmap より、Blocked Readのほうが約50秒高速化した<br> - mmap では 1つ1つの Task が実メモリへの呼び出しを行っているが、Blocked Read だと複数 Task 分の実メモリ呼び出しを行っている。実メモリへの呼び出し回数が少なくなったため速くなっていると考えられる。(要検証) + 実験結果から、mmap より、Blocked Read & IO_0 の実行速度が36%改善された。<br> </li> <li> - I/O と Task の分離が成功して並列に動作するようになった + mmap では 1つ1つの Task がファイルの読み込みを行うが、Blocked Read だと複数 Task 分のファイルを読み込んでいるので、メモリへの呼び出し回数が少ない Blocked Read のほうが速くなったと考えられる。 + </li> + <li> + I/Oを含む並列処理を mmap で実装すると遅くなるので、このような例題の場合は Blocked Read で読み込む必要がある。 </li> </ul> </article> <article> - <h3>Blocked Read の有効性</h3> - <br> - <ul> - <li> - mmap で記述するよりも速度的に速くなる - </li> - <li> - 読み込みのOS 依存度が減少する。 - </li> - </ul> - </article> - - <article> - <h3>研究計画</h3> + <h3>まとめ</h3> <br> <ul> <li> - さらなる 並列処理向け I/O の動作を改善 - </li> - <li> - I/O を利用した、マルチコアソフトウェアシンセサイザーを設計と実装 - </li> - </ul> - - </article> - - <article> - </article> - - <article> - <h3>マルチコアソフトウェアシンセサイザーの設計</h3> - <br> - <ul> - <li> - 作曲をする際にはマシンパワーが必要となることが多い。 + I/O を含む Task を実装するときに mmap では不向き </li> <li> - ソフトウェアシンセサイザー(以下、シンセサイザー)を使用する際にマシンパワーが必要となる。 - </li> - <li> - シンセサイザーは1つだけで立ち上げる物ではなく、複数立ち上げる物なので、1つ1つの負荷を抑えることがキーポイントとなる。 - </li> - <li> - シンセサイザーは様々なフィルターをかけることで音を作っていくのだが、フィルターを重ねても動作軽量なプログラムを作る。 - </li> - </ul> - </article> - - <article> - <h3>仮想メモリと実メモリ</h3> - <br> - <ul> - <li> - 実メモリ<br> - 物理メモリとも呼ばれている。コンピュータに実際に搭載されているメインメモリ。 - </li> - <li> - 仮想メモリ<br> - HDD などの補助記憶装置上に仮想的なメモリ領域を確保する。仮想メモリ上と仮想メモリ上の領域の対応付けを行う。 + I/O を含む Task では Blocked Read で読み込みを制御したほうが効果的 </li> </ul> </article>