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

21
新しい分散実行の仕組み PROCESS WARP について 伊藤 祐司 2015/8/15 Creators MeetUp #31
  • Upload

    -
  • Category

    Software

  • view

    2.533
  • download

    0

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

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

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

伊藤 祐司 2015/8/15 Creators MeetUp #31

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

子供の頃のコンピュータ像

MATRIXの世界

Ironmanの凄いユーザインタフェース

攻殻機動隊の電脳空間

サマーウォーズのOZ

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

今のコンピュータとなんか違う

reynermedia @ flickr より https://www.flickr.com/photos/89228431@N06/

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

もっと何かあるじゃろ?分散コンピューティング

インターネット, SETI@home, BOINC, Googleの中(多分)

並列コンピューティング

スパコン, グリッドコンピューティング, Hadoop, Spark

分散エージェント(特許の関係で下火になったらしい)

セカイカメラ, セカンドライフ, Minecraft

Oculus, HoloLens

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

近いような遠いような…

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

何が違うのだろう?

計算能力を持つ端末の境界を意識する必要がない

クライアント・サーバの区別はなく端末全部で1つの空間

動作中のアプリケーションが空間に「ある」

上記の仕組みがインフラとして誰でも使える

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

作ろう!

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

PROCESS WARP

端末の境界を意識せずCPU, メモリを共有する

プロセスのライブマイグレーション

分散共有メモリ

上記機能を実現するための仮想マシン

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

PROCESS WARP

分散実行のインフラ・プラットフォーム化

特定の処理に特化しない汎用処理系

LLVM-IRを読み込んで実行 → C/C++, Python, 他

→ 実装言語はそのまま, 実行環境が変わる

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

PROCESS WARP

CPU, メモリ以外のホストマシンの機能を利用

ホストマシンのAPIを呼び出す機能(FFI)

スマートフォンから位置情報を取得

PC画面に表示する

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

使ってみる

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

現在オンラインで公開しているものとversionが違います(devel-threadブランチ)

同一プロセスのスレッドが異なるマシンで動作

タイミングによってクラッシュ

アプリケーションが終了できない

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

準備アカウントを作る

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

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

サンプルプログラム#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; }

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

制限事項C/C++のみ(C++の例外は使えない) LLVM 3.5

CUIのみ(かなり頑張るとOpenGLはうごく)

APIは少し

特にファイルアクセスや通信はチョット…

Windowsは試していない, スマートフォンはブラウザからのみ

色々足りていない (m´・ω・`)m ゴメン…

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

役に立つわけ?中央サーバ(ハードウェア)が死んでもサービスは継続

Wikipediaの計算資源を利用者みんなで負担

個人の計算資源の相互利用

年間PC 2~3億台, スマートフォン12億台, サーバ1000万台出荷

Wikipeiaは1000台

通信回線の節約

サーバまでのホップ数の低減 = バックボーンの負荷低減

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

まとめ世界はかなり変わる!

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

PROCESS WARPについてWebサイト

http://www.processwarp.org/

https://prev.processwarp.org/

GitHub

https://github.com/processwarp

MITライセンス

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

自己紹介伊藤 祐司

低レイヤー(C/C++, OS, API/ABI, 高速化)

バックエンド(Ruby, Java, SQL, フレームワーク作成)

アルゴリズム(テキストマイニング, 解析, GA, AI)

GitHub llamerada-jp

facebook ito.yuuji

blog http://llamerad-jp.hatenablog.com/

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

資料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/

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

以上 ありがとうございました