Mercurial > hg > Papers > 2014 > masakoha-thesis > final
annotate slide/index.html @ 35:d5b9addca752
add OUTLINE chapter2
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 14 Feb 2014 03:17:44 +0900 |
parents | 717d9793d33e |
children | ec6ddf37a60b |
rev | line source |
---|---|
13 | 1 <!DOCTYPE html> |
2 | |
3 <html> | |
4 <head> | |
5 <title>Presentation</title> | |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
6 |
13 | 7 <meta charset='utf-8'> |
8 <script | |
9 src='./slides.js'></script> | |
10 </head> | |
11 | |
12 <style> | |
13 /* Your individual styles here, or just use inline styles if that’s | |
14 what you want. */ | |
15 | |
16 </style> | |
17 | |
18 <body style='display: none'> | |
19 <section class='slides layout-regular template-default'> | |
20 | |
21 <!-- | |
22 Your slides (<article>s) go here. Delete or comment out the | |
23 slides below. | |
24 --> | |
25 <article > | |
14 | 26 <h1>Cerium による並列処理向け I/O の設計と実装</h1> |
27 <h3 class="title">Masataka Kohagura 12th, February</h3> | |
13 | 28 <div align="right">担当教官 : 河野 真治</div> |
29 </article> | |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
30 |
32 | 31 <article> |
14 | 32 <h3>研究背景と目的</h3> |
13 | 33 <p> |
24 | 34 近年のCPUのほとんどはマルチコアであり、それらの性能を引き出すためには並列プログラミングが必須となっている。 |
32 | 35 そこで当研究室では、並列プログラミング用フレームワーク、Cerium 及び Cerium Task Manager の開発を行い、提供することによって並列プログラミングを容易にしている。 |
13 | 36 </p> |
37 <p> | |
33 | 38 先行研究では Task の並列化によって、プログラム全体の処理速度は向上している。しかし、ファイル読み込み等の I/O処理 と Task が並列に動作するようにはされていない。 |
21 | 39 </p> |
40 <p> | |
33 | 41 本研究では I/O処理 と Task が並列に動作するような設計、実装によってプログラム全体の並列度、及び処理速度を上げていく。 |
13 | 42 </p> |
43 </article> | |
14 | 44 |
27 | 45 |
46 <article> | |
33 | 47 <h3>Cerium Task Manager について</h3> |
27 | 48 <ul> |
49 <li> | |
33 | 50 当研究室で開発している並列プログラミングフレームワーク。 |
27 | 51 </li> |
52 <li> | |
33 | 53 PS3 に搭載されている Cell 向けに開発を行っていた。近年では、Mac OS X、Linux でも使用ができるように改良された。 |
32 | 54 </li> |
55 <li> | |
33 | 56 マルチコア CPU だけでなく、GPGPU での動作もサポート。 |
27 | 57 </li> |
58 </ul> | |
59 </article> | |
60 | |
33 | 61 |
62 <article> | |
35
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
63 <h3>用語の定義</h3> |
33 | 64 <ul> |
65 <li> | |
66 Blocked Read Task<br> | |
67 ファイルを実メモリに読み込む処理 | |
68 </li> | |
69 <li> | |
70 Task<br> | |
71 分割されたファイルに対して何らかの計算を行う処理<br> | |
72 </li> | |
73 </article> | |
74 | |
75 | |
27 | 76 <!-- |
13 | 77 <article> |
24 | 78 <h3>Cerium Task Manager の流れ</h3> |
13 | 79 <table border="0" cellpadding="0" cellspacing="0"> |
80 <tbody> | |
81 <tr> | |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
82 <td><img src='images/cerium.png' style="height:350px"></td> |
13 | 83 <td> |
84 <ol> | |
24 | 85 <font size=5> |
86 <li>Taskを生成後、Task Managerにて Task の管理、依存関係のチェック</li> | |
87 <li>TaskList に生成された Task を set </li> | |
88 <li>Task を各 Scheduler に転送</li> | |
13 | 89 <li>並列実行</li> |
24 | 90 </font> |
13 | 91 </ol> |
92 </td> | |
93 </tr> | |
94 </tbody> | |
95 </table> | |
96 </article> | |
27 | 97 --> |
14 | 98 |
13 | 99 <article> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
100 <h3>並列処理向け I/O の 設計と実装</h3> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
101 <br> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
102 <ul> |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
103 <li>I/O を含む Task の説明</li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
104 <li>mmap の説明</li> |
27 | 105 <li>Blocked Read の設計と実装</li> |
28 | 106 <li>IO専用 therad の追加</li> |
27 | 107 <li>ベンチマーク</li> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
108 </ul> |
13 | 109 </article> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
110 |
13 | 111 <article> |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
112 <h3>I/O を含む Task の説明</h3> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
113 <br> |
31 | 114 <img src='images/includeIOTask.png' style="height:250px" align="middle"> |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
115 <ol> |
33 | 116 <li>file を実メモリに格納後、file をある一定の大きさに分割する</li> |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
117 <li>分割した file に対して、それぞれ計算を行う</li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
118 <li>計算した結果を集計する</li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
119 </ol> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
120 </article> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
121 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
122 <article> |
33 | 123 <h3>mmap の特徴</h3> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
124 <table border="0" cellpadding="0" cellspacing="0"> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
125 <tbody> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
126 <tr> |
31 | 127 <td><img src='images/mmap.png' style="height:350px" align="middle"></td> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
128 <td> |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
129 <ul> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
130 <font size = 5> |
33 | 131 <li> |
132 mmap は、C 及び C++ で使用できるAPIであり、ファイルを仮想メモリに mapping する。 | |
133 </li> | |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
134 <li> |
33 | 135 code がシンプル <br>(実メモリを自分自身で malloc せず、read を書いて読み込まなくていいため) |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
136 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
137 <li> |
32 | 138 実メモリより大きなファイルは開けない |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
139 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
140 </font> |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
141 </ul> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
142 </td> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
143 </tr> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
144 </tbody> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
145 </table> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
146 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
147 <ul> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
148 </ul> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
149 </article> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
150 |
33 | 151 <article> |
152 <h3>mmapでの実装の問題点</h3> | |
153 <ul> | |
154 <li> | |
155 mmap で file を読み込むと、file は実メモリ上にて即座には展開されない。 | |
156 </li> | |
157 <li> | |
158 実メモリへの呼び出しがOS依存。 | |
159 </li> | |
160 <li> | |
161 file が実メモリに展開されるタイミングは、その file に対して何らかの計算を行うときである。<br><br> | |
162 →つまり、Task が走るときに初めて実メモリに file を格納するので、I/O と Task が分離できない。 | |
163 </li> | |
164 </ul> | |
165 </article> | |
166 | |
167 | |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
168 <article> |
27 | 169 <h3>Blocked Read の設計</h3> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
170 <br> |
31 | 171 <img src='images/divide_read.png' style="height:250px" align="middle" > |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
172 <br> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
173 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
174 <ul> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
175 <li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
176 明示的な read |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
177 </li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
178 <li> |
32 | 179 実メモリへの呼び出しを自分で書ける(制御できる) |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
180 </li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
181 <li> |
32 | 182 実メモリより大きなファイルを扱える |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
183 </li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
184 </ul> |
13 | 185 </article> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
186 |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
187 <!-- |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
188 <article> |
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
189 <h3>divide read の実装(1)</h3> |
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
190 <br> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
191 <h3 class="yellow">Read Task の ブロック化</h3> |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
192 <pre> |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
193 program_run(TaskManager *manager, char *filename) |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
194 { |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
195 FileReadPtr fr = (FileReadPtr)manager->allocate(sizeof(FileRead)); |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
196 fr->self = fr; |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
197 fr->fd = fd; |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
198 ・・・ |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
199 read = manager->create_task(RUN_READ_BLOCKS, |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
200 (memaddr)&fr->self, sizeof(memaddr),read_text,fr->filesize); |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
201 |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
202 read->spawn(); |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
203 } |
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
204 </pre> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
205 </article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
206 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
207 <article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
208 <h3>divide read の実装(2)</h3> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
209 <br> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
210 <ul> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
211 <li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
212 divide read Task の実行の際に、ブロック単位で Task の生成、実行を行う。 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
213 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
214 <li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
215 1つずつ生成すると Task の数だけ memory address が取られるために肥大化してしまう。 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
216 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
217 <li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
218 しかしブロック単位で生成すると、同じ変数を使用しているので memory の節約になる。 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
219 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
220 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
221 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
222 </ul> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
223 </article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
224 --> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
225 |
24 | 226 <article class='smaller'> |
27 | 227 <h3>Blocked Read の実装</h3> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
228 <br> |
31 | 229 <img src='images/blockread.png' style="height:250px"align="middle"> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
230 <br> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
231 |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
232 <ul> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
233 <li> |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
234 Task を 1 つずつ生成するのではなく、ブロック単位で生成する。<br> |
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
235 この図では、1 Block 当たり n 個の Task を生成する。<br> |
32 | 236 (1つずつ生成すると、生成された Task で実メモリを圧迫するため) |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
237 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
238 <li> |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
239 Task 1つ当たりの読み込む領域を L とする。<br> |
32 | 240 Blocked Read Task 1つ当たり、実メモリに格納する大きさは L × n となる。 |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
241 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
242 <li> |
27 | 243 Blocked Read Task が読み込み終わるまで、Task Block に wait を掛ける。<br> |
32 | 244 (Read Task がファイルを実メモリに格納する前に走ると、まだ格納していない領域を読みこんでしまう。) |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
245 </li> |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
246 </ul> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
247 </article> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
248 |
28 | 249 <article class = 'smaller'> |
250 <h3>I/O 専用の therad を追加 (1/2)</h3> | |
251 <br> | |
31 | 252 <img src='images/SPE_ANYblockread.png' style="height:350px"align="middle"> |
253 <ul> | |
254 <li> | |
255 Task 単位で CPU Type を set することができる。 | |
256 </li> | |
257 <li> | |
258 SPE_ANY で set をすると、Cerium Task Manager 側で自動的に CPU を割り振ってくれる。 | |
259 </li> | |
260 <li> | |
261 自動的に割り振るので、Blocked Read に割り込むおそれがある。 | |
262 </li> | |
263 </ul> | |
264 </article> | |
265 | |
266 | |
267 <article class='smaller'> | |
268 <h3>I/O 専用の therad を追加 (2/2)</h3> | |
269 <br> | |
270 <img src='images/IO_0blockread.png' style="height:350px"> | |
271 <ul> | |
272 <li>IO_0 という CPU Type を実装した。</li> | |
273 <li>他の CPU Type より priority を高く設定している。</li> | |
274 <li>Blocked Read Task が他の Task に割り込まれないので、<br> | |
275 連続で動作する。 | |
276 </li> | |
277 </ul> | |
28 | 278 </article> |
279 | |
280 <article> | |
31 | 281 <h3>ベンチマーク(1/2)</h3> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
282 <br> |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
283 <h3 class="yellow">実験環境</h3> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
284 <ul> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
285 <li> Mac OS X 10.9.1</li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
286 <li> 2*2.66 GHz 6-Core Intel Xeon</li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
287 <li> Memory 16GB 1333MHz DDR3</li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
288 <li> HHD 1TB</li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
289 <li> file size : 約 10 GB</li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
290 <li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
291 "doing" という文字列が file 内にいくつあるか計算<br> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
292 ("doing" は 25,961,792 個存在する) |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
293 </li> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
294 </ul> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
295 </article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
296 |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
297 <article class = 'smaller'> |
31 | 298 <h3>ベンチマーク(2/2)</h3> |
27 | 299 <ul> |
300 <li> | |
33 | 301 file がメモリに残っていない状態での測定 |
27 | 302 </li> |
303 <li> | |
304 one task size 128KByte | |
305 </li> | |
306 <li> | |
307 Task Blocks 48 | |
308 </li> | |
309 </ul> | |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
310 <br> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
311 <h3 class="yellow">結果</h3> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
312 <table border="0" cellpadding="0" cellspacing="0"> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
313 <tbody> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
314 <tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
315 <td>read mode</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
316 <td>cpu num</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
317 <td>min time(s)</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
318 <td>MAX time(s)</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
319 <td>ave time(s)</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
320 </tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
321 <tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
322 <td>mmap</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
323 <td>4</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
324 <td>135.2</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
325 <td>148.9</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
326 <td>142.3</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
327 </tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
328 <tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
329 <td>BRead</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
330 <td>4</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
331 <td>94.5</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
332 <td>109.2</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
333 <td>98.8</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
334 </tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
335 |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
336 <tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
337 <td>mmap</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
338 <td>12</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
339 <td>147.0</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
340 <td>181.8</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
341 <td>154.6</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
342 </tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
343 <tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
344 <td>BRead</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
345 <td>12</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
346 <td>91.6</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
347 <td>117.5</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
348 <td>99.2</td> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
349 </tr> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
350 </tbody> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
351 </table> |
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
352 |
27 | 353 </article> |
26
54591c145fec
add experiment result
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
354 |
28 | 355 |
356 <article> | |
357 <h3>まとめ</h3> | |
358 <br> | |
359 <ul> | |
360 <li> | |
35
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
361 mmap より、Blocked Readのほうが約50秒高速化した<br> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
362 mmap では 1つ1つの Task が実メモリへの呼び出しを行っているが、Blocked Read だと複数 Task 分の実メモリ呼び出しを行っている。実メモリへの呼び出し回数が少なくなったため速くなっていると考えられる。(要検証) |
28 | 363 </li> |
364 <li> | |
35
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
365 I/O と Task の分離が成功して並列に動作するようになった |
28 | 366 </li> |
367 </ul> | |
368 | |
369 </article> | |
370 | |
371 <article> | |
35
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
372 <h3>Blocked Read の有効性</h3> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
373 <br> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
374 <ul> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
375 <li> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
376 mmap で記述するよりも速度的に速くなる |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
377 </li> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
378 <li> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
379 読み込みのOS 依存度が減少する。 |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
380 </li> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
381 </ul> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
382 </article> |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
383 |
d5b9addca752
add OUTLINE chapter2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
34
diff
changeset
|
384 <article> |
34 | 385 <h3>研究計画</h3> |
28 | 386 <br> |
387 <ul> | |
388 <li> | |
389 さらなる 並列処理向け I/O の動作を改善 | |
390 </li> | |
391 <li> | |
34 | 392 I/O を利用した、マルチコアソフトウェアシンセサイザーを設計と実装 |
28 | 393 </li> |
394 </ul> | |
395 | |
396 </article> | |
397 | |
398 <article> | |
34 | 399 </article> |
400 | |
401 <article> | |
28 | 402 <h3>マルチコアソフトウェアシンセサイザーの設計</h3> |
403 <br> | |
404 <ul> | |
405 <li> | |
406 作曲をする際にはマシンパワーが必要となることが多い。 | |
407 </li> | |
408 <li> | |
409 ソフトウェアシンセサイザー(以下、シンセサイザー)を使用する際にマシンパワーが必要となる。 | |
410 </li> | |
411 <li> | |
412 シンセサイザーは1つだけで立ち上げる物ではなく、複数立ち上げる物なので、1つ1つの負荷を抑えることがキーポイントとなる。 | |
413 </li> | |
414 <li> | |
415 シンセサイザーは様々なフィルターをかけることで音を作っていくのだが、フィルターを重ねても動作軽量なプログラムを作る。 | |
416 </li> | |
417 </ul> | |
418 </article> | |
419 | |
420 <article> | |
34 | 421 <h3>仮想メモリと実メモリ</h3> |
422 <br> | |
423 <ul> | |
424 <li> | |
425 実メモリ<br> | |
426 物理メモリとも呼ばれている。コンピュータに実際に搭載されているメインメモリ。 | |
427 </li> | |
428 <li> | |
429 仮想メモリ<br> | |
430 HDD などの補助記憶装置上に仮想的なメモリ領域を確保する。仮想メモリ上と仮想メモリ上の領域の対応付けを行う。 | |
431 </li> | |
432 </ul> | |
433 </article> | |
434 | |
435 <article> | |
436 <h3>Cerium Task の生成の例(1)</h3> | |
28 | 437 <p>(例題) multiply : 2つの数を掛け算するプログラム</p> |
438 <h3 class="yellow">main.cc の記述</h3> | |
439 <pre> | |
440 float* A, B, C; | |
441 // Task の宣言 | |
442 HTaskPtr multiply = manager->create_task(MULTIPLY_TASK); | |
443 // Task を実行する デバイスの設定 | |
444 multiply->set_cpu(SPE_ANY); | |
445 // Task に入力データのアドレスを追加 | |
446 multiply->set_inData(0, (memaddr)A, sizeof(float)*length); | |
447 multiply->set_inData(1, (memaddr)B, sizeof(float)*length); | |
448 // Task に出力データのアドレスを追加 | |
449 multiply->set_outData(0, (memaddr)C, sizeof(float)*length); | |
450 // Task へ値を1つだけ渡す | |
451 multiply->set_param(0,length); | |
452 // Task を TaskList に set する | |
453 multiply->spawn(); </pre> | |
454 </article> | |
455 | |
456 <article> | |
34 | 457 <h3> Cerium Task の生成(2)</h3> |
28 | 458 <br> |
459 <h3 class="yellow">Task の記述</h3> | |
460 <pre> | |
461 static int | |
462 multiply(SchedTask *s,void *rbuf, void *wbuf) | |
463 { | |
464 float *A,*B,*C | |
465 // 登録した inData を取得 | |
466 A = (float*)s->get_input(rbuf,0); | |
467 B = (float*)s->get_input(rbuf,1); | |
468 // 登録した outData を取得 | |
469 C = (float*)s->get_output(wbuf,0); | |
470 // 登録した param を取得 | |
471 long length=(long)s->get_param(0); | |
472 for (int i=0;i < length;i++) { | |
473 C[i] = A[i] * B[i]; | |
474 } | |
475 return 0; | |
476 } </pre> | |
477 </article> | |
478 | |
479 <article> | |
34 | 480 <h3>mmap での I/O の実装</h3> |
28 | 481 <br> |
482 <h3 class="yellow">mmap の記述</h3> | |
483 <pre> | |
484 mmap(SchedTask *s, void *in, void *out) | |
485 { | |
486 // FileReadPtr : File情報などを格納している構造体 | |
487 FileReadPtr fr = (FileReadPtr)in; | |
488 int map = MAP_PRIVATE; | |
489 | |
490 fr->read_text = | |
491 (char*)mmap(NULL,fr->filesize,PROT_READ,map,fr->fd,(off_t)0); | |
492 } | |
493 </pre> | |
494 <ul> | |
495 <li> | |
496 PROT_READ : 読み込み可 | |
497 </li> | |
498 <li> | |
499 MAP_PRIVATE : 読み込んだ領域に対して書き込みが起こると複製し、複製した領域に対して書き込みを行う | |
500 </li> | |
501 </ul> | |
502 </article> | |
503 | |
504 <article class='smaller'> | |
34 | 505 <h3>Block Read の実装(1/2)</h3> |
28 | 506 <br> |
507 <h3 class="yellow">Block Read の実装</h3> | |
508 <pre> | |
509 HTaskPtr t_read = manager->create_task(READ_TASK); | |
510 t_read->set_cpu(read_spe_cpu); | |
511 // 読み出すファイルの格納場所を設定 | |
512 t_read->set_outData(0, | |
513 w->file_mmap + w->task_spawned * w->division_size, | |
514 w->task_blocks * w->division_size); | |
515 // ファイルディスクリプタの受け渡し | |
516 t_read->set_param(0,w->fd); | |
517 // ファイル読み込みの始点 | |
518 t_read->set_param(1,w->task_spawned*w->division_size); | |
519 | |
520 // run_tasks(manager,w, w->task_blocks, t_read, t_next, w->division_size + w->extra_len); | |
521 // ここで、ファイルに対して何らかの計算を掛けるような Task を設定する | |
522 run_tasks(manager,w, w->task_blocks,・・・ ); | |
523 | |
524 // ファイル読み込みの終点 | |
525 t_read->set_param(2,w->task_spawned*w->division_size + w->extra_len); | |
526 | |
527 t_read->spawn(); | |
528 | |
529 </pre> | |
530 </article> | |
531 | |
532 <article> | |
34 | 533 <h3>Block Read の実装(2/2)</h3> |
28 | 534 <br> |
535 <h3 class="yellow"> Block Read の記述</h3> | |
536 <pre> | |
537 static int | |
538 read_task(SchedTask *s, void *rbuf, void *wbuf) | |
539 { | |
540 long fd = (long)s->get_param(0); | |
541 long start_read_position = (long)s->get_param(1); | |
542 long end_read_position = (long)s->get_param(2); | |
543 char *read_text = (char*)s->get_output(wbuf,0); | |
544 long read_size = end_read_position - start_read_position; | |
545 | |
546 pread(fd, read_text, read_size , start_read_position); | |
547 return 0; | |
548 } | |
549 </pre> | |
550 </article> | |
551 | |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
552 |
13 | 553 </body> |
554 </html> |