CodeSegmentとDataSegmentによるプログラミング手法
河野 真治
杉本 優
河野 真治
杉本 優
本研究室では分散プログラミングに置いて、タスクをCode Segment、データをData Segmentという単位に分割して記述する方法を提唱している。
しかし、前述したプログラムをプログラマーが一から記述していくことは大変である。
そこで、本研究室の卒業生である赤嶺一樹氏が分散ネットフレームワークAliceのプロトタイプを作成した。
本研究では実際にAliceを用いて、"水族館"の例題を作成を通して、APIの見直し、問題点の洗い出しを行った。
Alice は本研究室で開発を行なっている分散タスク管理フレームワークである。
Cell用のOpen CL に似たTask管理用フレームワークCeriumと Lindaを相互接続した分散フレームワークであるFederated Lindaの開発を通して得られた知見を生かされている。
CeriumではTaskを小さく分割して並列実行し、データ転送はパイプライン実行により隠される。
Taskには依存関係がありデータの依存関係がそのままTaskの依存関係になることが多い。
繰り返し使われるデータの管理が重要であり、実行時にわかるデータ構造感間の依存関係がTaskを複雑にしている。
putを行うとデータがenqueueされる。
putするたびにKeyが持つindexがincrementされる。
要求したデータがない場合にはwaitListに登録する。
データがpeek、updateされた際に要求したデータがあるかどうかを再びチェックする。基本的な動作はpeekと同じである。
peekと異なる点は取得されたデータがdequeueされる。
JavaにおけるMessagePackのデータ表現
Data Segment APIでは
MessagePack for javaのValueオブジェクトを使用 MessagePackのバイナリにシリアライズできる型のみで 構成されているため自己記述式のデータ形式Valueオブジェクトは通信に関わる際には、シリアライズ、デシリアライズを行うことができる
トポロジーファイルはDOT Languageと言う言語で記述される。
DOT Languageはプレーンテキストを用いてデータ構造としてのグラフを表現するデータ記述言語の一つ。dotコマンドを用いて、グラフの画像ファイルを生成することができるのでトポロジーが正しいか確認することができる。
dot -T png ring.dot -o ring.png
複数の魚が複数のディスプレイ上を移動する。
魚のうち一匹はクライアントが操作することができる。
トポロジーはツリー状に構成してある。
ブレードサーバー詳細
マシン台数 | 8台 |
CPU | Intel(R) Xeon(R) X5650 @ 2.67GHz |
物理コア数 | 12 |
論理コア数 | 24 |
CPU キャッシュ | 12MB |
Memory | 132GB |
仮想クラスタ詳細
マシン台数 | 48台 |
CPU | Intel(R) Xeon(R) X5650 @ 2.67GHz |
物理コア数 | 2 |
論理コア数 | 4 |
CPU キャッシュ | 12MB |
Memory | 8GB |
API
SEDA
MessagePack
Key
Java
拡張性
今回Code SegmentとData Segmentによる並列分散フレームワークのJavaによる実装を示した。実装でしかえられない知見を得ることができた。
今回Javaによる実装を行ったがJavaがAliceの実装に不向きであるということもわかった。
今回はノード内の並列実行やGPGPUによる並列実行などは考慮していない。将来的にそれを含め実装をしていきたい。