Mercurial > hg > Papers > 2014 > masakoha-thesis > final
annotate slide/index.html @ 25:3385af0bca0f
write block read
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 10 Feb 2014 22:22:35 +0900 |
parents | 563a4c69048b |
children | 54591c145fec |
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 |
21 | 31 <article class='smaller'> |
14 | 32 <h3>研究背景と目的</h3> |
13 | 33 <p> |
24 | 34 近年のCPUのほとんどはマルチコアであり、それらの性能を引き出すためには並列プログラミングが必須となっている。 |
35 そこで当研究室では、並列プログラミング用フレームワーク、Cerium Task Manager の開発を行い、提供することによって並列プログラミングを容易にしている。 | |
13 | 36 </p> |
37 <p> | |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
38 先行研究では Task の並列化によって、プログラム全体の処理速度は向上している。しかし、ファイル読み込み等の I/O と Task が並列に動作するようにはされていない。 |
13 | 39 </p> |
40 <p> | |
21 | 41 現状では、ファイルを全て memory に mapping を行ってから Task が走るようになっているので、非常に大きいサイズのファイルを読み込むと、ファイルを memory に mapping するまでの時間がオーバーヘッドになってしまう。 |
42 </p> | |
43 <p> | |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
44 本研究では I/O と Task が並列に動作するような設計、実装によってプログラム全体の |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
45 処理速度を上げていく。 |
13 | 46 </p> |
47 </article> | |
14 | 48 |
13 | 49 <article> |
24 | 50 <h3>Cerium Task Manager の流れ</h3> |
13 | 51 <table border="0" cellpadding="0" cellspacing="0"> |
52 <tbody> | |
53 <tr> | |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
54 <td><img src='images/cerium.png' style="height:350px"></td> |
13 | 55 <td> |
56 <ol> | |
24 | 57 <font size=5> |
58 <li>Taskを生成後、Task Managerにて Task の管理、依存関係のチェック</li> | |
59 <li>TaskList に生成された Task を set </li> | |
60 <li>Task を各 Scheduler に転送</li> | |
13 | 61 <li>並列実行</li> |
24 | 62 </font> |
13 | 63 </ol> |
64 </td> | |
65 </tr> | |
66 </tbody> | |
67 </table> | |
68 </article> | |
14 | 69 |
13 | 70 <article> |
24 | 71 <h3>Cerium Task の生成の例(1)</h3> |
72 <p>(例題) multiply : 2つの数を掛け算するプログラム</p> | |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
73 <h3 class="yellow">main.cc の記述</h3> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
74 <pre> |
24 | 75 float* A, B, C; |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
76 // Task の宣言 |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
77 HTaskPtr multiply = manager->create_task(MULTIPLY_TASK); |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
78 // Task を実行する デバイスの設定 |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
79 multiply->set_cpu(SPE_ANY); |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
80 // Task に入力データのアドレスを追加 |
24 | 81 multiply->set_inData(0, (memaddr)A, sizeof(float)*length); |
82 multiply->set_inData(1, (memaddr)B, sizeof(float)*length); | |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
83 // Task に出力データのアドレスを追加 |
24 | 84 multiply->set_outData(0, (memaddr)C, sizeof(float)*length); |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
85 // Task へ値を1つだけ渡す |
24 | 86 multiply->set_param(0,length); |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
87 // Task を TaskList に set する |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
88 multiply->spawn(); </pre> |
13 | 89 </article> |
90 | |
91 <article> | |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
92 <h3>Cerium Task の生成(2)</h3> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
93 <br> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
94 <h3 class="yellow">Task の記述</h3> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
95 <pre> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
96 static int |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
97 multiply(SchedTask *s,void *rbuf, void *wbuf) |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
98 { |
24 | 99 float *A,*B,*C |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
100 // 登録した inData を取得 |
24 | 101 A = (float*)s->get_input(rbuf,0); |
102 B = (float*)s->get_input(rbuf,1); | |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
103 // 登録した outData を取得 |
24 | 104 C = (float*)s->get_output(wbuf,0); |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
105 // 登録した param を取得 |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
106 long length=(long)s->get_param(0); |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
107 for (int i=0;i < length;i++) { |
24 | 108 C[i] = A[i] * B[i]; |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
109 } |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
110 return 0; |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
111 } </pre> |
13 | 112 </article> |
14 | 113 |
13 | 114 <article> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
115 <h3>並列処理向け I/O の 設計と実装</h3> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
116 <br> |
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
117 <ul> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
118 <li>mmap での実装</li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
119 <li>Block Read の実装</li> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
120 </ul> |
13 | 121 </article> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
122 |
13 | 123 <article> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
124 <h3>mmap での I/O の実装(1)</h3> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
125 <br> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
126 <h3 class="yellow">FileRead.h の一部</h3> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
127 <pre> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
128 typedef struct fileRead { |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
129 struct fileRead *self; |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
130 long fd; |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
131 long division_size; |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
132 long file_size; |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
133 ・・・ |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
134 char *read_text; |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
135 CPU_TYPE cpu; |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
136 } FileRead, *FileReadPtr; |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
137 </pre> |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
138 <p> |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
139 Fileを読み込む際にファイルの情報や、Read Task の情報を構造体の中に格納しておく。 |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
140 </p> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
141 </article> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
142 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
143 <article> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
144 <h3>mmap での I/O の実装(2)</h3> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
145 <br> |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
146 <h3 class="yellow">mmap の記述</h3> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
147 <pre> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
148 mmap(SchedTask *s, void *in, void *out) |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
149 { |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
150 FileReadPtr fr = (FileReadPtr)in; |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
151 int map = MAP_PRIVATE; |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
152 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
153 fr->read_text = |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
154 (char*)mmap(NULL,fr->filesize,PROT_READ,map,fr->fd,(off_t)0); |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
155 } |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
156 </pre> |
13 | 157 </article> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
158 |
13 | 159 <article> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
160 <h3>mmap の仕様</h3> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
161 <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
|
162 <tbody> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
163 <tr> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
164 <td><img src='images/mmap.png' style="height:350px"></td> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
165 <td> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
166 <ol> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
167 <font size = 5> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
168 <li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
169 code がシンプル (memory を自分自身で malloc せず、read を書いて読み込まなくていいため) |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
170 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
171 <li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
172 memory より大きなファイルは開けない |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
173 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
174 <li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
175 ファイルを一度で memory に対して mapping する |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
176 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
177 <li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
178 read の先読みがOS依存 |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
179 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
180 </font> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
181 </ol> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
182 </td> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
183 </tr> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
184 </tbody> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
185 </table> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
186 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
187 <ul> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
188 </ul> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
189 </article> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
190 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
191 <article> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
192 <h3>Block Read の設計(1/2)</h3> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
193 <br> |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
194 <img src='images/divide_read.png' style="height:250px"> |
16
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
195 <br> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
196 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
197 <ul> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
198 <li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
199 明示的な read |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
200 </li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
201 <li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
202 先読みを自分で書ける(制御できる) |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
203 </li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
204 <li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
205 code が煩雑 |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
206 </li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
207 <li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
208 memory より大きなファイルを扱える |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
209 </li> |
56cd6800acb5
write slide No.11 & add images
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
210 </ul> |
13 | 211 </article> |
15
9b071b32e3de
add some files and write slide
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
212 |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
213 <!-- |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
214 <article> |
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
215 <h3>divide read の実装(1)</h3> |
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
216 <br> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
217 <h3 class="yellow">Read Task の ブロック化</h3> |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
218 <pre> |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
219 program_run(TaskManager *manager, char *filename) |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
220 { |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
221 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
|
222 fr->self = fr; |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
223 fr->fd = fd; |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
224 ・・・ |
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
225 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
|
226 (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
|
227 |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
228 read->spawn(); |
17
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
229 } |
2d1060de4dfe
write divide read の実装
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
16
diff
changeset
|
230 </pre> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
231 </article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
232 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
233 <article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
234 <h3>divide read の実装(2)</h3> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
235 <br> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
236 <ul> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
237 <li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
238 divide read Task の実行の際に、ブロック単位で Task の生成、実行を行う。 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
239 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
240 <li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
241 1つずつ生成すると Task の数だけ memory address が取られるために肥大化してしまう。 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
242 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
243 <li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
244 しかしブロック単位で生成すると、同じ変数を使用しているので memory の節約になる。 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
245 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
246 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
247 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
248 </ul> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
249 </article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
250 --> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
251 |
24 | 252 |
253 | |
254 <article class='smaller'> | |
255 <h3>Block Read の実装(1/3)</h3> | |
256 <br> | |
257 <h3 class="yellow">Block Read の実装</h3> | |
258 <pre> | |
259 HTaskPtr t_read = manager->create_task(READ_TASK); | |
260 t_read->set_cpu(read_spe_cpu); | |
261 // 読み出すファイルの格納場所を設定 | |
262 t_read->set_outData(0, | |
263 w->file_mmap + w->task_spawned * w->division_size, | |
264 w->task_blocks * w->division_size); | |
265 // ファイルディスクリプタの受け渡し | |
266 t_read->set_param(0,w->fd); | |
267 // ファイル読み込みの始点 | |
268 t_read->set_param(1,w->task_spawned*w->division_size); | |
269 | |
270 // run_tasks(manager,w, w->task_blocks, t_read, t_next, w->division_size + w->extra_len); | |
271 // ここで、ファイルに対して何らかの計算を掛けるような Task を設定する | |
272 run_tasks(manager,w, w->task_blocks,・・・ ); | |
273 | |
274 // ファイル読み込みの終点 | |
275 t_read->set_param(2,w->task_spawned*w->division_size + w->extra_len); | |
276 | |
277 t_read->spawn(); | |
278 | |
279 </pre> | |
280 </article> | |
281 | |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
282 <article class='smaller'> |
24 | 283 <h3>Block Read の実装(2/3)</h3> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
284 <br> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
285 <img src='images/blockread.png' style="height:250px"> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
286 <br> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
287 |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
288 <ul> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
289 <li> |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
290 Task を 1 つずつ生成するのではなく、ブロック単位で生成する。<br> |
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
291 この図では、1 Block 当たり n 個の Task を生成する。<br> |
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
292 (1つずつ生成すると、生成された Task で memory を圧迫するため) |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
293 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
294 <li> |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
295 Task 1つ当たりの読み込む領域を L とする。<br> |
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
296 Block Read Task 1つ当たり、memory に格納する大きさは L × n となる。 |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
297 </li> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
298 <li> |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
299 Block Read Task が読み込み終わるまで、Task Block に wait を掛ける。<br> |
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
300 (Read Task が格納する前に走ると、まだ格納していない領域を読みこんでしまう。) |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
301 </li> |
25
3385af0bca0f
write block read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
24
diff
changeset
|
302 </ul> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
303 </article> |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
304 |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
305 |
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
306 <article> |
24 | 307 <h3>Block Read の実装(3/3)</h3> |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
308 <br> |
23
a452d8f104bd
divede read rename to Block Read
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
309 <h3 class="yellow"> Block Read の記述</h3> |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
310 <pre> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
311 static int |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
312 read_task(SchedTask *s, void *rbuf, void *wbuf) |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
313 { |
21 | 314 long fd = (long)s->get_param(0); |
315 long start_read_position = (long)s->get_param(1); | |
316 long end_read_position = (long)s->get_param(2); | |
317 char *read_text = (char*)s->get_output(wbuf,0); | |
318 long read_size = end_read_position - start_read_position; | |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
319 |
21 | 320 pread(fd, read_text, read_size , start_read_position); |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
321 return 0; |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
322 } |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
323 </pre> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
324 </article> |
18
e735ac7509c6
add image spawn not blocks
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
325 |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
326 <article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
327 <h3>ベンチマーク</h3> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
328 <br> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
329 <h3 class="yellow">考察</h3> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
330 </article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
331 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
332 <article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
333 <h3>まとめ</h3> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
334 <br> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
335 </article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
336 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
337 <article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
338 <h3>大学院に進学してしたいこと</h3> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
339 <br> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
340 <ul> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
341 <li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
342 さらなる 並列処理向け I/O の動作を改善 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
343 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
344 <li> |
21 | 345 分散バージョン I/0 の設計と実装 |
346 </li> | |
347 <li> | |
348 I/O を利用した、マルチコアソフトウェアシンセサイザーを設計 | |
19
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
349 </li> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
350 </ul> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
351 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
352 </article> |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
353 |
36958c5e0b90
add slide pages 8-17
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
354 |
13 | 355 </body> |
356 </html> |