狠狠撸

狠狠撸Share a Scribd company logo
新しい分散実行の仕組み
PROCESS WARPについて
伊藤 祐司
2015/8/15 Creators MeetUp #31
子供の頃のコンピュータ像
MATRIXの世界
Ironmanの凄いユーザインタフェース
攻殻機動隊の電脳空間
サマーウォーズのOZ
今のコンピュータとなんか違う
reynermedia @ ?ickr より https://www.?ickr.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 %16llxn",
(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/
以上
ありがとうございました

More Related Content

新しい分散実行の仕組み PROCESS WARPについて