annotate presen/index.html @ 11:57b1c4692d21

minor change
author sugi
date Wed, 24 Apr 2013 13:34:58 +0900
parents 5c57e35e19b6
children 85b22f56ef00
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
1 <!--
5c57e35e19b6 add presen
sugi
parents:
diff changeset
2 Google IO 2012/2013 HTML5 Slide Template
5c57e35e19b6 add presen
sugi
parents:
diff changeset
3
5c57e35e19b6 add presen
sugi
parents:
diff changeset
4 Authors: Eric Bidelman <ebidel@gmail.com>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
5 Luke Mahé <lukem@google.com>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
6
5c57e35e19b6 add presen
sugi
parents:
diff changeset
7 URL: https://code.google.com/p/io-2012-slides
5c57e35e19b6 add presen
sugi
parents:
diff changeset
8 -->
5c57e35e19b6 add presen
sugi
parents:
diff changeset
9 <!DOCTYPE html>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
10 <html>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
11 <head>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
12 <title></title>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
13 <meta charset="utf-8">
5c57e35e19b6 add presen
sugi
parents:
diff changeset
14 <meta http-equiv="X-UA-Compatible" content="chrome=1">
5c57e35e19b6 add presen
sugi
parents:
diff changeset
15 <!--<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">-->
5c57e35e19b6 add presen
sugi
parents:
diff changeset
16 <!--<meta name="viewport" content="width=device-width, initial-scale=1.0">-->
5c57e35e19b6 add presen
sugi
parents:
diff changeset
17 <!--This one seems to work all the time, but really small on ipad-->
5c57e35e19b6 add presen
sugi
parents:
diff changeset
18 <!--<meta name="viewport" content="initial-scale=0.4">-->
5c57e35e19b6 add presen
sugi
parents:
diff changeset
19 <meta name="apple-mobile-web-app-capable" content="yes">
5c57e35e19b6 add presen
sugi
parents:
diff changeset
20 <link rel="stylesheet" media="all" href="theme/css/default.css">
5c57e35e19b6 add presen
sugi
parents:
diff changeset
21 <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="theme/css/phone.css">
5c57e35e19b6 add presen
sugi
parents:
diff changeset
22 <base target="_blank"> <!-- This amazingness opens all links in a new tab. -->
5c57e35e19b6 add presen
sugi
parents:
diff changeset
23 <script data-main="js/slides" src="js/require-1.0.8.min.js"></script>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
24 </head>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
25 <body style="opacity: 0">
5c57e35e19b6 add presen
sugi
parents:
diff changeset
26
5c57e35e19b6 add presen
sugi
parents:
diff changeset
27 <slides class="layout-widescreen">
5c57e35e19b6 add presen
sugi
parents:
diff changeset
28
5c57e35e19b6 add presen
sugi
parents:
diff changeset
29 <slide class="title-slide segue nobackground">
5c57e35e19b6 add presen
sugi
parents:
diff changeset
30 <!--<aside class="gdbar"><img src="images/google_developers_icon_128.png"></aside>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
31 The content of this hgroup is replaced programmatically through the slide_config.json. -->
5c57e35e19b6 add presen
sugi
parents:
diff changeset
32 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
33 <h1 data-config-title><!-- populated from slide_config.json --></h1>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
34 <h2 data-config-subtitle><!-- populated from slide_config.json --></h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
35 <p data-config-presenter><!-- populated from slide_config.json --></p>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
36 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
37 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
38
5c57e35e19b6 add presen
sugi
parents:
diff changeset
39 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
40 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
41 <h2>研究背景</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
42 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
43 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
44 <ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
45 <li>分散プログラムには信頼性とスケーラビリティが必要である</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
46 <li>しかし、両方を兼ね備えたプログラムを作成することは容易ではない</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
47 <li>そこで、当研究室では信頼性とスケーラビリティの両方をもったプログラムの記述をサポートする、分散フレームワークAliceを開発を行なっている</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
48 <li>Aliceはデータとタスクを細かく分割したDataSegment、CodeSegmentでプログラム記述する</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
49 <li>DataSegment、CodeSegmentで記述することにより高い並列処理を行うことができる</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
50 <li>Aliceの並列性能を確認するためbitonic Sortを実装したが、実行速度に問題があったため、
5c57e35e19b6 add presen
sugi
parents:
diff changeset
51 本論文では実行速度の改善を試みた</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
52 </ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
53 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
54 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
55
5c57e35e19b6 add presen
sugi
parents:
diff changeset
56 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
57 <hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
58 <h2>分散ネットフレームワーク Alice</h2>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
59 </hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
60 <article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
61 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
62 <li>本研究室で開発を行なっている分散管理フレームワーク</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
63 <li>Data SegmentとCodeSegmentによりプログラムを記述する</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
64 <li>並列フレームワーク Ceriumに似たタスク管理機構と先行研究であるFederated Lindaに似たData Segmentの通信構造をもつ</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
65 <li>メニーコアのマシンが主流である背景からSEDA Architectureが採用している</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
66 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
67 </article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
68 </slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
69
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
70 <slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
71 <hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
72 <h2>Data Segment</h2>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
73 </hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
74 <article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
75 <p>Data Segmentは数値や文字列を構造体的に保持する。<br>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
76 Aliceではデータベース的に扱うが、通常とは異なりKey毎にQueueを持つ<br>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
77 以下のAPIでデータの送受信を行う</p>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
78 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
79 <li>put</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
80 <li>update</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
81 <li>peek</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
82 <li>take</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
83 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
84 </article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
85 </slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
86
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
87 <slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
88 <hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
89 <h2>put</h2>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
90 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
91 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
92 <ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
93 </ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
94 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
95 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
96
5c57e35e19b6 add presen
sugi
parents:
diff changeset
97 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
98 <hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
99 <h2>update</h2>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
100 </hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
101 <article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
102 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
103 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
104 </article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
105 </slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
106
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
107 <slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
108 <hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
109 <h2>peek</h2>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
110 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
111 <article>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
112 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
113 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
114 </article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
115 </slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
116
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
117 <slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
118 <hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
119 <h2>take</h2>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
120 </hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
121 <article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
122 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
123 </ul>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
124 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
125 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
126
5c57e35e19b6 add presen
sugi
parents:
diff changeset
127 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
128 <hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
129 <h2>Code Segment</h2>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
130 </hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
131 <article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
132 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
133 <li>AliceではCode Segmentと呼ばれる単位でタスクを生成する</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
134 <li>Code Segmentは依存するData Segmentが全て揃うとActiveになる</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
135 <li>Input/Output Data SegmentがCode Segment間の依存関係を自動的に記述する</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
136 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
137 </article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
138 </slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
139
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
140
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
141 <slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
142 <hgroup>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
143 <h2>実行速度の問題</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
144 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
145 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
146 <p>Aliceは先行研究であるFederated Lindaよりも処理速度が遅い。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
147 作成した例題によりOverHeadの原因が見つかっている</p>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
148 <ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
149 <li>Message Packによる型変換</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
150 <li>SEDA Architecture</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
151 <li>Output Data Segmentの作成時のコピー</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
152 </ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
153 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
154 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
155
5c57e35e19b6 add presen
sugi
parents:
diff changeset
156 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
157 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
158 <h2>Message Pack</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
159 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
160 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
161 <p>シリアライズライブラリの一種。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
162 シリアライズされたデータにオブジェクトの型情報を併せて埋め込むため、<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
163 IDL(インターフェース定義ファイル)を用意する必要がない。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
164 異なる言語間でオブジェクトを交換可能<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
165 MessagePack for Java のVersion 0.6からValue型が追加されており、<br>オブジェクトを動的型付け可能</p>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
166 <ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
167 <li>MessagePackを使用することで他のノードとData Segmentの送受信が高速に行うことができる</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
168 <li>AliceはData SegmentをQueueに追加する際にValue型に変換</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
169 <li>アノテーションをつけることにより既存のData Segmentと互換性を保ったまま拡張することができる</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
170 </ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
171 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
172 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
173
5c57e35e19b6 add presen
sugi
parents:
diff changeset
174
5c57e35e19b6 add presen
sugi
parents:
diff changeset
175 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
176 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
177 <h2>Message Packの問題</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
178 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
179 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
180 <p>分散プログラムにおいて、常にVersionが同じとは限らない。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
181 旧Versionとの互換性のため、Value型に変換している。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
182 しかし、追加するタイミングで変換を行うと、外部と通信を行わない<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
183 DataSegmentに対しても型変換を行う</p>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
184 Sortなどの配列をValue型に変換する場合は要素の数が増えるほど、<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
185 変換する時間が増加する。
5c57e35e19b6 add presen
sugi
parents:
diff changeset
186 <ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
187 </ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
188 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
189 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
190
5c57e35e19b6 add presen
sugi
parents:
diff changeset
191 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
192 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
193 <h2>SEDA Architecture</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
194 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
195 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
196 <p>マルチコアを活かすためにAliceではSEDA Architectureを採用している。
5c57e35e19b6 add presen
sugi
parents:
diff changeset
197 <br>SEDAとはマルチコアスレッドを用いて大量の接続を管理し、<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
198 データを処理毎に分けられたステージと呼ばれるスレッドで処理を行う。</p>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
199 Aliceでは
5c57e35e19b6 add presen
sugi
parents:
diff changeset
200 <ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
201 <li>putやtakeなどの要求に沿ったCommandを作成するステージ</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
202 <li>Commandを処理するステージ</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
203 <li>DataSegmentをCodeSegmentにセットするステージ</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
204
5c57e35e19b6 add presen
sugi
parents:
diff changeset
205 </ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
206 の3つのステージで構成されている。
5c57e35e19b6 add presen
sugi
parents:
diff changeset
207 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
208 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
209
5c57e35e19b6 add presen
sugi
parents:
diff changeset
210 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
211 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
212 <h2>SEDAの問題点</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
213 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
214 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
215 <p>SEDAは多段のパイプラインによって構成されるためレスポンスが遅れる。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
216 スループット重視の実装であるため、レスポンスが要求される<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
217 Sortのようなプログラムに向いていない。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
218 非力なマシーンでは、スレッドを切り替えが頻繁に起こり、<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
219 レスポンスを下げる要因になる。</p>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
220 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
221 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
222
5c57e35e19b6 add presen
sugi
parents:
diff changeset
223 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
224 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
225 <h2>LinkedBlockingQueue</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
226 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
227 <article>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
228 <p>SEDA Architectureを実装するにあたり、LinkedBlockingQueueを使用している。</p>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
229 特徴として
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
230 <ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
231 <li>LinkedBlockingQueueは片方向の連結リストを使用したQueue</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
232 <li>enqueue/dequeueの操作時は排他制御は別々のlockで管理</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
233 <li>enqueueとdequeueの操作を並列に行うことが可能(スループットに優れている)</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
234 </ul>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
235 ただし、enqueue時にNodeオブジェクトの生成操作が発生するため、<br>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
236 enqueue操作の処理コストが特に高い。
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
237 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
238 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
239
5c57e35e19b6 add presen
sugi
parents:
diff changeset
240 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
241 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
242 <h2>Output Data Segment作成時のコピー</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
243 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
244 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
245 CodeSegmentはDataSegmentを取得するとActiveになる。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
246 取得されたDataSegmentはCodeSegmentによって変更され、<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
247 Output Data Segmentとして出力される。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
248 この際、変更されたDataSegmentをコピーし、新しくDataSegmentを作成する。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
249 このコピーにかかる時間がオーバーヘッドとなっている。
5c57e35e19b6 add presen
sugi
parents:
diff changeset
250 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
251 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
252
5c57e35e19b6 add presen
sugi
parents:
diff changeset
253 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
254 <hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
255 <h2>問題に対する改善案</h2>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
256 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
257 <article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
258 <ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
259 <li>MessagePack</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
260 MessagePackによるValue型に変換が必要なケースは、<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
261 他のノードに対してData Segmentを送信する場合である。<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
262 DataSegmentを追加するタイミングでValue型に変換せず、<br>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
263 メッセージを送信する前に変換を行えばよい。
5c57e35e19b6 add presen
sugi
parents:
diff changeset
264 <p></p>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
265 <li>SEDA Architecture</li>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
266 Sortのようなにレスポンスが必要なプログラムのために、SEDAのステージ上ではなく、
5c57e35e19b6 add presen
sugi
parents:
diff changeset
267 直接DataSegmentを取得するAPIを用意する
5c57e35e19b6 add presen
sugi
parents:
diff changeset
268 <p></p>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
269 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
270 </article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
271 </slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
272
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
273 <slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
274 <hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
275 <h2>問題に対する改善案</h2>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
276 </hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
277 <article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
278 <ul>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
279 <li>Output Data Segment作成時におけるコピー</li>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
280 Ceriumでも同様なコピーの問題があり、Input Data SegmentとOutput Data Segmentを
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
281 Swapすることで解決している。Aliceでも同様の方法で解決する。<br>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
282 Data SegmentはCode Segment内ではReceiverという変数が保持している。<br>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
283 このReceiverをOutput Data Segmentにすることで無駄なコピーを減らす。
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
284 </ul>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
285 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
286 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
287
5c57e35e19b6 add presen
sugi
parents:
diff changeset
288 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
289 <hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
290 <h2>検証</h2>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
291 </hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
292
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
293 <article>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
294 <h3>実験環境</h3>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
295 <table>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
296 <tr>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
297 <td>CPU</td><td>Intel(R) Xeon(R) X5650 @2.67GHz</td>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
298 </tr>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
299 <tr>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
300 <td>物理コア数</td><td>12</td>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
301 </tr>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
302 <tr>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
303 <td>論理コア数</td><td>24</td>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
304 </tr>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
305 <tr>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
306 <td>CPU キャッシュ</td><td>12MB</td>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
307 </tr>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
308 <tr>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
309 <td>Memory</td><td>16GB</td>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
310 </tr>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
311 </table>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
312 <p></p>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
313 SEDAを活かせるようにメニコア上でテストを行なった。
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
314 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
315 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
316
5c57e35e19b6 add presen
sugi
parents:
diff changeset
317 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
318 <hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
319 <h2>実験概要</h2>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
320 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
321 <article>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
322 <p>今回行った改善による効果を調べるために3つの実験を行った。</p>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
323 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
324 <li>SEDAの有無</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
325 <p>Data Segmentを取得するCode Segmentが10000回実行されるまでの時間を測定</p>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
326 <li>flipとputの比較</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
327 <p>既存のAPIの<em>put</em>と新しく追加したAPIである<em>flip</em>をつかい10000回、Data Segmentを追加されるまでの時間を測定</p>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
328 <li>Bitonic Sortによる比較</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
329 <p>今回行った改善(ただし、MessagePackによる改善を除く)
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
330 Bitonic Sortで100万の要素をSortされるまでの時間を測定する。分割数は10個で行った</p>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
331 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
332 </article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
333 </slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
334
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
335
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
336 <slide>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
337 <hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
338 <h2>実験結果</h2>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
339 </hgroup>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
340 <article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
341 <p>実験結果は100回行った平均である</p>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
342 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
343 <table>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
344 <tr>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
345 <th>SEDA</th><th>あり</th><th>なし</th>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
346 </tr>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
347 <tr>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
348 <td>実行時間(ms)</td><td>27.72</td><td>7.53</td>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
349 </tr>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
350 </table>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
351 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
352 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
353 <table>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
354 <tr>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
355 <th>API</th><th>flip</th><th>put</th>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
356 </tr>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
357 <tr>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
358 <td>実行時間(ms)</td><td>61.12</td><td>65.24</td>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
359 </tr>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
360 </table>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
361 </ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
362 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
363 <table>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
364 <tr>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
365 <th></th><th>改善前</th><th>改善後</th>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
366 </tr>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
367 <tr>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
368 <td>実行時間(ms)</td><td>199.38</td><td>184.64</td>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
369 </tr>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
370 </table>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
371 Bitonic Sortの例題では約10%程度改善された
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
372 </ul>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
373 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
374 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
375
5c57e35e19b6 add presen
sugi
parents:
diff changeset
376 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
377 <hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
378 <h2>まとめ</h2>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
379 </hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
380 <article>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
381 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
382 <li>今回行った改善により、以前のAliceよりも約10%程度速度が改善した</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
383 <li>しかし、Aliceに要求される速度は、少なくともシングルスレッドで書かれたプログラムと同じ程度</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
384 <li>分散環境下ではFederated Linda以上の速度が求められる</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
385 <li>また、Aliceが抱える問題は速度だけではない</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
386 <li>信頼性の問題や永続性の問題についても改善をしなければならない</li>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
387 </ul>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
388 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
389 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
390
5c57e35e19b6 add presen
sugi
parents:
diff changeset
391 <slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
392 <hgroup>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
393 <h2>Message Packの型変換にかかる時間</h2>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
394 </hgroup>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
395 <article>
11
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
396 <ul>
57b1c4692d21 minor change
sugi
parents: 10
diff changeset
397 </ul>
10
5c57e35e19b6 add presen
sugi
parents:
diff changeset
398 </article>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
399 </slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
400 <slide class="backdrop"></slide>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
401
5c57e35e19b6 add presen
sugi
parents:
diff changeset
402 </slides>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
403
5c57e35e19b6 add presen
sugi
parents:
diff changeset
404 <script>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
405 var _gaq = _gaq || [];
5c57e35e19b6 add presen
sugi
parents:
diff changeset
406 _gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
5c57e35e19b6 add presen
sugi
parents:
diff changeset
407 _gaq.push(['_trackPageview']);
5c57e35e19b6 add presen
sugi
parents:
diff changeset
408
5c57e35e19b6 add presen
sugi
parents:
diff changeset
409 (function() {
5c57e35e19b6 add presen
sugi
parents:
diff changeset
410 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
5c57e35e19b6 add presen
sugi
parents:
diff changeset
411 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
5c57e35e19b6 add presen
sugi
parents:
diff changeset
412 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
5c57e35e19b6 add presen
sugi
parents:
diff changeset
413 })();
5c57e35e19b6 add presen
sugi
parents:
diff changeset
414 </script>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
415
5c57e35e19b6 add presen
sugi
parents:
diff changeset
416 <!--[if IE]>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
417 <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
418 <script>CFInstall.check({mode: 'overlay'});</script>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
419 <![endif]-->
5c57e35e19b6 add presen
sugi
parents:
diff changeset
420 </body>
5c57e35e19b6 add presen
sugi
parents:
diff changeset
421 </html>