comparison slide/index.html @ 23:a452d8f104bd

divede read rename to Block Read
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Sun, 09 Feb 2014 17:14:11 +0900
parents dd04469c2ae9
children 563a4c69048b
comparison
equal deleted inserted replaced
22:5358fc3a1d7d 23:a452d8f104bd
32 <h3>研究背景と目的</h3> 32 <h3>研究背景と目的</h3>
33 <p> 33 <p>
34 近年のCPUのほとんどはマルチコアであり、それらの性能を引き出すためには並列プログラミングが必須となっている。そこで当研究室では Cerium Library の開発を行い、提供することによって並列プログラミングを容易にしている。 34 近年のCPUのほとんどはマルチコアであり、それらの性能を引き出すためには並列プログラミングが必須となっている。そこで当研究室では Cerium Library の開発を行い、提供することによって並列プログラミングを容易にしている。
35 </p> 35 </p>
36 <p> 36 <p>
37 先行研究では Task の並列化によって、プログラム全体の処理速度は向上しているが、ファイル読み込み等の I/O に対して並列に Task が動作するようにはされていない。 37 先行研究では Task の並列化によって、プログラム全体の処理速度は向上している。しかし、ファイル読み込み等の I/O と Task が並列に動作するようにはされていない。
38 </p> 38 </p>
39 <p> 39 <p>
40 現状では、ファイルを全て memory に mapping を行ってから Task が走るようになっているので、非常に大きいサイズのファイルを読み込むと、ファイルを memory に mapping するまでの時間がオーバーヘッドになってしまう。 40 現状では、ファイルを全て memory に mapping を行ってから Task が走るようになっているので、非常に大きいサイズのファイルを読み込むと、ファイルを memory に mapping するまでの時間がオーバーヘッドになってしまう。
41 </p> 41 </p>
42 <p> 42 <p>
43 本研究では I/O と Task の並列化の設計、実装によってプログラム全体の処理速度、処理効率を上げていく。 43 本研究では I/O と Task が並列に動作するような設計、実装によってプログラム全体の
44 処理速度を上げていく。
44 </p> 45 </p>
45 </article> 46 </article>
46 47
47 <article > 48 <article >
48 <h3>Cerium とは</h3> 49 <h3>Cerium とは</h3>
117 118
118 <article> 119 <article>
119 <h3>並列処理向け I/O の 設計と実装</h3> 120 <h3>並列処理向け I/O の 設計と実装</h3>
120 <br> 121 <br>
121 <ul> 122 <ul>
122 <li>mmap の仕様</li> 123 <li>mmap での実装</li>
123 <li>divide read の実装</li> 124 <li>Block Read の実装</li>
124 <li>Cerium の改良(IO_0 の追加)</li> 125 <li>Cerium の改良(IO_0 の追加)</li>
125 </ul> 126 </ul>
126 </article> 127 </article>
127 128
128 <article> 129 <article>
161 </pre> 162 </pre>
162 </article> 163 </article>
163 164
164 <article> 165 <article>
165 <h3>mmap の仕様</h3> 166 <h3>mmap の仕様</h3>
166 <br> 167 <table border="0" cellpadding="0" cellspacing="0">
167 <img src='images/mmap.png' style="height:300px"> 168 <tbody>
169 <tr>
170 <td><img src='images/mmap.png' style="height:350px"></td>
171 <td>
172 <ol>
173 <font size = 5>
174 <li>
175 code がシンプル (memory を自分自身で malloc せず、read を書いて読み込まなくていいため)
176 </li>
177 <li>
178 memory より大きなファイルは開けない
179 </li>
180 <li>
181 ファイルを一度で memory に対して mapping する
182 </li>
183 <li>
184 read の先読みがOS依存
185 </li>
186 </font>
187 </ol>
188 </td>
189 </tr>
190 </tbody>
191 </table>
168 192
169 <ul> 193 <ul>
170 <li>
171 code がシンプル (read を書いて読み込まなくていいため)
172 </li>
173 <li>
174 memory より大きなファイルは開けない
175 </li>
176 <li>
177 ファイルを一度で memory に対して mapping する
178 </li>
179 <li>
180 read の先読みがOS依存
181 </li>
182 </ul> 194 </ul>
183 </article> 195 </article>
184 196
185 <article> 197 <article>
186 <h3>divide read の設計</h3> 198 <h3>Block Read の設計(1/2)</h3>
187 <br> 199 <br>
188 <img src='images/divide_read.png' style="height:250px"> 200 <img src='images/divide_read.png' style="height:250px">
189 <br> 201 <br>
190 202
191 <ul> 203 <ul>
242 </ul> 254 </ul>
243 </article> 255 </article>
244 --> 256 -->
245 257
246 <article> 258 <article>
247 <h3>divide read の実装(1)</h3> 259 <h3>Block Read の設計(2/2)</h3>
248 <br> 260 <br>
249 <h3 class="yellow">divide Read の実装</h3> 261 <img src='images/blockread.png' style="height:250px">
262 <br>
263
264 <ol>
265 <li>
266 </li>
267 <li>
268 </li>
269 <li>
270 </li>
271 <li>
272 </li>
273 </ol>
274 </article>
275
276
277 <article>
278 <h3>Block Read の実装(2)</h3>
279 <br>
280 <h3 class="yellow">Block Read の実装</h3>
250 <pre> 281 <pre>
251 HTaskPtr t_read = manager->create_task(READ_TASK); 282 HTaskPtr t_read = manager->create_task(READ_TASK);
252 t_read->set_cpu(read_spe_cpu); 283 t_read->set_cpu(read_spe_cpu);
253 t_read->set_param(0,w->fd); 284 t_read->set_param(0,w->fd);
254 t_read->set_param(1,w->task_spawned*w->division_size); 285 t_read->set_param(1,w->task_spawned*w->division_size);
264 295
265 </pre> 296 </pre>
266 </article> 297 </article>
267 298
268 <article> 299 <article>
269 <h3>divide read の実装(2)</h3> 300 <h3>Block Read の実装(3)</h3>
270 <br> 301 <br>
271 <h3 class="yellow">divide Read の記述</h3> 302 <h3 class="yellow"> Block Read の記述</h3>
272 <pre> 303 <pre>
273 static int 304 static int
274 read_task(SchedTask *s, void *rbuf, void *wbuf) 305 read_task(SchedTask *s, void *rbuf, void *wbuf)
275 { 306 {
276 long fd = (long)s->get_param(0); 307 long fd = (long)s->get_param(0);