annotate slide/slide.html @ 103:05d7669c4a29

Fix
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Tue, 13 Feb 2018 13:22:51 +0900
parents c48b78793176
children 4b49908418e2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 <!DOCTYPE html>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 <html>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 <head>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 <meta http-equiv="content-type" content="text/html;charset=utf-8">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 <title>Gears OS の並列処理</title>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.3.0 (2015-12-25) [x86_64-darwin16]">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 <meta name="author" content="伊波 立樹" >
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 <!-- style sheet links -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 <link rel="stylesheet" href="s6/themes/screen.css" media="screen">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 <link rel="stylesheet" href="s6/themes/print.css" media="print">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 <!-- JS -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 <script src="s6/js/jquery-1.11.3.min.js"></script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 <script src="s6/js/jquery.slideshow.js"></script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 <script src="s6/js/jquery.slideshow.counter.js"></script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 <script src="s6/js/jquery.slideshow.controls.js"></script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 <script src="s6/js/jquery.slideshow.footer.js"></script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 <script src="s6/js/jquery.slideshow.autoplay.js"></script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 <!-- prettify -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 <link rel="stylesheet" href="scripts/prettify.css">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 <script src="scripts/prettify.js"></script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 <script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 $(document).ready( function() {
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 Slideshow.init();
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 $('code').each(function(_, el) {
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 if (!el.classList.contains('noprettyprint')) {
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 el.classList.add('prettyprint');
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 el.style.display = 'block';
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 }
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 });
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 prettyPrint();
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 } );
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 </script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 <!--[if IE]>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 <script src="s6/js/jquery.microsoft.js"></script>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 <![endif]-->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 </head>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 <body>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 <div class="layout">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 <div id="header"></div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 <div id="footer">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 <div align="right">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 <img src="s6/images/logo.svg" width="200px">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 <div class="presentation">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 <div class='slide cover'>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 <table width="90%" height="90%" border="0" align="center">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 <tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 <td>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 <div align="center">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 <h1><font color="#808db5">Gears OS の並列処理</font></h1>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 </td>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 </tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 <tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 <td>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 <div align="left">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 伊波 立樹
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 琉球大学理工学研究科 河野研
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 </td>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 </tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 </table>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 <!-- === begin markdown block ===
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 generated by markdown/1.2.0 on Ruby 2.3.0 (2015-12-25) [x86_64-darwin16]
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
90 on 2018-02-13 12:53:11 +0900 with Markdown engine kramdown (1.13.2)
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 using options {}
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 <!-- _S9SLIDE_ -->
89
bc7d11285a4a Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
95 <h2 id="section">並列処理の重要性</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 <ul>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
97 <li>並列処理は現在主流のマルチコアCPU の性能を発揮するには重要なものになっている</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
98 <li>しかし、並列処理のチューニングや信頼性を保証するのは難しい
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 <ul>
89
bc7d11285a4a Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
100 <li>共通資源の競合などの非決定的な実行が発生するため、従来のテストやデバッグではテストしきれない部分が残ってしまう</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
101 <li>GPU などのアーキテクチャに合わせた並列プログラミングの記述</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
102 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
103 </li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
104 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
105
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
106
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
107 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
108 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
109 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
110 <h2 id="gears-os">Gears OS</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
111 <ul>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
112 <li>本研究室では処理の単位を Code Gear、 データの単位を Data Gear を用いて 信頼性が高い並列処理を行う Gears OS を開発している</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
113 <li>並列処理の Task を Code Gear と実行するときに必要な Input Data Gear と出力するための Output Data Gear の組で表現される</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
114 <li>計算をノーマルレベルとメタレベルに階層化、 信頼性と拡張性をメタレベルで保証する
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 <ul>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
116 <li>並列処理の信頼性を通常の計算(ノーマルレベル) に保証</li>
89
bc7d11285a4a Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
117 <li>CPU、GPU などの実行環境の切り替え、データ拡張等を提供</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 </li>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 <!-- _S9SLIDE_ -->
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
126 <h2 id="gears-os-1">Gears OS</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
127 <ul>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
128 <li>本研究では Gears OS の並列処理機構、並列処理構文(par goto)の実装、Gears OS を実装するにつれて必要なったモジュール化の導入を行う</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
129 <li>また、並列処理を行う例題を用いて評価、 OpenMP、 Go 言語との比較を行う</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
130 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
131
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
132
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
133 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
134 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
135 <!-- _S9SLIDE_ -->
89
bc7d11285a4a Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
136 <h2 id="code-geardata-gear">Code Gear/Data Gear</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 <ul>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
138 <li>Gears OS は Code Gear、 Data Gear という単位で構成される</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 <li>Code Gear はプログラムの処理そのものを表す</li>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 <li>Data Gear はデータそのものを表す</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
141 <li>Code Gear は必要な Input Data Gear が揃ったら実行し、Output Data Gear を生成する</li>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
142 <li>Code Gear と Input/Output Data Gear の対応から依存関係を解決し、Input Data Gear が揃った Code Gear の並列実行を行う</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 <div style="text-align: center;">
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
146 <img src="./images/codegear-datagear-dependency.svg" alt="message" width="600" />
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 <!-- _S9SLIDE_ -->
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
153 <h2 id="section-1">メタ計算</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 <ul>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
155 <li>メタ計算 は通常の計算を実行するための計算</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
156 <li>信頼性の確保やメモリ管理、スレッド管理、CPU、GPU の資源管理等</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
157 <li>Gears OS のメタ計算は通常の計算とは別の階層のメタレベルで行われる</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
158 <li>メタレベルは Code/Data Gear に対応して Meta Code/Data Gear で行われる</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 <!-- _S9SLIDE_ -->
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
165 <h2 id="meta-gear">Meta Gear</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 <ul>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
167 <li>メタ計算 は Code Gear の接続間に行われる</li>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
168 <li>この Gear を Meta Code/Data Gearと呼ぶ
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
169 <ul>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
170 <li>Meta Code Gear は メタ計算 のプログラム部分</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
171 <li>Meta Data Gear は Meta Code Gear で管理されるデータ部分</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
172 </ul>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
173 </li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
174 <li>Gears OS は通常の Code/Data Gear から Meta Code/Data Gear 部分は見えないように実装を行う</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
176
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
177 <div style="text-align: center;">
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
178 <img src="./images/meta_cg_dg.svg" alt="message" width="850" />
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
179 </div>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
180
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
181
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 <!-- _S9SLIDE_ -->
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
185 <h2 id="continuation-based-c">Continuation based C</h2>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
186 <ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
187 <li>Gears OS の実装は本研究室で開発している Continuation based C(CbC) を用いる</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
188 <li>CbC は Code Gear を用いて記述する事を基本とする</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
189 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
190
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
191
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
192 </div>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
193 <div class='slide '>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
194 <!-- _S9SLIDE_ -->
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
195 <h2 id="continuation-based-c-1">Continuation based C</h2>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
196 <ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
197 <li>CbC の Code Gear の定義は <strong>__code CG名</strong> で行う</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
198 <li>Code Gear 間は <strong>goto CG名</strong> で移動する。この移動を継続と呼ぶ</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
199 <li>Code Gear の継続は C の関数呼び出しとは異なり、戻り値を持たないためスタックの変更を行わない
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
200 <ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
201 <li>このような環境を持たない継続を軽量継続と呼ぶ</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
202 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
203 </li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
204 <li>下記のコードでは Code Gear を2つ定義し、 cg0 から cg1 への継続を示している</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
205 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
206
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
207 <pre lang="c"><code>__code cg0(int a, int b) {
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
208 goto cg1(a+b);
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
209 }
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
210
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
211 __code cg1(int c) {
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
212 goto cg2(c);
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
213 }
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
214 </code></pre>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
215
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
216
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
217 </div>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
218 <div class='slide '>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
219 <!-- _S9SLIDE_ -->
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 <h2 id="data-gear-">Data Gear の表現</h2>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 <ul>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
222 <li>Data Gear は構造体を用いて定義する</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
223 <li>メタ計算では任意の Data Gear を一律に扱うため、全ての Data Gear は共用体の中で定義される</li>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
224 <li>Data Gear をメモリに確保する際のサイズ情報はこの型から決定する</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
226
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 <pre lang="c"><code>/* data Gear define */
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 union Data {
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
229 struct Timer {
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
230 union Data* timer;
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
231 enum Code start;
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
232 enum Code end;
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 enum Code next;
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
234 } Timer;
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
235 struct TimerImpl {
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 double time;
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
237 } TimerImpl;
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 ....
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 };
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 </code></pre>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
241
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
242
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 <!-- _S9SLIDE_ -->
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
246 <h2 id="context">Context</h2>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
247 <ul>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
248 <li>Context は従来のOS のスレッドやプロセスに対応し、以下の要素をもっている Meta Data Gear
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
249 <ul>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
250 <li>Data Gear を確保するためのメモリ空間</li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
251 <li>Code Gear の名前と関数ポインタとの対応表
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
252 <ul>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
253 <li>Code Gear は番号(enum)で指定する</li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
254 </ul>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
255 </li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
256 <li>Code Gear が参照する Data Gear へのポインタ
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
257 <ul>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
258 <li>Code Gear と同じく Data Gear も番号で指定する</li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
259 </ul>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
260 </li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
261 <li>並列実行用の Task 情報</li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
262 <li>Data Gear の型情報</li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
263 </ul>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
264 </li>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
265 <li>Gears OS ではメタ計算で Context を経由して Code/Data Gear に番号でアクセスする</li>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
266 </ul>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
267
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
268
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
269 </div>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
270 <div class='slide '>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
271 <!-- _S9SLIDE_ -->
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
272 <h2 id="stub-code-gear">stub Code Gear</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 <ul>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
274 <li>Data Gear にアクセスするには Context から番号を指定して行う</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 <li>だが、通常の Code Gear では Meta Data Gear である Context の参照は避ける必要がある</li>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
276 <li>Gears OS では Code Gear に接続する Data Gear を メタレベルである Context から取り出す処理を行う stub Code Gear を用意している</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
277 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
278
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
279 <div style="text-align: center;">
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
280 <img src="./images/contextContinuation.svg" alt="message" width="600" />
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
281 </div>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
282
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
283
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
284 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
285 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
286 <!-- _S9SLIDE_ -->
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
287 <h2 id="interface">Interface</h2>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
288 <ul>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
289 <li>Gears OS を実装するに連れて、stub Code Gear の記述が煩雑になることがわかった</li>
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
290 <li>そこで、Gears OS のモジュール化する仕組みとして <strong>Interface</strong> を導入した</li>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
291 <li>Interface はある Data Gear と それに対する操作(API) を行う Code Gear の集合を表現する Meta Data Gear</li>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
292 <li>stub Code Gear はInteface を実装した Code Gear で決まった形になるため、自動生成が可能</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
293 <li>Interface を導入することで、 Stack や Queue などのデータ構造を仕様と実装に分けて記述することが出来る</li>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
294 <li>Interface は Java のインターフェース、 Haskell の型クラスに対応する</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
295 </ul>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
296
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
297
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
298 </div>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
299 <div class='slide '>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
300 <!-- _S9SLIDE_ -->
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
301 <h2 id="interface-">Interface の定義</h2>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
302 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
303 <li>Interface の定義には以下の内容を定義する
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
304 <ul>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
305 <li>操作(API)の引数群の型</li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
306 <li>操作(API)自体のCode Gear の型</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
307 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
308 </li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
309 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
310
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
311 <pre lang="c"><code>typedef struct Queue&lt;Impl&gt;{
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
312 // Data Gear parameter
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
313 union Data* queue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
314 union Data* data;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
315 __code next(...);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
316 __code whenEmpty(...);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
317
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
318 // Code Gear
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
319 __code clear(Impl* queue, __code next(...));
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
320 __code put(Impl* queue, union Data* data, __code next(...));
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
321 __code take(Impl* queue, __code next(union Data*, ...));
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
322 __code isEmpty(Impl* queue, __code next(...), __code whenEmpty(...));
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
323 } Queue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
324 </code></pre>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
325
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
326
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
327 </div>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
328 <div class='slide '>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
329 <!-- _S9SLIDE_ -->
102
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
330 <h2 id="interface--1">Interface の定義</h2>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
331 <ul>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
332 <li><strong>__code next(…)</strong> は一種のクロージャであり、引数で Code Gear を渡すことが出来る</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
333 <li>クロージャの引数には Input Data Gear を指定する</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
334 <li>… は可変長引数のような扱いで、Code Gear が複数の Input Data Gear を待っている可能性がある</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
335 </ul>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
336
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
337 <pre lang="c"><code>typedef struct Queue&lt;Impl&gt;{
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
338 // Data Gear parameter
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
339 union Data* queue;
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
340 union Data* data;
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
341 __code next(...);
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
342 __code whenEmpty(...);
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
343
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
344 // Code Gear
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
345 __code clear(Impl* queue, __code next(...));
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
346 __code put(Impl* queue, union Data* data, __code next(...));
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
347 __code take(Impl* queue, __code next(union Data*, ...));
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
348 __code isEmpty(Impl* queue, __code next(...), __code whenEmpty(...));
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
349 } Queue;
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
350 </code></pre>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
351
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
352
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
353 </div>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
354 <div class='slide '>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
355 <!-- _S9SLIDE_ -->
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
356 <h2 id="interface--2">Interface の実装</h2>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
357 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
358 <li>Interface には複数の実装を行うことが出来る</li>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
359 <li>Code Gear の番号を Interface の定義に代入することで実装を行う</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
360 <li>代入する Code Gear を入れ替えることで別の実装を表現する</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
361 <li>実装した Data Gear の生成は関数呼び出しで行われ、外から見るとInterface の型で扱われる</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
362 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
363
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
364 <pre lang="c"><code>Queue* createSingleLinkedQueue(struct Context* context) {
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
365 struct Queue* queue = new Queue(); // Allocate Queue interface
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
366 struct SingleLinkedQueue* singleLinkedQueue = new SingleLinkedQueue(); // Allocate Queue implement
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
367 queue-&gt;queue = (union Data*)singleLinkedQueue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
368 singleLinkedQueue-&gt;top = new Element();
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
369 singleLinkedQueue-&gt;last = singleLinkedQueue-&gt;top;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
370 queue-&gt;clear = C_clearSingleLinkedQueue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
371 queue-&gt;put = C_putSingleLinkedQueue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
372 queue-&gt;take = C_takeSingleLinkedQueue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
373 queue-&gt;isEmpty = C_isEmptySingleLinkedQueue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
374 return queue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
375 }
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
376 </code></pre>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
377
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
378
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
379 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
380 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
381 <!-- _S9SLIDE_ -->
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
382 <h2 id="interface--code-gear-">Interface を利用した Code Gear の呼び出し</h2>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
383 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
384 <li>Interface を利用した Code Gear への継続は <code>goto interface-&gt;method</code> で行われる</li>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
385 <li><strong>interface</strong> は Interfaceの型で包んだData Gear、 <strong>method</strong> は実装した Code Gear に対応する</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
386 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
387
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
388 <pre lang="c"><code>__code code1() {
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
389 Queue* queue = createSingleLinkedQueue(context);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
390 Node* node = new Node();
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
391 node-&gt;color = Red;
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
392 goto queue-&gt;put(node, code2);
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
393 }
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
394 </code></pre>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
395
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
396
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
397 </div>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
398 <div class='slide '>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
399 <!-- _S9SLIDE_ -->
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
400 <h2 id="interface--code-gear--1">Interface を利用した Code Gear の呼び出し(スクリプト変換後)</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
401 <ul>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
402 <li>Interface を利用した Code Gear の継続はスクリプトによって変換される
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
403 <ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
404 <li>変換後は Context を参照するため、メタレベルの記述になる</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
405 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
406 </li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
407 <li>Gearef マクロは Context から Interface の引数格納用の Data Gear を取り出す</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
408 <li>この Data Gear は Context を初期化した際に特別に生成され、型は Interface と同じになる</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
409 <li>呼び出すCode Gear の引数情報に合わせて引数に格納し、 実装された Code Gear へ継続する</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
410 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
411
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
412 <pre lang="c"><code>__code code1(struct Context *context) {
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
413 Queue* queue = createSingleLinkedQueue(context);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
414 Node* node = &amp;ALLOCATE(context, Node)-&gt;Node;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
415 node-&gt;color = Red;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
416 Gearef(context, Queue)-&gt;queue = (union Data*) queue;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
417 Gearef(context, Queue)-&gt;data = (union Data*) node;
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
418 Gearef(context, Queue)-&gt;next = C_code2;
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
419 goto meta(context, queue-&gt;put);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
420 }
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
421 </code></pre>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
422
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
423
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
424 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
425 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
426 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
427 <h2 id="interface--stub-code-gear">Interface での stub Code Gear</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
428 <ul>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
429 <li>メタ計算で格納された引数は stub Code Gear で Code Gear に渡される</li>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
430 <li>Interface を実装した Code Gear は Interface の定義から stub Code Gear の自動生成が可能</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
431 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
432
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
433 <pre lang="c"><code>// implement put code gear
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
434 __code putSingleLinkedQueue(struct Context *context,struct SingleLinkedQueue* queue,
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
435 union Data* data, enum Code next) {
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
436 ...
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
437 }
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
438
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
439 // generated by script
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
440 __code putSingleLinkedQueue_stub(struct Context* context) {
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
441 SingleLinkedQueue* queue = (SingleLinkedQueue*)GearImpl(context, Queue, queue);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
442 Data* data = Gearef(context, Queue)-&gt;data;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
443 enum Code next = Gearef(context, Queue)-&gt;next;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
444 goto putSingleLinkedQueue(context, queue, data, next);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
445 }
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
446 </code></pre>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
447
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
448
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
449 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
450 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
451 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
452 <h2 id="section-2">並列処理の構成</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
453 <ul>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
454 <li>今回は並列処理機構である
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
455 <ul>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
456 <li>Task</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
457 <li>TaskManager
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
458 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
459 <li>Worker の生成、依存関係を解決したTask を Worker に送信する</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
460 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
461 </li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
462 <li>Worker
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
463 <ul>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
464 <li>SynchronizedQueue から Task を一つずつ取得し、実行する</li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
465 <li>Worker 毎に POSIX Therad などを生成し、それぞれのスレッドで Code Gear を実行する</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
466 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
467 </li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
468 <li>SynchronizedQueue
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
469 <ul>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
470 <li>マルチスレッド環境でもデータの同期が行われる Queue</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
471 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
472 </li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
473 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
474 </li>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
475 <li>をInterface を用いて実装した</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
476 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
477
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
478
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
479 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
480 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
481 <!-- _S9SLIDE_ -->
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
482 <h2 id="task">Task</h2>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
483 <ul>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
484 <li>Gears OS では Context が並列実行の Task に相当する</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
485 <li>Context は Task用の情報として以下の情報をもっている
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
486 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
487 <li>実行する Code Gear</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
488 <li>Input/Output Data Gear の格納場所</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
489 <li>待っている Input Data Gear の数</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
490 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
491 </li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
492 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
493
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
494
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
495 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
496 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
497 <!-- _S9SLIDE_ -->
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
498 <h2 id="taskmanger">TaskManger</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
499 <ul>
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
500 <li>Worker を作成、終了処理を行う
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
501 <ul>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
502 <li>CPU、 GPU の数分生成する</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
503 </ul>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
504 </li>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
505 <li>依存関係を解決した Task を各 Worker の Queue に送信する</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
506 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
507
90
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
508 <div>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
509 <img src="./images/sendTask.svg" alt="message" style="float: left;width: 50%;" />
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
510 <div style="float: left; width: 50%;">
90
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
511 <ol>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
512 <li value="0">Task を Input Data Gear としてTaskManager の spawn を呼び出す</li>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
513 <li value="1">Task が待っている Data Gear のカウンタである IDGCount をチェックする</li>
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
514 <li value="2">IDGCount が0の場合 Data Gear が 揃っているので Worker の Queue に Task を送信する</li>
90
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
515 </ol>
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
516 </div>
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
517 <div style="clear: both;"></div>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
518 </div>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
519
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
520
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
521 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
522 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
523 <!-- _S9SLIDE_ -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
524 <h2 id="worker">Worker</h2>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
525 <ul>
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
526 <li>初期化時に Worker 用の Context を生成し、Code Gear を実行していく</li>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
527 <li>TaskManager から送信された Task を一つずつ取得して実行する</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
528 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
529
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
530 <div>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
531 <img src="./images/workerRun.svg" alt="message" style="float: left;width: 50%;" />
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
532 <div style="float: left; width: 50%;">
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
533 <ol>
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
534 <li>Worker は Queue から Task(Context)を取得する</li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
535 <li>Worker の Context からTask の Context へ入れ替える</li>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
536
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
537 <li>Task に設定されている Code Gear を実行</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
538 <li>Task の Output Data Gear の書き出し</li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
539 <li>Task Context から Worker の Context へ入れ替える</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
540 <li>Worker は再び Queue から Task を取得する</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
541 </ol>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
542 </div>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
543 <div style="clear: both;"></div>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
544 </div>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
545
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
546
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
547 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
548 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
549 <!-- _S9SLIDE_ -->
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
550 <h2 id="synchronized-queue">Synchronized Queue</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
551 <ul>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
552 <li>Worker で使用される Queue は Task を送信するTaskManager と Task を取得する Worker 毎で操作される</li>
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
553 <li>そのためマルチスレッドでのデータの同期処理を行える SynchronizedQueue として実装する</li>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
554 <li>Gears OS では CAS(Check and Set、 Compare and Swap) を使用した実装を行った
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
555 <ul>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
556 <li>CAS は値を更新する際に更新前の値と実際に保存されているメモリ番地の値を比較し、変化がなければ値を更新する</li>
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
557 <li>メモリ番地の値が変わっているなら、もう一度 CAS を行う</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
558 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
559 </li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
560 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
561
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
562 <div style="text-align: center;">
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
563 <img src="./images/synchronizedQueue.svg" alt="message" width="600" />
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
564 </div>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
565
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
566
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
567 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
568 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
569 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
570 <h2 id="section-3">依存関係の解決</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
571 <ul>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
572 <li>依存関係の解決は Data Gear がメタレベルで持っている Queue を使用する</li>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
573 <li>この Queue には Data Gear に依存関係がある Context が格納されている</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
574 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
575
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
576 <div>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
577 <img src="./images/dependency.svg" alt="message" style="float: left;width: 50%;" />
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
578 <div style="float: left; width: 50%;">
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
579 <ol>
94
e71d4ea8a616 Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
580 <li>Task に設定されている Code Gear を実行する</li>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
581 <li>Output Data Gear の書き出し処理を行う際にメタレベルの Queue を参照する</li>
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
582
102
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
583 <li>依存関係にある Task を取り出し、IDGCount をデクリメントする</li>
99
b6bad9440c4d Add images
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
584
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
585 </ol>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
586 </div>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
587 <div style="clear: both;"></div>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
588 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
589
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
590 <ul>
102
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
591 <li>IDGCountの値が0になった実行可能な Task は TaskManager を通して Worker に送信される</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
592 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
593
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
594
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
595 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
596 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
597 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
598 <h2 id="section-4">並列構文</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
599 <ul>
100
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
600 <li>並列実行する際は新しく Context を生成し、実行する Code Gear、待ち合わせる Input Data Gear の数、Input/Output Data Gear への参照を設定する</li>
102
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
601 <li>この記述を直接書くと Meta Data Gear である Context を直接参照しているため、ノーマルレベルでの記述としては好ましくない</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
602 <li>Context の設定は煩雑な記述だが、並列実行されることを除けば通常の CbC の goto 文と同等</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
603 <li>そこで Context を直接参照しない並列構文、 <strong>par goto</strong> 構文を新たに考案した</li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
604 </ul>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
605
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
606
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
607 </div>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
608 <div class='slide '>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
609 <!-- _S9SLIDE_ -->
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
610 <h2 id="par-goto-">par goto 構文</h2>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
611 <ul>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
612 <li>par goto 構文を記述すると新しく Context を生成し、TaskManager を通して Worker に送信される</li>
102
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
613 <li>par goto 構文には引数として Input/Output Data Gear等を渡す</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
614 <li>スクリプトによって Code Gear の Input/Output の数を解析し、待っている Input Data Gear の数を設定する</li>
100
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
615 <li>並列実行される Task は <strong>__exit</strong> に継続することで終了する
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
616 <ul>
102
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
617 <li>Gears OS の Task はOutput Data Gear を書き出す処理で終了するため <strong>__exit</strong> に直接継続せずに Data Gear を書き出す処理に継続する</li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
618 </ul>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
619 </li>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
620 <li>par goto 構文は通常のプログラミングの関数呼び出しのように扱える</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
621 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
622
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
623 <pre lang="c"><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) {
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
624 par goto add(integer1, integer2, output, __exit);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
625 goto code2();
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
626 }
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
627 </code></pre>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
628
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
629
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
630 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
631 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
632 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
633 <h2 id="cuda-">CUDA への対応</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
634 <ul>
100
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
635 <li>Gears OS は GPU での実行もサポートしている</li>
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
636 <li>GPU で性能を出すためには GPU に合わせた並列プログラミングが必要になる</li>
89
bc7d11285a4a Fix slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
637 <li>CUDA は GPU を Device、 CPU を Host として定義する</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
638 <li>CUDA は処理の最小の単位を thread とし、それをまとめた block を展開し Device 上で実行されるプログラム(Kernel)を実行する</li>
102
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
639 <li>今回、CUDA に合わせた並列処理機構である CUDAWorker、 CUDAExecutor をInterface を用いて実装し、 CPU、GPU間のデータのマッピングのために CUDABuffer を用意した</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
640 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
641
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
642
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
643 </div>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
644 <div class='slide '>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
645 <!-- _S9SLIDE_ -->
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
646 <h2 id="cudaworker">CUDAWorker</h2>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
647 <ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
648 <li>CUDA で実行する Task を受け取る Worker</li>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
649 <li>初期化の際に CUDA ライブラリの初期化や CUDAExecutor の生成を行う</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
650 </ul>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
651
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
652
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
653 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
654 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
655 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
656 <h2 id="cudaexecutor">CUDAExecutor</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
657 <ul>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
658 <li>CUDAExecutor は Executor Interface を実装した Data Gear</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
659 <li>以下の Code Gear を実装している
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
660 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
661 <li>HostからDevice へのデータの送信(read)</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
662 <li>kernel の実行(exec)</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
663 <li>Device から Host へのデータの書き出し(write)</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
664 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
665 </li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
666 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
667
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
668 <pre lang="c"><code>typedef struct Executor&lt;Impl&gt;{
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
669 union Data* Executor;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
670 struct Context* task;
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
671 __code next(...);
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
672 // method
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
673 __code read(Impl* executor, struct Context* task, __code next(...));
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
674 __code exec(Impl* executor, struct Context* task, __code next(...));
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
675 __code write(Impl* executor, struct Context* task, __code next(...));
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
676 }
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
677 </code></pre>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
678
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
679
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
680 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
681 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
682 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
683 <h2 id="cudabuffer">CUDABuffer</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
684 <ul>
97
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
685 <li>Host、Device 間でデータのやり取りをする際、 Gears OS での Data Gear をDevice 用にマッピングする必要がある</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
686 <li>CUDA Buffer ではそのマッピングを行う
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
687 <ul>
97
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
688 <li>このマッピングは Task に設定されている stub Code Gear で行われる</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
689 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
690 </li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
691 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
692
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
693 <div style="text-align: center;">
91
66b8451005cd Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
694 <img src="./images/cudaDataArchitecture.svg" alt="message" width="400" />
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
695 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
696
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
697
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
698 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
699 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
700 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
701 <h2 id="cuda--1">CUDA での呼び出し</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
702 <ul>
100
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
703 <li>Gears OS では Task に設定している Code Gear の stub Code Gear で CUDA実行を切り替える</li>
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
704 <li>CUDABuffer でのマッピング、実行する kernel の読み込みは stub Code Gear で行われる</li>
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
705 <li>CUDA で実行する際は stub Code Gear に対応する Code Gear ではなく、 CUDAExecutor の Code Gear に継続する</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
706 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
707
97
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
708 <div style="text-align: center;">
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
709 <img src="./images/gotoCUDAExecutor.svg" alt="message" width="600" />
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
710 </div>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
711
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
712
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
713 </div>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
714 <div class='slide '>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
715 <!-- _S9SLIDE_ -->
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
716 <h2 id="gears-os-">Gears OS の評価</h2>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
717 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
718 <li>並列処理のタスクの例題として Twice と BitonicSort を実装し、 以下の環境で測定を行った</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
719 <li>CPU 環境
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
720 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
721 <li>Model : Dell PowerEdgeR630</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
722 <li>Memory : 768GB</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
723 <li>CPU : 2 x 18-Core Intel Xeon 2.30GHz</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
724 </ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
725 </li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
726 <li>GPU 環境
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
727 <ul>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
728 <li>GPU : GeForce GTX 1070</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
729 <li>Cores : 1920</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
730 <li>ClockSpeed : 1683MHz</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
731 <li>Memory Size : 8GB GDDR5</li>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
732 </ul>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
733 </li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
734 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
735
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
736
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
737 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
738 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
739 <!-- _S9SLIDE_ -->
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
740 <h2 id="twice">Twice</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
741 <ul>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
742 <li>Twice は与えられた整数配列を2倍にする例題である</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
743 <li>並列実行の依存関係がなく、並列度が高い課題である</li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
744 <li>要素数 2^27</li>
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
745 <li>CPU での実行時は要素数 2^27 を 2^6 個に分割して Task を生成する</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
746 <li>GPU での実行時は1次元の block 数を 2^15、 block 内の thread 数を 2^10 で kernel を実行</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
747 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
748
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
749
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
750 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
751 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
752 <!-- _S9SLIDE_ -->
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
753 <h2 id="twice-">Twice の結果</h2>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
754 <ul>
100
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
755 <li>GPU は CPU との通信時間を含めた時間、 GPU(kernel only) は kernel のみの実行時間を示している</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
756 <li>1 CPU と 32 CPU では 約27.1倍の速度向上が見られた</li>
100
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
757 <li>GPU は通信時間を含めると 8 CPU の約1.25倍、 kernel のみの実行では 32 CPU の約7.22倍になった</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
758 <li>通信時間がオーバーヘッドになっている</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
759 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
760
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
761 <table border="1" align="center" width="50%">
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
762 <tbody>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
763 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
764 <td style="text-align: center;">Processor</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
765 <td style="text-align: center;">Time(ms)</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
766 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
767 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
768 <td style="text-align: center;">1 CPU</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
769 <td style="text-align: right;">1181.215</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
770 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
771 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
772 <td style="text-align: center;">2 CPUs</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
773 <td style="text-align: right;">627.914</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
774 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
775 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
776 <td style="text-align: center;">4 CPUs</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
777 <td style="text-align: right;">324.059</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
778 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
779 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
780 <td style="text-align: center;">8 CPUs</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
781 <td style="text-align: right;">159.932</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
782 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
783 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
784 <td style="text-align: center;">16 CPUs</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
785 <td style="text-align: right;">85.518</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
786 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
787 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
788 <td style="text-align: center;">32 CPUs</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
789 <td style="text-align: right;">43.496</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
790 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
791 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
792 <td style="text-align: center;">GPU</td>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
793 <td style="text-align: right;">127.018</td>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
794 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
795 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
796 <td style="text-align: center;">GPU(kernel only)</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
797 <td style="text-align: right;">6.018</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
798 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
799 </tbody>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
800 </table>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
801
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
802
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
803 </div>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
804 <div class='slide '>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
805 <!-- _S9SLIDE_ -->
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
806 <h2 id="bitonicsort">BitonicSort</h2>
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
807 <ul>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
808 <li>並列処理向けのソートアルゴリズム</li>
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
809 <li>決まった2点間の要素の入れ替えを並列に行うことでソーティングを進めていく</li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
810 <li>要素数 2^24</li>
103
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
811 <li>CPU での実行時は要素数 2^24 を 2^6 個に分割して Task を生成する</li>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 102
diff changeset
812 <li>GPU での実行時は1次元の block 数を 2^14、 block 内の thread 数を 2^10 で kernel を実行</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
813 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
814
82
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
815
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
816 </div>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
817 <div class='slide '>
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
818 <!-- _S9SLIDE_ -->
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
819 <h2 id="bitonicsort-">BitonicSort の結果</h2>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
820 <ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
821 <li>1 CPU と 32 CPU で約22.12倍の速度向上</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
822 <li>GPU は通信時間を含めると 8 CPU の約1.16倍、 kernel のみの実行では 32 CPU の約11.48倍になった</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
823 <li>現在の Gears OS の CUDA 実装では Output Data Gear を書き出す際に一度 GPU から CPU へ kernel の結果の書き出しを行っているため、差がでてしまった</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
824 </ul>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
825
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
826 <table border="1" align="center" width="50%">
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
827 <tbody>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
828 <tr>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
829 <td style="text-align: center;">Processor</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
830 <td style="text-align: center;">Time(s)</td>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
831 </tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
832 <tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
833 <td style="text-align: center;">1 CPU</td>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
834 <td style="text-align: right;">41.416</td>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
835 </tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
836 <tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
837 <td style="text-align: center;">2 CPUs</td>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
838 <td style="text-align: right;">23.340</td>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
839 </tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
840 <tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
841 <td style="text-align: center;">4 CPUs</td>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
842 <td style="text-align: right;">11.952</td>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
843 </tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
844 <tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
845 <td style="text-align: center;">8 CPUs</td>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
846 <td style="text-align: right;">6.320</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
847 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
848 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
849 <td style="text-align: center;">16 CPUs</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
850 <td style="text-align: right;">3.336</td>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
851 </tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
852 <tr>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
853 <td style="text-align: center;">32 CPUs</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
854 <td style="text-align: right;">1.872</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
855 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
856 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
857 <td style="text-align: center;">GPU</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
858 <td style="text-align: right;">5.420</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
859 </tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
860 <tr>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
861 <td style="text-align: center;">GPU(kernel only)</td>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
862 <td style="text-align: right;">0.163</td>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
863 </tr>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
864 </tbody>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
865 </table>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
866
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
867
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
868 </div>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
869 <div class='slide '>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
870 <!-- _S9SLIDE_ -->
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
871 <h2 id="openmp-">OpenMP との比較</h2>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
872 <ul>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
873 <li>OpenMP は C、 C++ のプログラムにアノテーションを付けることで並列化を行う</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
874 <li>データの待ち合わせ処理はバリア等のアノテーションで記述する</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
875 <li>Gears OS は並列処理を par goto 構文、 データの待ち合わせを Code Gear と Input/Ouput Data Gear の関係で行う</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
876 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
877
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
878 <pre lang="c"><code>#pragma omp parallel for
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
879 for(int i = 0; i &lt; length; i++) {
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
880 a[i] = a[i] * 2;
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
881 }
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
882 </code></pre>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
883
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
884
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
885 </div>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
886 <div class='slide '>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
887 <!-- _S9SLIDE_ -->
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
888 <h2 id="go-">Go 言語との比較</h2>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
889 <ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
890 <li>Go 言語は並列実行を <strong>go funciton(argv)</strong> の構文で行う。 この実行を goroutine と呼ぶ</li>
101
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 100
diff changeset
891 <li>goroutine 間のデータの待ち合わせはチャネルというデータ構造で行う</li>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
892 <li>チャネルでのデータの送受信は <strong>&lt;-</strong> を使用して行うため、簡潔に書くことが出来る</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
893 <li>しかし、 チャネルは複数の goroutine で共有されるため、データの送信元が推測しづらい</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
894 <li>Gears OS では goroutine は par goto 文とほぼ同等に扱える</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
895 <li>par goto 文では書き出す Data Gear を指定するため、書き出し元が推測しやすい</li>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
896 </ul>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
897
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
898 <pre lang="go"><code>c := make(chan []int)
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
899 for i :=0; i &lt; *split; i++ {
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
900 // call goroutine
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
901 go twice(list, prefix, i, c);
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
902 }
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
903
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
904 func twice(list []int, prefix int, index int, c chan []int) {
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
905 for i := 0; i &lt; prefix; i++ {
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
906 list[prefix*index+i] = list[prefix*index+i] * 2;
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
907 }
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
908 c &lt;- list
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
909 }
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
910 </code></pre>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
911
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
912
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
913 </div>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
914 <div class='slide '>
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
915 <!-- _S9SLIDE_ -->
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
916 <h2 id="section-5">まとめ</h2>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
917 <ul>
97
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
918 <li>Gears OS の並列処理機構を Interface を用いて実装を行った</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
919 <li>Interface を導入することで、見通しの良し Gears OS のプログラミングが可能となった</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
920 <li>par goto 構文を導入することで、ノーマルレベルで並列処理の記述が可能になった</li>
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
921 <li>2つの例題である程度の台数効果が出ることを確認した</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
922 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
923
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
924
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
925 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
926 <div class='slide '>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
927 <!-- _S9SLIDE_ -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
928 <h2 id="section-6">今後の課題</h2>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
929 <ul>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
930 <li>Gears OS の並列処理の信頼性の保証、チューニングを行う</li>
102
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 101
diff changeset
931 <li>Gears OS では証明とモデル検査をメタレベルで実現することで信頼性を保証する
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
932 <ul>
88
3c127f675c45 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
933 <li>証明は CbC のプログラムを証明支援系の Agda に対応して行う。 並列処理の信頼性を保証するには SynchronizedQueue の証明を行う必要がある</li>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
934 <li>モデル検査は CbC で記述された モデル検査器である akasha を使用して行う。 モデル検査の方針としては Code Gear の並列実行を擬似並列で実行し、全ての組合せを列挙する方法で行う</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
935 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
936 </li>
90
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
937 <li>現在の CUDA 実装では CPU、GPU 間のデータの通信コストがかかってしまうことが例題からわかった
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
938 <ul>
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
939 <li>Meta Data Gear に Data Gear が CPU、 GPU のどこで所持されているのかを持たせ、 GPU の Data Gear が CPU で必要になったときに始めてデータの通信を行う</li>
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
940 </ul>
a9885c038bb6 Add TaskManager describe
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
941 </li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
942 </ul>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
943
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
944
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
945 </div>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
946 <div class='slide '>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
947 <!-- _S9SLIDE_ -->
97
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
948 <h2 id="section-7">今後の課題</h2>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
949 <ul>
97
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
950 <li>OpenMP、 Go 言語で Twice を実装し、 Gears OS の性能比較を行った</li>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
951 <li>その結果、 Gears OS が 1CPU での動作が遅いということがわかった。
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
952 <ul>
86
44f592c43324 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 82
diff changeset
953 <li>par goto 文を使用する度に Context を生成するため、 ある程度の時間がかかってしまう</li>
100
d340d73e3cd6 Fix Slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
954 <li>モデル検査で par goto で実行する Code Gear のフローを解析し、処理が軽い場合は Context を生成せずに関数呼出しを行う等の最適化が必要</li>
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
955 </ul>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
956 </li>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
957 </ul>
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
958
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
959 <div style="text-align: center;">
97
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
960 <img src="./images/compareExamples.svg" alt="message" width="500" />
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
961 </div>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
962
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
963
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
964 </div>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
965 <div class='slide '>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
966 <!-- _S9SLIDE_ -->
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
967 <h2 id="section-8">データ並列</h2>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
968 <ul>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
969 <li>data並列はあるデータ構造がサブデータへ分割することが可能で、各サブデータに行う処理が同じ場合に有効な並列処理手法</li>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
970 <li>Gears OS ではdata 並列は par goto 構文に<strong>iterate(分割数)</strong>を追加することで可能になる</li>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
971 <li>データ並列の Task は CPU で実行する際は Task にインデックスを付与して分割数分コピーして実行する</li>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
972 <li>CUDA の場合は Kernel を実行する際にパラメーターとして分割数を渡す</li>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
973 </ul>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
974
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
975
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
976 </div>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
977 <div class='slide '>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
978 <!-- _S9SLIDE_ -->
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
979 <h2 id="task-">Task 間の同期処理</h2>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
980 <ul>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
981 <li>Context 間での同期処理を行うために Semaphore を実装</li>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
982 <li>Semaphore はContext 停止用の待ち Queue を持つ</li>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
983 </ul>
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
984
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
985 <div style="text-align: center;">
8596c1e30858 Update cudaDataArchitecture.graffle
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
986 <img src="./images/semaphoreSequence.svg" alt="message" width="700" />
96
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
987 </div>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
988
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
989 <!--
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
990 ## OpenMP との比較
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
991 - OpenMP で Twice を実装し、速度比較を行った
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
992 - OpenMP は 1CPU と 32CPU で約10.8倍の速度向上が見られた
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
993 - 一方 Gears OS では約27.1倍と台数効果は高くなっている
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
994 - しかし、 Gears OS は 1CPU の実行速度が OpenMP に比べて大幅に遅くなっている
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
995
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
996 <div style="text-align: center;">
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
997 <img src="./images/vsopenmp.svg" alt="message" width="500">
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
998 </div>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
999
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1000 ## Go 言語との比較
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1001 - Go 言語でも OpenMP と同様に Twice を実装し、速度比較を行った
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1002 - Go 言語は 1CPU と 32CPU で約4.33倍の速度向上が見られた
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1003 - OpenMP と同様に台数効果自体は Gears OS が高いが、 1CPU での実行時間は Go 言語が大幅に速い
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1004
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1005 <div style="text-align: center;">
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1006 <img src="./images/vsgo.svg" alt="message" width="500">
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1007 </div>
14bd1b466bcc Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
1008 -->
77
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1009 <!-- === end markdown block === -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1010 </div>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1011
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1012
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1013 </div><!-- presentation -->
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1014 </body>
161db9fd907a Add slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1015 </html>