annotate 2017/2017_10_24/slide.md @ 28:382cd93f2a60

Update slide
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Tue, 31 Oct 2017 18:16:16 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 title: Gears OS
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 author: Tatsuki IHA
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 profile:
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 lang: Japanese
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 code-engine: coderay
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 ## 研究目的
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 - 当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて 信頼性が高い並列処理を行う Gears OS を開発している
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 - Gears OS では Task を Code Gear と実行するときに必要な Input Data Gear と出力するための Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う.
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 - 信頼性の確保はモデルチェック、検証等を使用して行う。この信頼性のための計算は通常の計算とは別の階層のメタ計算として記述する。
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 - また、 メタ計算は信頼性の他に CPU, GPU などの実行環境の切り替え, データ拡張等の柔軟性を提供する。
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 - 本研究では、 Gears OS の並列処理機構の実装を行う。また、並列処理の検証をメタ計算として記述することで、 並列処理の信頼性を保証する。
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 ## 今週
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 - Raspberry Pi で arm な xv6 の起動
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 - Raspberry Pi 3 で cbclang の build
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 ## Raspberry Pi zero で arm な xv6 の起動
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 - 最初は ソースコード読み会で用意したもの(https://github.com/david50407/xv6-rpi)を arm-none-eabi-gcc を使ってbuild
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 - しかし, README にも Raspberry pi での install 方法が書かれてない(Qemu での Debug のみ、、、)
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 - ググると別の実装で install 方法が書かれてたのでそいつを使う方針に(https://github.com/zhiyihuang/xv6_rpi_port)
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 - Architecture の設定も zero と同じで march=armv6 mcpu=arm1176jzf-s だったので
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 - このProject を make すると img が生成された
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 ## Raspberry Pi zero で arm な xv6 の起動
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 - できたimg を boot SDカードに任意な名前で配置
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 - boot/config.txtに以下を追記
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 ```
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 kernel=kernel-xv6.img
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 ```
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 - これで起動はできました(shell は起動できてるっぽいが, キーボード入力は受け付けず)
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 ## Raspberry Pi 3 で cbclang の build
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 - xv6起動したついでに cbclang もbuildしてみることに
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 - 流石に zero じゃ無理だろうと判断し, Raspberry Pi 3 で(Raspbian)
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 - https://llvm.org/docs/HowToBuildOnARM.html を参考に
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 - ninja も使ってみた
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 ```
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 $ mkdir CbC_build; cd $_
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 $ cmake -G Ninja -D CMAKE_BUILD_TYPE=Release LLVM_TARGETS_TO_BUILD="ARM;X86;AArch64" CMAKE_INSTALL_PREFIX:PATH=pwd /path/to/cbc
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 $ ninja
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 ```
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 ## Raspberry Pi 3 で cbclang の build
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 - しかし, めちゃくちゃ遅い(4時間くらい放置してもninjaのシーケンスは 1800個中10個も進まない)
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 - ninja を使わず, cmake -> make -j2 でやることに
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 ```
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 $ cmake -D CMAKE_BUILD_TYPE=Release LLVM_TARGETS_TO_BUILD="ARM;X86;AArch64" CMAKE_INSTALL_PREFIX:PATH=pwd /path/to/cbc
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 $ make -j2
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 ```
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 - その後睡眠
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 - 起きると通ってた
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 ## Gears の make
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 - 試しに Gears の twice を make -> 通る
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 - しかし実行するとセグフォ
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 - 怪しい所として, まず context を生成する際に取る領域が多い?(context1つデータ領域2.7Gくらい取ってるらしい)
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 - 2桁くらい減らすと実行できた
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 ## CbClang をつかって xv6 を make してみる
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 - クロスコンパイラで成功したxv6 で make
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 - できた img を Raspberry Pi zero で起動
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 - 起動失敗(kernel読み込みにはいってるっぽい?)
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 - 試しに Raspbian の gcc で make
382cd93f2a60 Update slide
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 - 起動成功