新しい分散実行の仕組み PROCESS WARPについて
Transcript of 新しい分散実行の仕組み PROCESS WARPについて
新しい分散実行の仕組み PROCESS WARPについて
伊藤 祐司 2015/8/15 Creators MeetUp #31
子供の頃のコンピュータ像
MATRIXの世界
Ironmanの凄いユーザインタフェース
攻殻機動隊の電脳空間
サマーウォーズのOZ
今のコンピュータとなんか違う
reynermedia @ flickr より https://www.flickr.com/photos/89228431@N06/
もっと何かあるじゃろ?分散コンピューティング
インターネット, SETI@home, BOINC, Googleの中(多分)
並列コンピューティング
スパコン, グリッドコンピューティング, Hadoop, Spark
分散エージェント(特許の関係で下火になったらしい)
セカイカメラ, セカンドライフ, Minecraft
Oculus, HoloLens
近いような遠いような…
何が違うのだろう?
計算能力を持つ端末の境界を意識する必要がない
クライアント・サーバの区別はなく端末全部で1つの空間
動作中のアプリケーションが空間に「ある」
上記の仕組みがインフラとして誰でも使える
作ろう!
PROCESS WARP
端末の境界を意識せずCPU, メモリを共有する
プロセスのライブマイグレーション
分散共有メモリ
上記機能を実現するための仮想マシン
PROCESS WARP
分散実行のインフラ・プラットフォーム化
特定の処理に特化しない汎用処理系
LLVM-IRを読み込んで実行 → C/C++, Python, 他
→ 実装言語はそのまま, 実行環境が変わる
PROCESS WARP
CPU, メモリ以外のホストマシンの機能を利用
ホストマシンのAPIを呼び出す機能(FFI)
スマートフォンから位置情報を取得
PC画面に表示する
使ってみる
現在オンラインで公開しているものとversionが違います(devel-threadブランチ)
同一プロセスのスレッドが異なるマシンで動作
タイミングによってクラッシュ
アプリケーションが終了できない
準備アカウントを作る
https://prev.processwarp.org/
ネイティブクライアントをコンパイル
http://www.processwarp.org/docs/2015/06/20/ja-required_install.html
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/processwarp/processwarp/master/install/darwin.sh)"
プログラムをコンパイル
$ CPLUS_INCLUDE_PATH=<コンパイル場所>/include/libc clang++ -O2 -emit-llvm -c -fno-exceptions -fno-vectorize <C++プログラム>
$ llvm-dis <C++プログラム>.bc
サンプルプログラム#include <stdio.h> #include <stdlib.h> #include <pthread.h>
char* ret = "a";
static void *thread_func(void *vptr_args) { int i; for (i = 0; i < 20000; i++) { printf(" b [%d]\n", i); } return (void*)ret; }
int main(void) { int i; pthread_t thread; void* retval;
if (pthread_create(&thread, NULL, thread_func, NULL) != 0) { return EXIT_FAILURE; } for (i = 0; i < 10000; i++) { printf("a [%d]\n", i); } if (pthread_join(thread, &retval) != 0) { return EXIT_FAILURE; }
printf("ret %016llx %16llx\n", (unsigned long long)ret, (unsigned long long)retval); return EXIT_SUCCESS; }
制限事項C/C++のみ(C++の例外は使えない) LLVM 3.5
CUIのみ(かなり頑張るとOpenGLはうごく)
APIは少し
特にファイルアクセスや通信はチョット…
Windowsは試していない, スマートフォンはブラウザからのみ
色々足りていない (m´・ω・`)m ゴメン…
役に立つわけ?中央サーバ(ハードウェア)が死んでもサービスは継続
Wikipediaの計算資源を利用者みんなで負担
個人の計算資源の相互利用
年間PC 2~3億台, スマートフォン12億台, サーバ1000万台出荷
Wikipeiaは1000台
通信回線の節約
サーバまでのホップ数の低減 = バックボーンの負荷低減
まとめ世界はかなり変わる!
PROCESS WARPについてWebサイト
http://www.processwarp.org/
https://prev.processwarp.org/
GitHub
https://github.com/processwarp
MITライセンス
自己紹介伊藤 祐司
低レイヤー(C/C++, OS, API/ABI, 高速化)
バックエンド(Ruby, Java, SQL, フレームワーク作成)
アルゴリズム(テキストマイニング, 解析, GA, AI)
GitHub llamerada-jp
facebook ito.yuuji
blog http://llamerad-jp.hatenablog.com/
資料PC出荷台数とか
Gartner Says Worldwide PC Shipments Declined 5.2 Percent in First Quarter of 2015 http://www.gartner.com/newsroom/id/3026217
Samsung Reasserts Its Global Lead in Smartphone Shipments with a Renewed Focus on Lower-Cost Smartphones in the First Quarter of 2015, Says IDC http://www.idc.com/getdoc.jsp?containerId=prUS25589215
Gartner Says 2013 Worldwide Server Market Grew 2.1 Percent in Shipments, While Revenue Decreased 4.5 Percent for the Year http://www.gartner.com/newsroom/id/2671315
サーバ台数とか
Wikimedia Grid Report http://ganglia.wikimedia.org/latest/
以上 ありがとうございました