view 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
line wrap: on
line source

title: Gears OS
author: Tatsuki IHA
profile:
lang: Japanese
code-engine: coderay

## 研究目的
- 当研究室では  処理の単位を Code Gear、 データの単位を Data Gear を用いて 信頼性が高い並列処理を行う Gears OS を開発している
- Gears OS では Task を Code Gear と実行するときに必要な Input Data Gear と出力するための Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う.
- 信頼性の確保はモデルチェック、検証等を使用して行う。この信頼性のための計算は通常の計算とは別の階層のメタ計算として記述する。
- また、 メタ計算は信頼性の他に CPU, GPU などの実行環境の切り替え, データ拡張等の柔軟性を提供する。
- 本研究では、 Gears OS の並列処理機構の実装を行う。また、並列処理の検証をメタ計算として記述することで、 並列処理の信頼性を保証する。

## 今週
- Raspberry Pi で arm な xv6 の起動
- Raspberry Pi 3 で cbclang の build

## Raspberry Pi zero で arm な xv6 の起動
- 最初は ソースコード読み会で用意したもの(https://github.com/david50407/xv6-rpi)を arm-none-eabi-gcc を使ってbuild
- しかし, README にも Raspberry pi での install 方法が書かれてない(Qemu での Debug のみ、、、)
- ググると別の実装で install 方法が書かれてたのでそいつを使う方針に(https://github.com/zhiyihuang/xv6_rpi_port)
  - Architecture の設定も zero と同じで march=armv6 mcpu=arm1176jzf-s だったので
- このProject を make すると img が生成された

## Raspberry Pi zero で arm な xv6 の起動
- できたimg を boot SDカードに任意な名前で配置
- boot/config.txtに以下を追記

```
kernel=kernel-xv6.img
```

- これで起動はできました(shell は起動できてるっぽいが, キーボード入力は受け付けず)

## Raspberry Pi 3 で cbclang の build
- xv6起動したついでに cbclang もbuildしてみることに
  - 流石に zero じゃ無理だろうと判断し, Raspberry Pi 3 で(Raspbian)
  - https://llvm.org/docs/HowToBuildOnARM.html を参考に
  - ninja も使ってみた

```
$ mkdir CbC_build; cd $_
$ cmake -G Ninja -D CMAKE_BUILD_TYPE=Release LLVM_TARGETS_TO_BUILD="ARM;X86;AArch64" CMAKE_INSTALL_PREFIX:PATH=pwd /path/to/cbc
$ ninja
```

## Raspberry Pi 3 で cbclang の build
- しかし, めちゃくちゃ遅い(4時間くらい放置してもninjaのシーケンスは 1800個中10個も進まない)
- ninja を使わず, cmake -> make -j2 でやることに

```
$ cmake -D CMAKE_BUILD_TYPE=Release LLVM_TARGETS_TO_BUILD="ARM;X86;AArch64" CMAKE_INSTALL_PREFIX:PATH=pwd /path/to/cbc
$ make -j2
```

- その後睡眠
- 起きると通ってた

## Gears の make
- 試しに Gears の twice を make -> 通る
- しかし実行するとセグフォ
- 怪しい所として, まず context を生成する際に取る領域が多い?(context1つデータ領域2.7Gくらい取ってるらしい)
- 2桁くらい減らすと実行できた

## CbClang をつかって xv6 を make してみる
- クロスコンパイラで成功したxv6 で make
- できた img を Raspberry Pi zero で起動
  - 起動失敗(kernel読み込みにはいってるっぽい?)
- 試しに Raspbian の gcc で make
  - 起動成功