annotate Dec-2013/17th.html @ 6:89f82b09e32c

finish?? 17th
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Tue, 17 Dec 2013 19:03:45 +0900
parents a96eeacc9d7b
children dafc2806d661
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 <!DOCTYPE html>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 <!--
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 Google HTML5 slide template
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 Authors: Luke Mahé (code)
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 Marcin Wichary (code and design)
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 Dominic Mazzoni (browser compatibility)
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 Charles Chen (ChromeVox support)
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 URL: http://code.google.com/p/html5slides/
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 -->
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 <html>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 <head>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
17 <title>slide</title>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 <meta charset='utf-8'>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 <script
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 src='http://html5slides.googlecode.com/svn/trunk/slides.js'></script>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 </head>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 <style>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 /* Your individual styles here, or just use inline styles if that’s
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 what you want. */
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 .slides article { background-image: none !important; background-color: white; }
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 </style>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 <body style='display: none'>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 <section class='slides layout-regular template-default'>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 <!-- Your slides (<article>s) go here. Delete or comment out the
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 slides below.-->
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 <article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 <h1>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 Cerium Task Manager
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 <br>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 による正規表現の実装
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 </h1>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 <p>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 Masataka Kohagura
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 <br>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
47 10th December , 2013
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 </p>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 </article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 <article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 <h3>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 研究目的
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 </h3>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 <p>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 マルチコア CPU を最大限に活かすためには、並列プログラミングによる並列度を向上させなければならないが、実装が難しい。
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 当研究室では Cerium Libraryを提供することによって並列プログラミングを容易にしているが、ファイル読み込み等のI/O部分に関してはまだ実装されていない。
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 </p>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 <p>
6
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
60 本研究ではその例題として正規表現を実装し、I/Oの順次読み込みとTaskの並列化の設計・実装によって既存の正規表現の処理速度、処理効率を上げる。
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 </p>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
62
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 </article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 <article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 <h3>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 今週のしたこと
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 </h3>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
69 <ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
70
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
71 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
72 read関数によるfileの順次読み込み<br>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
73 (読み込み部分をread()からpread()へ変更)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
74 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
75
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
76 <li>
6
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
77 Read Taskのブロック化<br>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
78 (1つずつ起動していたものを、ブロック単位で起動するようにした)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
79 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
80
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
81 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
82 MapReduce関数の整理
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
83 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
84
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
85 <ul>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 </article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 <!--
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 <article class='smaller'>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 <h3>I/O並列化のシーケンス図(mmap)</h3>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 <div align="center">
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 <IMG SRC="mmap.png">
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 </div>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 <li>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 codeがシンプル(readを書いて読み込まなくていいため)
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 </li>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 <li>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 memoryより大きなファイルは開けない
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 </li>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 <li>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 readの先読みがOS依存
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 </li>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 </article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 -->
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 <article>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
109
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
110 <h3> readからpreadへ</h3>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
111 <p>変更前</p>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 <section><pre>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
113 int *fd = (int *)s->get_input(rbuf,0); ///ファイルディスクリプタの受取
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
114 long readsize = (long)s->get_param(0);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
115 long task_number = (long)s->get_param(1);
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
116
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
117 char text[(long)readsize];
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
118
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
119 <font color="red">read(*fd,text,(long)readsize);</font>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
120
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
121 s->printf("[start task No. %d]\n",task_number);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
122 s->printf("%s\n",text);
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 </pre></section>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
125 <p>変更後</p>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 <section><pre>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
127 <font color="red">pread(*fd, text, (long)read_size , division_size*task_number);</font>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 </pre></section>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 </article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
132 <article class='smaller'>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 <h3>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
134 pread
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 </h3>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
136
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 <section><pre>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
138 read(int fd, void *buf, size_t count);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
139 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
140
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
141 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
142 pread(int fd, void *buf, size_t count, <font color="red">off_t offset</font>);
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 </pre></section>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
145 <ul>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
146 <li>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
147 fd:ファイルディスクリプタ
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
148 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
149 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
150 buf:readするDataの格納領域
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
151 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
152 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
153 count:どれだけの量(byte)を読み込むか
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
154 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
155 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
156 offset:ファイルの先頭からどれだけの量(byte)を飛ばして読み込むのか
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
157 </li>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
158 </ul>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
159
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
160 <p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
161 read関数だと、Taskの起動する順番やタイミングによって同じ場所を読み込んだりしてしまう。read関数は読み込んだ後にファイルディスクリプタをずらしてしまうので、そのような現象が起こると考えられる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
162 </p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
163 <p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
164 pread関数だと、ファイルディスクリプタを動かさずにoffsetを取ることで読み込む場所が替えることができる。これだと、上記の現象が起こらずにすむ。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
165 </p>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
166 </article>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
167
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
168
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
169 <article>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
170 <h3>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
171 readでの読み込みの失敗例
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
172 </h3>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 <section><pre>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
174 % ./fileread -file d.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
175 filesize : 16398
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
176 one_task_size: 16384
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
177 task_num : 2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
178 [start task No. 0]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
179 firstaaaaaaaaaaaaaaaaaaaaaa...16380
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
180 doin
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
181 [start task No. 1]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
182 firstaaaaaaaaa
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
183 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
184
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
185 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
186 [start task No. 0]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
187 gxbaaabaaabab
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
188 [start task No. 1]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
189 gxbaaabaaabab
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
190 </pre></section>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
191 </article>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
193 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
194 <h3>Read Taskのblock化</h3>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
195 <p>変更前</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
196 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
197 run_start(TaskManager *manager,char *filename)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
198 {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
199 HTask *read;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
200 int *fd = (int*)manager->allocate(sizeof(int));
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
201
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
202 if ((*fd=open(filename,O_RDONLY,0666))==0) {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
203 fprintf(stderr,"can't open %s\n",filename);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
204 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
205 ...
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
206
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
207 for(int task_number = 0; task_number < task_num; task_number++){
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
208 read = manager->create_task(READ_TASK);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
209 read->set_cpu(spe_cpu);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
210
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
211 [task settings(省略)]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
212
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
213 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
214 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
215 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
216 </article>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
217
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
218 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
219 <p>変更後</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
220 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
221 run_start(TaskManager *manager,char *filename)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
222 {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
223 int *fd = (int*)manager->allocate(sizeof(int));
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
224
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
225 if ((*fd=open(filename,O_RDONLY,0666))==0) {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
226 fprintf(stderr,"can't open %s\n",filename);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
227 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
228
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
229 if (fstat(*fd,sb)) {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
230 fprintf(stderr,"can't fstat %s\n",filename);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
231 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
232 ...
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
233
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
234 FilereadPtr fr = (FilereadPtr)manager->allocate(sizeof(Fileread));
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
235
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
236 HTaskPtr run = manager->create_task(RUN_BLOCKS, (memaddr)&fr->self, sizeof(memaddr),0,0);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
237 run->spawn();
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
238 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
239 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
240 </article>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
241
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
242 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
243 <p>RUN_BLOCKS</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
244 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
245 SchedDefineTask1(RUN_BLOCKS,run16);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
246
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
247 run16(SchedTask *manager, void *in, void *out) {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
248
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
249 FilereadPtr fr = (FilereadPtr)in;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
250 HTaskPtr wait;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
251
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
252 for (int i = 0; (fr->left_size > 0) && (i < fr->task_blocks); i++) {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
253 HTaskPtr read = manager->create_task(Read_task);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
254 read->set_cpu(fr->cpu);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
255
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
256 if (i == fr->task_blocks / 2) wait = read;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
257
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
258 [task settings(省略)]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
259
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
260 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
261 return 0;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
262 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
263 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
264
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
265 <ul>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
266 <li>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
267 Taskを1個1個起動ではなくブロック単位で起動している理由は、メモリの再利用のためである。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
268 1個1個起動すると、その分のメモリが必要となり、Task数が多くなると肥大化する。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
269 ブロック単位で起動することでメモリを節約するとともに、メモリの書き換えが少なくて済むので高速化につながる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
270 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
271 </ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
272 </article>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
273
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
274
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
275 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
276 <h3>Taskのブロック化の図(1)</h3>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
277 <p>word countでの実装</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
278 <p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
279 <div align="center">
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
280 <img src="images/old_run_task_blocks.jpg" width="40%" height="40%">
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
281 </div>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
282 </p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
283 <ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
284 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
285 run16がブロック単位でTaskを起動する。word countでは48 Task/1block。
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
286 </li>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
287 <li>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
288 ブロック内の処理が全て終わらないと、新しいブロックを生成することができない。<br>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
289 すべてのTaskが終わるまで待つので、オーバヘッドが起こる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
290 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
291 </ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
292 </article>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
293
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
294 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
295 <h3>Taskのブロック化の図(2)</h3>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
296 <p>filereadでの実装</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
297 <div align="center">
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
298 <img src="images/new_run_task_blocks.jpg" width="40%" height="40%">
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
299 </div>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
300 <ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
301 <li>
6
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
302 run16でブロック単位を起動することは変わりはないが、1ブロックのTask数の半分がspawnすると新しいブロックを起動するようになっている。
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
303 </li>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
304 </ul>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
305 </article>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
306
6
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
307 <article class='smaller'>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
308 <h3>Map Reduce</h3>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
309 <p>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
310 <div align="center">
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
311 <img src="images/mapreduce.jpg" width="100%" height="100%">
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
312 </div>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
313 </p>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
314 <ul>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
315 <li>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
316 スライド作成間に合わない・・・
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
317 </li>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
318 </ul>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
319 </article>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
320 </body>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
321 </html>