annotate Dec-2013/17th.html @ 7:dafc2806d661

fix
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Tue, 17 Dec 2013 21:52:55 +0900
parents 89f82b09e32c
children
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>
7
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
56 当研究室では、CellやマルチコアCPUで並列プログラミングを可能にするCerium Task Managerを開発している。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
57 </p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
58 <p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
59 マルチコア CPU を最大限に活かすためには、プログラムの並列度を向上させなければならないが、実装が難しい。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
60 当研究室では Cerium Libraryを提供することによって並列プログラミングを容易にしているが、ファイル読み込み等のI/O部分に関してはまだAPIが実装されていない。
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 </p>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 <p>
6
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
63 本研究ではその例題として正規表現を実装し、I/Oの順次読み込みとTaskの並列化の設計・実装によって既存の正規表現の処理速度、処理効率を上げる。
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 </p>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
65
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 </article>
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 <article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 <h3>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 今週のしたこと
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 </h3>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
72 <ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
73
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 read関数によるfileの順次読み込み<br>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
76 (読み込み部分をread()からpread()へ変更)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
77 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
78
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
79 <li>
6
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
80 Read Taskのブロック化<br>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
81 (1つずつ起動していたものを、ブロック単位で起動するようにした)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
82 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
83
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
84 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
85 MapReduce関数の整理
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
86 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
87
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
88 <ul>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 </article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 <!--
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 <article class='smaller'>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 <h3>I/O並列化のシーケンス図(mmap)</h3>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 <div align="center">
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 <IMG SRC="mmap.png">
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 </div>
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 codeがシンプル(readを書いて読み込まなくていいため)
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 memoryより大きなファイルは開けない
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 <li>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 readの先読みがOS依存
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 </li>
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 </article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 -->
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 <article>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
112
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
113 <h3> readからpreadへ</h3>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
114 <p>変更前</p>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 <section><pre>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
116 int *fd = (int *)s->get_input(rbuf,0); ///ファイルディスクリプタの受取
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
117 long readsize = (long)s->get_param(0);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
118 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
119
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
120 char text[(long)readsize];
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
121
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
122 <font color="red">read(*fd,text,(long)readsize);</font>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
123
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
124 s->printf("[start task No. %d]\n",task_number);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
125 s->printf("%s\n",text);
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 </pre></section>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
128 <p>変更後</p>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 <section><pre>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
130 <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
131 </pre></section>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 </article>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
135 <article class='smaller'>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 <h3>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
137 pread
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 </h3>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
139
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 <section><pre>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
141 read(int fd, void *buf, size_t count);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
142 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
143
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
144 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
145 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
146 </pre></section>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
148 <ul>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
149 <li>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
150 fd:ファイルディスクリプタ
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 buf:readするDataの格納領域
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 count:どれだけの量(byte)を読み込むか
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
157 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
158 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
159 offset:ファイルの先頭からどれだけの量(byte)を飛ばして読み込むのか
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
160 </li>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
161 </ul>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
162
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 read関数だと、Taskの起動する順番やタイミングによって同じ場所を読み込んだりしてしまう。read関数は読み込んだ後にファイルディスクリプタをずらしてしまうので、そのような現象が起こると考えられる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
165 </p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
166 <p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
167 pread関数だと、ファイルディスクリプタを動かさずにoffsetを取ることで読み込む場所が替えることができる。これだと、上記の現象が起こらずにすむ。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
168 </p>
2
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
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
171
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
172 <article>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
173 <h3>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
174 readでの読み込みの失敗例
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
175 </h3>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 <section><pre>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
177 % ./fileread -file d.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
178 filesize : 16398
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
179 one_task_size: 16384
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
180 task_num : 2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
181 [start task No. 0]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
182 firstaaaaaaaaaaaaaaaaaaaaaa...16380
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
183 doin
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
184 [start task No. 1]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
185 firstaaaaaaaaa
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
186 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
187
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
188 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
189 [start task No. 0]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
190 gxbaaabaaabab
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
191 [start task No. 1]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
192 gxbaaabaaabab
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
193 </pre></section>
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
194 </article>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
196 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
197 <h3>Read Taskのblock化</h3>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
198 <p>変更前</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
199 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
200 run_start(TaskManager *manager,char *filename)
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 HTask *read;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
203 int *fd = (int*)manager->allocate(sizeof(int));
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 if ((*fd=open(filename,O_RDONLY,0666))==0) {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
206 fprintf(stderr,"can't open %s\n",filename);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
207 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
208 ...
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
209
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
210 for(int task_number = 0; task_number < task_num; task_number++){
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
211 read = manager->create_task(READ_TASK);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
212 read->set_cpu(spe_cpu);
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 [task settings(省略)]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
215
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
216 }
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 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
219 </article>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
220
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
221 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
222 <p>変更後</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
223 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
224 run_start(TaskManager *manager,char *filename)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
225 {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
226 int *fd = (int*)manager->allocate(sizeof(int));
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 if ((*fd=open(filename,O_RDONLY,0666))==0) {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
229 fprintf(stderr,"can't open %s\n",filename);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
230 }
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 if (fstat(*fd,sb)) {
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
233 fprintf(stderr,"can't fstat %s\n",filename);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
234 }
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
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
237 FilereadPtr fr = (FilereadPtr)manager->allocate(sizeof(Fileread));
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 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
240 run->spawn();
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 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
243 </article>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
244
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
245 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
246 <p>RUN_BLOCKS</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
247 <section><pre>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
248 SchedDefineTask1(RUN_BLOCKS,run16);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
249
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
250 run16(SchedTask *manager, void *in, void *out) {
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 FilereadPtr fr = (FilereadPtr)in;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
253 HTaskPtr wait;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
254
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
255 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
256 HTaskPtr read = manager->create_task(Read_task);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
257 read->set_cpu(fr->cpu);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
258
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
259 if (i == fr->task_blocks / 2) wait = read;
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 [task settings(省略)]
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 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
264 return 0;
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
265 }
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
266 </pre></section>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
267
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
268 <ul>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
269 <li>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
270 Taskを1個1個起動ではなくブロック単位で起動している理由は、メモリの再利用のためである。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
271 1個1個起動すると、その分のメモリが必要となり、Task数が多くなると肥大化する。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
272 ブロック単位で起動することでメモリを節約するとともに、メモリの書き換えが少なくて済むので高速化につながる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
273 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
274 </ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
275 </article>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
276
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
277
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
278 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
279 <h3>Taskのブロック化の図(1)</h3>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
280 <p>word countでの実装</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
281 <p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
282 <div align="center">
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
283 <img src="images/old_run_task_blocks.jpg" width="40%" height="40%">
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
284 </div>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
285 </p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
286 <ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
287 <li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
288 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
289 </li>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
290 <li>
5
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
291 ブロック内の処理が全て終わらないと、新しいブロックを生成することができない。<br>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
292 すべてのTaskが終わるまで待つので、オーバヘッドが起こる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
293 </li>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
294 </ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
295 </article>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
296
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
297 <article class='smaller'>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
298 <h3>Taskのブロック化の図(2)</h3>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
299 <p>filereadでの実装</p>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
300 <div align="center">
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
301 <img src="images/new_run_task_blocks.jpg" width="40%" height="40%">
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
302 </div>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
303 <ul>
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
304 <li>
6
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
305 run16でブロック単位を起動することは変わりはないが、1ブロックのTask数の半分がspawnすると新しいブロックを起動するようになっている。
2
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
306 </li>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
307 </ul>
6f538bc4614b add 10th December slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
308 </article>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
309
6
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
310 <article class='smaller'>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
311 <h3>Map Reduce</h3>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
312 <p>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
313 <div align="center">
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
314 <img src="images/mapreduce.jpg" width="100%" height="100%">
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
315 </div>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
316 </p>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
317 <ul>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
318 <li>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
319 スライド作成間に合わない・・・
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
320 </li>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
321 </ul>
89f82b09e32c finish?? 17th
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
322 </article>
0
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
323 </body>
c9b2998eb516 add slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
324 </html>