Mercurial > hg > Papers > 2014 > masakoha-sigos
comparison slide/April_25th.html @ 28:32c82211d53e
add slide
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 05 May 2014 23:09:26 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
27:6c57aef715a0 | 28:32c82211d53e |
---|---|
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <meta http-equiv="content-type" content="text/html;charset=utf-8"> | |
5 <title>slide</title> | |
6 | |
7 <!-- | |
8 Notes on CSS media types used: | |
9 | |
10 1) projection -> slideshow mode (display one slide at-a-time; hide all others) | |
11 2) screen -> outline mode (display all slides-at-once on screen) | |
12 3) print -> print (and print preview) | |
13 | |
14 Note: toggle between projection/screen (that is, slideshow/outline) mode using t-key | |
15 | |
16 Questions, comments? | |
17 - send them along to the mailinglist/forum online @ http://groups.google.com/group/webslideshow | |
18 --> | |
19 | |
20 <!-- styles --> | |
21 <style media="screen,projection"> | |
22 | |
23 html, | |
24 body, | |
25 .presentation { margin: 0; padding: 0; } | |
26 | |
27 .slide { display: none; | |
28 position: absolute; | |
29 top: 0; left: 0; | |
30 margin: 0; | |
31 border: none; | |
32 padding: 2% 4% 0% 4%; /* css note: order is => top right bottom left */ | |
33 -moz-box-sizing: border-box; | |
34 -webkit-box-sizing: border-box; | |
35 box-sizing: border-box; | |
36 width: 100%; height: 100%; /* css note: lets use border-box; no need to add padding+border to get to 100% */ | |
37 overflow-x: hidden; overflow-y: auto; | |
38 z-index: 2; | |
39 } | |
40 | |
41 .slide.current { display: block; } /* only display current slide in projection mode */ | |
42 | |
43 .slide .stepcurrent { color: black; } | |
44 .slide .step { color: silver; } /* or hide next steps e.g. .step { visibility: hidden; } */ | |
45 | |
46 .slide { | |
47 /* | |
48 background-image: -webkit-linear-gradient(top, blue, aqua, blue, aqua); | |
49 background-image: -moz-linear-gradient(top, blue, aqua, blue, aqua); | |
50 */ | |
51 } | |
52 </style> | |
53 | |
54 <style media="screen"> | |
55 .slide { border-top: 1px solid #888; } | |
56 .slide:first-child { border: none; } | |
57 </style> | |
58 | |
59 <style media="print"> | |
60 .slide { page-break-inside: avoid; } | |
61 .slide h1 { page-break-after: avoid; } | |
62 .slide ul { page-break-inside: avoid; } | |
63 </style> | |
64 | |
65 | |
66 <!-- add js lib (jquery) --> | |
67 <script src="js/jquery-1.7.min.js"></script> | |
68 | |
69 <!-- S6 JS --> | |
70 <script src="js/jquery.slideshow.js"></script> | |
71 <script src="js/jquery.slideshow.counter.js"></script> | |
72 <script src="js/jquery.slideshow.controls.js"></script> | |
73 <script> | |
74 $(document).ready( function() { | |
75 Slideshow.init(); | |
76 | |
77 // Example 2: Start Off in Outline Mode | |
78 // Slideshow.init( { mode: 'outline' } ); | |
79 | |
80 // Example 3: Use Custom Transition | |
81 // Slideshow.transition = transitionScrollUp; | |
82 // Slideshow.init(); | |
83 | |
84 // Example 4: Start Off in Autoplay Mode with Custom Transition | |
85 // Slideshow.transition = transitionScrollUp; | |
86 // Slideshow.init( { mode: 'autoplay' } ); | |
87 } ); | |
88 </script> | |
89 | |
90 </head> | |
91 <body> | |
92 | |
93 | |
94 <div class="presentation"> | |
95 | |
96 <div class='slide cover'> | |
97 <table width="90%" height="90%" border="0" align="center"> | |
98 <tr> | |
99 <td><div align="center"> | |
100 <h1>Cerium による並列処理向け I/O の設計と実装</h1> | |
101 </div> | |
102 </td> | |
103 </tr> | |
104 <tr> | |
105 <td><div align="right"> | |
106 <name>琉球大学大学院 古波倉 正隆,河野 真治</name> | |
107 </div></td> | |
108 </tr> | |
109 </tr> | |
110 </table> | |
111 </div> | |
112 | |
113 | |
114 | |
115 <div id="cover"> | |
116 | |
117 <h3>I/Oを含むアプリケーションの並列化</h3> | |
118 I/O を含む Task は ディスクかの読み込む時間がかかる。<br> | |
119 -> <font color = red>I/O をどうにか速くできないか?</font> | |
120 <p> | |
121 Cerium : <br> | |
122 CellおよびLinux、 Mac OS X 上で動く並列プログラミングフレームワーク | |
123 </p> | |
124 <img src='images/resources.png' style="height:170px" align="middle"> | |
125 <ul> | |
126 <li><font color=red>ファイル読み込みとアプリケーションの分離</font> </li> | |
127 <li><font color=red>I/O専用の Threadを追加</font></li> | |
128 </ul> | |
129 mmap 実装と比較して1.5倍の速度を得た | |
130 | |
131 </div> | |
132 | |
133 <div id="cover"> | |
134 | |
135 <h3>Cerium Task Manager の構造</h3> | |
136 <table border="0" cellpadding="0" cellspacing="0"> | |
137 <tbody> | |
138 <tr> | |
139 <td><img src='images/ceriumtaskmanager.png' style="height:280px"></td> | |
140 <td> | |
141 <ol> | |
142 <li>Taskを生成</li> | |
143 <li>依存関係のチェック</li> | |
144 <li>Schedulerに転送</li> | |
145 <li>並列実行</li> | |
146 </ol> | |
147 </td> | |
148 </tr> | |
149 </tbody> | |
150 </table> | |
151 <p> | |
152 ファイルを読みながら、Word Count や grep などを<br> | |
153 並列実行したい | |
154 </p> | |
155 <p> | |
156 計算よりも読み込みを優先しなければならない。読み込みで待ちが入ってしまうので、IO Thread を追加 | |
157 </p> | |
158 | |
159 </div> | |
160 <!-- add slides here; example --> | |
161 | |
162 <div class='cover'> | |
163 <h3>Block 単位の読み込みと並列計算</h3> | |
164 <br> | |
165 <img src='images/includeIOTask.png' style="height:270px" align="middle"> | |
166 <ol> | |
167 <li>ファイルをある一定の大きさで読み込む</li> | |
168 <li>読み込んだテキストファイルに対して、それぞれ計算を行う</li> | |
169 <li>計算した結果を集計する</li> | |
170 </ol> | |
171 </div> | |
172 | |
173 | |
174 <div class='cover'> | |
175 <h3>mmap の特徴</h3> | |
176 従来では mmap を使って読み込んでいた | |
177 <table border="0" cellpadding="0" cellspacing="0"> | |
178 <tbody> | |
179 <tr> | |
180 <td><img src='images/mmap.png' style="height:350px" align="middle"></td> | |
181 <td> | |
182 <ul> | |
183 <font size = 5> | |
184 <li> | |
185 mmap は、ファイルを直接メモリ空間に map する。<br> | |
186 アクセスされたメモリ部分を OS が自動的に読み込む。<br> | |
187 </li> | |
188 <li> | |
189 code がシンプルだが、読み込み終わるまで待たされる。 <br> | |
190 </li> | |
191 </font> | |
192 </ul> | |
193 </td> | |
194 </tr> | |
195 </tbody> | |
196 </table> | |
197 </div> | |
198 | |
199 | |
200 <div class='cover'> | |
201 <h3>読み込みながら計算を行う</h3> | |
202 <br> | |
203 <img src='images/divide_read.png' style="height:250px" align="middle" > | |
204 <br> | |
205 | |
206 <ul> | |
207 <li> Read は 連続で動作しファイルを読み込む </li> | |
208 <li> Read の待ちは CPU を消費しない </li> | |
209 <li> 読み込み終わったブロックに対して、<br>並列 Task を起動する </li> | |
210 </ul> | |
211 </div> | |
212 | |
213 | |
214 <div class='cover'> | |
215 <h3>Blocked Read の実装</h3> | |
216 <br> | |
217 <img src='images/blockread.png' style="height:250px"align="middle"> | |
218 <br> | |
219 | |
220 <ul> | |
221 <li> | |
222 Task を一度に生成するとメモリを圧迫する。<br> | |
223 Block 単位で徐々に起動していく。 | |
224 </li> | |
225 <li> | |
226 Blocked Read Task が読み込み終わるまで、<br>Task Blockを待たせる | |
227 </li> | |
228 <li> | |
229 待ち合わせには Cerium の wait for を使用する。 | |
230 </li> | |
231 </ul> | |
232 </div> | |
233 | |
234 <div class='cover'> | |
235 <h3>I/O 専用 thread での Blocked Read の実装</h3> | |
236 <br> | |
237 <img src='images/IO_0blockread.png' style="height:350px"> | |
238 <ul> | |
239 <li>priority が最優先されるので、Blocked Read Task に割り込みが行われなくなる<br> | |
240 <li>pthread_setschedparam にて実装<br> | |
241 </li> | |
242 </ul> | |
243 </div> | |
244 | |
245 <div class="cover"> | |
246 <h3>I/O 専用の thread を使用しない場合</h3> | |
247 <br> | |
248 <img src='images/SPE_ANYblockread.png' style="height:350px"> | |
249 <ul> | |
250 <li>Blocked Read は連続で行われなければならない。<br>しかし、Task が割り振られてしまう可能性がある。 </li> | |
251 </ul> | |
252 </div> | |
253 | |
254 <div class='cover'> | |
255 <h3>実験環境</h3> | |
256 <br> | |
257 <ul> | |
258 <li> Mac OS X 10.9.1</li> | |
259 <li> 2*2.66 GHz 6-Core Intel Xeon</li> | |
260 <li> Memory 16GB 1333MHz DDR3</li> | |
261 <li> HHD 1TB</li> | |
262 <li> file size : 約 10 GB</li> | |
263 <li> ファイルに対して Boyer-Moore String Seaech で文字列検索をかける </li> | |
264 <li> ファイルの読み込みから結果までを測定</li> | |
265 </ul> | |
266 </div> | |
267 | |
268 | |
269 <div class='cover'> | |
270 <table border="2" cellpadding="0" cellspacing="0"> | |
271 <tbody> | |
272 <tr> | |
273 <td>read mode</td> | |
274 <td>CPU num</td> | |
275 <td>ave time(s)</td> | |
276 </tr> | |
277 <tr> | |
278 <td>mmap</td> | |
279 <td>2</td> | |
280 <td>106.2</td> | |
281 </tr> | |
282 <tr> | |
283 <td bgcolor="#ffffcc">mmap</td> | |
284 <td bgcolor="#ffffcc">12</td> | |
285 <td bgcolor="#ffffcc">154.6</td> | |
286 </tr> | |
287 <tr> | |
288 <td>一括Read</td> | |
289 <td>12</td> | |
290 <td>114.9</td> | |
291 </tr> | |
292 <tr> | |
293 <td>Blocked Read(SPE_ANY)</td> | |
294 <td>12</td> | |
295 <td>106.0</td> | |
296 </tr> | |
297 <tr> | |
298 <td bgcolor="#ffffcc">Blocked Read(IO_0)</td> | |
299 <td bgcolor="#ffffcc">(IO) 1 + (Task) 11</td> | |
300 <td bgcolor="#ffffcc">99.2</td> | |
301 </tr> | |
302 </tbody> | |
303 </table> | |
304 | |
305 <ul> | |
306 <li> Blocked Read & IO_0 が mmap より<font color=red>1.55倍</font>速度が向上<br> </li> | |
307 <li> Blocked Read を IO 専用 thread で実装すると、<font color=red>6%</font>改善<br> </li> | |
308 <!-- | |
309 <li> mmap では 1つ1つの Task がファイルの読み込みを行ってしまうため、読み込み回数が多くなり実行速度が遅くなったと考えられる。 </li> | |
310 | |
311 --> | |
312 <li> mmap で並列の Task で走らせると 1つ1つの Task がファイルを読み込み、ランダムアクセスとなって<br>しまうため速度が遅くなってしまう。</li> | |
313 </ul> | |
314 </div> | |
315 | |
316 | |
317 <div class='cover'> | |
318 <h3>まとめ</h3> | |
319 <ul> | |
320 <li> I/O と Task を分離し、同時に動くように改良した。 </li> | |
321 <li> I/O 専用の Thread の追加 </li> | |
322 <li> | |
323 I/O を含む Task をで並列実装するときに mmap では不向きであり、 | |
324 Blocked Read で読み込みを制御したほうが効果的。 | |
325 </li> | |
326 </ul> | |
327 <h3 class="yellow">今後の課題</h3> | |
328 <ul> | |
329 <li> Cerium の API として実装 </li> | |
330 <li> | |
331 様々な実装の試み<br>(I/O threads を 2つ、分割 mmap・・・) | |
332 </li> | |
333 <li> | |
334 grepの実装 | |
335 </li> | |
336 </ul> | |
337 </div> | |
338 | |
339 <div class='cover'> | |
340 </div> | |
341 | |
342 <div class="cover"> | |
343 </div> | |
344 | |
345 <div class='cover'> | |
346 </div> | |
347 | |
348 | |
349 <div class='cover'> | |
350 </div> | |
351 | |
352 | |
353 <div class='cover'> | |
354 </div> | |
355 | |
356 <div class='cover'> | |
357 </div> | |
358 | |
359 <div class="cover"> | |
360 </div> | |
361 | |
362 </div> <!-- presentation --> | |
363 </body> | |
364 </html> |