Parallella を使ってみる

Parallella を動かしてみる

動かす前に、一通り(最後まで!!)GET STARTEDを読んでおくのと、マニュアル位は目を通しておきましょう。

特に熱対策には十分にしましょう。また、いくつかのサイトでは電源周りは注意が必要とのこと。

私はマニュアルを中途半端に読んだために USB Host を USBシリアル だと思ってPC と接続してしまいました。シリアル(コンソール)はピンがありますが、すぐには使えません。USB シリアルを購入するのがよいでしょう。

熱対策をする

まずは熱対策。巨大なヒートシンクが付いてくるので、これをシールでつけます。


ヒートシンクをつける(公式ページ)

AC 電源アダプター

次に AC 現現アダプター。センタープラスの 5V 2A です。なかなか 2A というのがない。また、DC ジャックの寸法も重要。最近のは細くなっているものが多いので注意。

参考までに書くと、私は手元にあった秋月のものを使っています。

その他備品購入

最終的には Linux が立ち上がるのですが、その際にキーボードが必要です。マウスもつけようとすると HUB が必要になります(当方では未確認。USBへ供給する電力には注意)。

ネットワーク環境も必要になることでしょう。その際には、DHCP で IP アドレスを決定するので、DHCPサーバが必要です。取得した IP アドレスを知る手立てが ディスプレーの表示頼ることになるので、(シリアルがつながっていればそれでも"おそらく"可能です)いずれにせよ、デジタル・ディスプレーによる表示環境が必要です。

SD カードをつくる

立ち上げのためのSD カード内には Ubuntu の環境と Linux Kernel(Kernel と DTB) とさらに bitstream(parallella.bit.bin) が必要です。

作り方にはコツがあるので下記オフィシャルサイトに従って作ってください。

create sdcard(オフィシャル・サイトより)

ここでは、概要だけを記します。

上記3つのファイルをダウンロードします。特に Ubuntu の環境(イメージ) は 2G 超えなので時間が相当かかります。Ubuntu のイメージは gz で圧縮されているので展開し、それを DD for Windowsなどで SD カードに焼きます(焼く?DDで流し込む?)。イメージはおおよそ 8G あるので、8G 以上の SD カードが必要です。

Ubuntu のイメージの最初のパーティションは FAT になっていて、そこに3つのファイル(uImage devicetree.dtb parallella.bit.bin) をコピーします。

説明が前後しますが、parallella.bit.bin (Zynq 用のビットストリーム) には種類があるので注意しましょう。Epiphany が 16/64 用で別れており、Zynq が 7010/7020 用で別れており、さらに Headless(ディスプレーなし) かディスプレー有でわかれています。

蛇足ですが、boot.bin がありません。どうやら、内臓の NOR Flash から立ち上がっている模様。

立ち上げる

SD カードを挿入、USB キーボード接続、HDMI 接続、ネットワーク接続、そしてAC アダプタ接続。これでいよいよスイッチオンです。

なお、通常の立ち上げでは、最初に GUI が(X-Windowsが)表示され、操作にはキーボードかマウスを必要とします。キーボードからは Ctrl-Alt-F1 で GUI なしのコンソールに切り替えらえます。

テストしてみる

ssh 経由で login し、テストをしてみましょう。

ssh で linaro:linaro で login すると、shell は tcsh です。私の好みではありますが、万人向けになっていませんね(bash じゃないから)。

getting started にある xtemp (温度を測るアプリケーション) がありません。とりあえずホームにあるサンプルを実行してみましょう。まずは matmul-16(~/epiphany-examples/apps/matmul-16)。

linaro-nano:~/epiphany-examples/apps/matmul-16> ./run.sh

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:     179.7 msec  (@ 600 MHz)
Host     -  time:    1744.1 msec  (@ 667 MHz)

* * *   EPIPHANY FTW !!!   * * *
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
GOOD: TEST PASSED
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

あれ?他のサイトの記録よりちょっとばかし遅い(下記、はじめての Parallella(qiita.com)から引用)

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

次に para-para(~/parallella-examples/para-para)。げ!! para-para やったらシステムが落ちました。(2回目は動いた)。どうやら、温度にセンシティブなようで一緒についてくる巨大なヒートシンクの取り付けが必須です。また、xtempでみていると、ヒートシンクをつけても温度上昇していく時があります。できればファンが必要です。夏場はどうなるかと心配になります。

直感的には70度を長く越していると Zynq が飛んじゃうようです。

linaro-nano:~/parallella-examples/para-para> sh ./run.sh
-------------------------
Running OpenMP Example
-------------------------
Hello World from OpenMP thread = 0
Hello World from OpenMP thread = 1
-------------------------
Running OpenMP Example
-------------------------
Hello World from MPI Process 3 on machine linaro-nano
Hello World from MPI Process 0 on machine linaro-nano
Hello World from MPI Process 1 on machine linaro-nano
Hello World from MPI Process 2 on machine linaro-nano
-------------------------
Running OpenCL Example
-------------------------
coprthr-1.6.0 (Freewill)