雑多な趣味の記録帳

tom01h.exblog.jp

<   2018年 07月 ( 19 )   > この月の画像一覧

Apple から Amazon アカウント停止のメールが来た

今までちょくちょく Apple を語るところからアカウント停止のメールが来ていたけど、今回は Apple を語る同じところ?から Amazon アカウント停止のメールが来ていた。
雑すぎだろ。

[PR]
by tom01h | 2018-07-30 09:33 | Trackback | Comments(0)

台湾出張

台湾に出張に行っていました。で、台風の中帰国。
成田行きの便が大幅遅延だったので、関空行に変更してもらいました。
関空はいい天気でしたが、この後の新幹線は途中で止まったりしました。
出張も大変だったけど、帰路は本当に大変だった…
f0054075_21574584.jpg

[PR]
by tom01h | 2018-07-28 23:59 | Trackback | Comments(0)

Petalinux から UIO 経由で L チカ

Zynq の上で tiny-dnn が動いたので、FPGA にオフロードする方法を試してみます。
いろいろ漁ってみたけど、この人 を参考にするのが良さそうに思います。
今日は 16日目 の Petalinux から UIO 経由で L チカ 。

おとといは /dev/mem を mmap して、GPIO を制御しました。
先のリンク先によると、この方法は便利だけど使うべきじゃないって書いてあります。
そんなわけで、リンク先の UIO 経由の制御を試してみました。

IP を作り直すのは面倒なので、”AXI GPIO の場合”で試してみます。
まあ、すんなり動きます。

これで環境は整いました。
でもまだ、どんなアクセラレータを作るか考えていないんですけどね。

[PR]
by tom01h | 2018-07-20 21:26 | Trackback | Comments(0)

Ultra96 ボード発売

GooseUltra96 ボード の扱いが始まっていました。
249ドルが約4万円か。ちょっと高いな。
多分個人では買えない AVNET は 3万円くらいなんだけどな。
すごく興味あるのだけど、いまのところ とっても使いにくいボードらしい ので、もうちょっと様子見でしょうか。
Digilent から Zynq UltraSCALE+ の安いのが出るのが一番なんだけど、ZyboZ7 出たばっかりだしなぁ。
f0054075_12051683.png

[PR]
by tom01h | 2018-07-19 21:02 | Trackback | Comments(0)

Petalinux から AXI GPIO を使って L チカ

Zynq の上で tiny-dnn が動いたので、FPGA にオフロードする方法を試してみます。
いろいろ漁ってみたけど、この人 を参考にするのが良さそうに思います。
今日は 4日目 + 11日目 の Petalinux から AXI GPIO を使って L チカ 。

まずは、4日目の回路作成。GPIO は自動で LED に繋いでくれるってありますが、Cora では出来ませんでした。
手動で繋ぎます。ちなみにカラー LED しか無いみたいなので 6bit です。
あとはそのままなぞっていくと、眩し過ぎる LED が 1秒間隔で点滅します。
SDK Driver API とやらは試していません。

では、この回路を使って 11日目を試しましょう。
Cora は ZYBO と違って PS GPIO に LED が繋がっていません。
そんなわけで、いきなり”メモ: PL GPIO の場合”を試します。
あと、昨日は Linux のビルドにとっても時間がかかったので、今日は仮想マシンに 3CPU を割り当ててみました。
devmem コマンドを試してみると、今回も眩し過ぎる LED が点灯しました。
# devmem 0x41200004 32 0x0000
# devmem 0x41200000 32 0x003F

次に”レジスタ直叩きで L チカ”を試してみます。
ソースコードをコピーして、アドレスなどのGPIOの違いをちょっと修正してプログラムをコンパイル。
でもここからは Hello World を試した時 と同じように、arm-linux-gnueabi-gcc を使ってコンパイルして、SD カードにコピーして実行しました。
Petalinux の再ビルドはそう何回もやりたくないので…

[PR]
by tom01h | 2018-07-18 22:18 | Trackback | Comments(0)

Petaliunx Tool を使ってみる (Ubuntu 16.04 on VirtualBox)

Zynq の上で tiny-dnn が動いたので、FPGA にオフロードする方法を試してみます。
いろいろ漁ってみたけど、この人 を参考にするのが良さそうに思います。
まずは 8日目 の Linux 作成から。

と、その前に VirtualBox を使って、本物の Ubuntu 16.04 をインストールします。
次に、Petalinux Tool を ここ に従ってインストールしました。
足りないパッケージもなくすんなり成功しました。

続いて、先の 8日目の ”PetaLinuxツールでLinuxイメージを作る” を追いかけます。
とっても時間はかかりますが、そのままなぞるだけでした…
f0054075_23423037.png
こんな事で…

And we'll start
Waiting for a new day

[PR]
by tom01h | 2018-07-17 23:43 | Trackback | Comments(0)

Petaliunx Tool を使ってみる (失敗 Ubuntu 18.04 on VirtualBox)

Zynq の上で tiny-dnn が動いたので、FPGA にオフロードする方法を試してみます。
いろいろ漁ってみたけど、この人 を参考にするのが良さそうに思います。
まずは 8日目 の Linux 作成から。

と、その前に VirtualBox を使って、本物の Ubuntu をインストールします。
Petalinux Tool のインストールは、いくつか足りないパッケージがあっただけですんなり成功。
がしかし、やっぱり Bitbake で落ちました…

とりあえず、Ubutu 16.04 ダウンロードするかなぁ

No, don't give up on life
This endless dead end

[PR]
by tom01h | 2018-07-16 20:21 | Trackback | Comments(0)

Petaliunx Tool を使ってみる (失敗 WSLでは出来なかった)

Zynq の上で tiny-dnn が動いたので、FPGA にオフロードする方法を試してみます。
いろいろ漁ってみたけど、この人 を参考にするのが良さそうに思います。
まずは 8日目 の Linux 作成から。

結論から言うと WSL 上では Petalinux Tool は動きませんでした。
念のため、到達点をまとめておきます。

Petalinux Tool を ここ に従ってインストールしました。
ちょっと違うのは、apt install の前に
$ sudo dpkg --add-architecture i386
$ sudo apt update.
apt install, mkdir してインストールしようと思うと、WSL だとメモリが云々いわれるので…
$ ./petalinux-v2018.2-final-installer.run /opt/pkg/petalinux/
bash: ./petalinux-v2018.2-final-installer.run: Cannot allocate memory
$ /bin/bash ./petalinux-v2018.2-final-installer.run /opt/pkg/petalinux/
いくつか足りないパッケージを指摘されたので、追加でインストールします。
結構時間がかかりましたがインストール完了。

次に、先の 8日目の ”PetaLinuxツールでLinuxイメージを作る” を追いかけます。
が、こんなこと言われる。
ERROR: Failed to Kconfig project
どうやら rlwrap とか言うもののバージョンが悪いらしい。
$ sudo apt-get install rlwrap
$ cd petalinux/tools/hsm/bin/unwrapped/lnx64.o/
$ mv rlwrap Xrlwrap <== backup Xilinx's ver of rlwrap
$ cp /usr/bin/rlwrap . <== put in one that works
ほんのちょっとだけ進んだが、次は
ERROR: Failed to source bitbake
Petalinux との組み合わせで検索してもいい情報がない。yocto と組み合わせるといくつか出てきた。
ionotify がないとか、ファイルシステムが良くないとか出てきたが、Creators Update で対策済みとのこと。
Windows のファイルシステム上で作業していましたが、念のため WSL のファイルシステムに移動して作業してみてもだめです。

[PR]
by tom01h | 2018-07-15 23:59 | Trackback | Comments(0)

Cora の tiny-dnn をプロファイル

前に zero-riscy に BNN 命令を追加したときの失敗 を繰り返さないために、今回はプロファイルをとってみます。
といっても何等かツールを使うわけでもなく、せっかくの綺麗なプログラムをグローバル変数で汚しています。

使っているネットを再度挙げると↓の感じです。
nn << conv(28, 28, 5, 1, 6, padding::valid, true, 1, 1, backend_type)
<< max_pool(24, 24, 6, 2)
<< relu()
<< conv(12, 12, 5, 6, 16, padding::valid, true, 1, 1, backend_type)
<< max_pool(8, 8, 16, 2)
<< relu()
<< conv(4, 4, 4, 16, 10, padding::valid, true, 1, 1, backend_type)
<< softmax(10);

階層の種類ごと、順伝搬と逆伝搬の時間を計ってみました。
pool forward 5549ms elapsed
activ forward 331ms elapsed
cov forward 72249ms elapsed
activ back 588ms elapsed
pool back 2120ms elapsed
cov back 155182ms elapsed
Epoch 1/1 finished. 241.665s elapsed.

グラフにするとこんな感じです。
f0054075_21460647.png

[PR]
by tom01h | 2018-07-14 22:59 | Trackback | Comments(0)

Cora の Petalinux で Hello World と tiny-dnn

Cora Z7 で Petalinux が起動できたので、アプリケーションソフトを動かしてみたいと思います。
参考にしたのは ここ 。まずは Hello World から試します。
ホストOS で
$ arm-linux-gnueabi-gcc hello.c -g -o hello -static
Petalinux を入れた SD カードに hello をコピーして
root@Cora-Z7-07S:~# mount /dev/mmcblk0p1 /mnt/
root@Cora-Z7-07S:~# /mnt/hello
Hello Zynq World!!
次は、調子に乗って tiny-dnn を試してみましょう。
まずはホストOSでコンパイルしますが、その前に tiny_dnn/config.h の #define CNN_SINGLE_THREAD を有効にします。そして、
[追記 FPUを使うために ”-mfpu=neon -mtune=cortex-a9 -mcpu=cortex-a9 -mfloat-abi=softfp” を追加する]
$ arm-linux-gnueabi-g++ -O3 -mfpu=neon -mtune=cortex-a9 -mcpu=cortex-a9 -mfloat-abi=softfp -Wall -Wpedantic -Wno-narrowing -Wno-deprecated -DNDEBUG -std=gnu++14 -I ../../ -DDNN_USE_IMAGE_API train.cpp -o train -static
train と data/ を SD カードにコピーして、
root@Cora-Z7-07S:~# mount /dev/mmcblk0p1 /mnt/
root@Cora-Z7-07S:~# /mnt/train --data_path /mnt/data/ --learning_rate 1 --epochs 3 --minibatch_size 16 --backend_type internal
これは… 遅いなんてもんじゃない。667MHz じゃないのかよ~
Intel の 100 倍遅いじゃないか(--)
[追記 FPU を使ったら 5倍速くなった。けど Intel の 20倍遅い…]
f0054075_23384691.png
これ、FPGA にオフロードしようと思ったけど、よく考えたら物理アドレス分からないんだねぇ。PL からアプリの配列を触ったりはできないのか。PS からデータをくべるしかないのかな? 7 世代の Zynq は PL から PS には HP ポートあるけど、PS から PL は GP ポートしかないんじゃなかったっけ?

[PR]
by tom01h | 2018-07-13 21:40 | Trackback | Comments(0)