はじめての Parallella 


漢なら黙って Parallella ですね!

http://www.adapteva.com/parallella-board/

計算コアが tile 型で scalar なのが素敵です. エクサスケール世代では SIMD は難しいかもしれません. scalar コアに期待が高まりますので今のうちに準備しておきましょう.

![epiphany.jpg](https://qiita-image-store.s3.amazonaws.com/0/36275/4d1d7fd7-e3c0-c694-8216-40ac5e3cb320.jpeg "epiphany.jpg")

## 動かしてみる.

Parallella には ARM コアが付いているので普通に Linaro が動いています. パッケージに添付の micro SD カードに Linaro + Epiphany SDK がプリインストールされているので刺すだけでもう使えるようになっています. なんたるおもてなし力!

残念ながら HDMI 出力は, こちらが持っている HDMI 対応モニタがうまく対応していないようで GUI(画面出力) は出ませんでした. ので図のようにイーサネットを刺してネットワークからリモートログインします. 

![parallella_eth.jpg](https://qiita-image-store.s3.amazonaws.com/0/36275/caf23f55-3dca-170a-9477-5e77d678da1e.jpeg "parallella_eth.jpg")


デフォルトでは DHCP でネットワーク接続されますので, 適当に IP を見つけておきます. ID linaro, Password linaro でログイン出来ます.  

```
$ ssh linaro@parallella
linaro@parallella's password: 
Welcome to Linaro 12.11 (GNU/Linux 3.9.0-g6ce672b-dirty armv7l)

 * Documentation:  https://wiki.linaro.org/

New release '12.10' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Wed Feb 19 10:05:10 2014 from xeon.local
linaro-ubuntu-desktop:~>
```

Cool!

## 確認してみる

ではキモとなる計算コア(Epiphany)を動かしてみましょう! デフォルトで, 動作検証のために ./test.sh が入っているので動かします.

```
linaro-ubuntu-desktop:~> ./test.sh 
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

Matrix: C[512][512] = A[512][512] * B[512][512]

Using 4 x 4 cores

Seed = 0.000000
Loading program on Epiphany chip...
Writing C[1048576B] to address 00200000...
Writing A[1048576B] to address 00000000...
Writing B[1048576B] to address 00100000...
GO Epiphany! ...   Writing the GO!...
Done...
Finished calculating Epiphany result.
Reading result from address 00200000...
Calculating result on Host ...   Finished calculating Host result.
Reading time from address 00300008...

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Verifying result correctness ...   C_epiphany == C_host
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

Epiphany -  time:     158.2 msec  (@ 600 MHz)
Host     -  time:    2116.9 msec  (@ 667 MHz)

* * *   EPIPHANY FTW !!!   * * *
linaro-ubuntu-desktop:~>
```

Pretty cool!

CPU 1 コア(?) に対し, 計算コア 16 個では 13 倍ほど出ていますね!  素敵です.

Epiphany コア用のクロスコンパイラ e-gcc を起動してみます.

```
> e-gcc -v
Using built-in specs.
COLLECT_GCC=e-gcc
COLLECT_LTO_WRAPPER=/opt/adapteva/esdk.5.13.07.17/tools/e-gnu.armv7l/bin/../libexec/gcc/epiphany-elf/4.8.1/lto-wrapper
Target: epiphany-elf
Configured with: /home/linaro/srcw/configure --target=epiphany-elf --with-pkgversion='Epiphany toolchain 20120120 (built 20130717)' --with-bugurl='http://forums.parallella.org/viewforum.php?f=13' --enable-fast-install=N/A --enable-languages=c,c++ --prefix=/home/linaro/INSTALL --with-headers=/home/linaro/bld-epiphany/../src/newlib/libc/include --disable-gdbtk
Thread model: single
gcc version 4.8.1 20130513 (prerelease) (Epiphany toolchain 20120120 (built 20130717)) 
linaro-ubuntu-desktop:~/examples/matmul-16>
```

Cool.



Parallella では flat & global なメモリ空間なので, Epiphany コアと ARM コアとでデータのやりとりがやりやすくなっていますね. 

http://forums.parallella.org/viewtopic.php?f=23&t=668