IkaLog開発者が語るPYNQ-Z1について

実際にPYNQ-Z1を使い倒しておられる方の現実的なコメント。大変参考になる。
1
Takeshi HASEGAWA @hasegaw

PYNQに関して誤認識が更に広まっているようだけどもあれは★ただの★「ARM搭載型FPGAチップ」ボードとデモンストレーション用のLinux、Jupyter環境が提供されているだけで、別にPYNQ自体が(現時点で)Pythonからの高位合成をサポートしているわけじゃないからな。

2017-02-01 11:04:15
Takeshi HASEGAWA @hasegaw

PYNQでできること「ここにFPGAがある。このFPGAに出来合いのビットストリーム(ファームウェア)ファイルを書き込んで、このアドレスにこういう書き込みをするとLED点灯させられる。でも面倒じゃろ?ほら、Jupyterで実行したら同等操作ができるようにしておいたぞ」

2017-02-01 11:05:21
Takeshi HASEGAWA @hasegaw

それでもPYNQで有り難いのはJupyterから操作できるようにするために、FPGA側のデモンストレーション用回路に対するドライバ・ソフトウェアがPythonモジュールで用意されていること。これだけでHDMIが扱える hdmi=HDMI('in') hdmi.start()

2017-02-01 11:07:16
Takeshi HASEGAWA @hasegaw

PYNQにはHDMIのIN/OUT端子があっても、別にこれは標準でLinuxのフレームバッファドライバとあわせて動くように作られているわけではない。なので、GPUなし(自分で回路作ればFBとして使えそう)、RTCなし、USBポート1個、FPGA有りのラスパイだと思えばいい

2017-02-01 11:09:18
Takeshi HASEGAWA @hasegaw

DNN関連でPython->C->HDLと高位合成できるという記事が最近出回っているけども、あれは一週間でファミコンエミュレータをFPGAに実装するようなちょースキル高い人が「だれでもすぐできる」的に書いてあるだけで、今の時点で普通の人に available な訳じゃないからな。

2017-02-01 11:10:18
Takeshi HASEGAWA @hasegaw

PYNQでPythonコードをハードウェア化できるような記事をQiitaにあげている人もいるけど、別にPYNQ上じゃなくても手元のWindows/Mac PCでPythonコードを特定ツールに食わせたら、別途検証が必要なVerilog HDLコードを吐くという所でとまっている

2017-02-01 11:12:17
Takeshi HASEGAWA @hasegaw

あの記事はPYNQに搭載されているXilinx ZYNQチップでPS(ARMプロセッサ)とPL(FPGAロジック部分)を接続する所までの面倒どころかその回路をZYNQ向けに論理合成するまでの手順すらカバーしていなくてただFPGA上のCPUで言語コンバーター動かしたってだけだからな

2017-02-01 11:13:38
Takeshi HASEGAWA @hasegaw

ソフトウェア屋にとってPYNQに独自回路を作り込もうとすると現時点ではSDSoCというツールを使うのが現実的だけども、このSDSoCというのは正式にはPYNQボードには対応していないのである程度工夫が必要。色々努力して自力で動かせる人がぽろぽろ出てきている程度の状態。

2017-02-01 11:15:17
Takeshi HASEGAWA @hasegaw

ソフトウェア屋が何も考えずにFPGA上にCソースからロジックへのオフロードを試したいんだったら素直にDigilent ZedboardやZYBOとSDx(SDSoC)を組み合わせてC言語ソース内の特定関数を自動的にHDLに変換させてSDカードイメージ作らせるのが一番簡単

2017-02-01 11:16:18
Takeshi HASEGAWA @hasegaw

ちなみにPYNQのHDMIコネクタにHDMI信号入力すると、いまデモ用に出ているupstreamのレポジトリのHDLやddでSDカードに書き込めるデモ用イメージでは、絶対に動かないから。私(もしくは他の人)が手元で修正しているIPを使わないと絶対動かないから。

2017-02-01 11:19:27
Takeshi HASEGAWA @hasegaw

ChainerPaintじゃないけどもPYNQはPYNQで間違いが間違いを呼んでどんどん現実と世の中のイメージにギャップができているように感じる。

2017-02-01 11:25:29
Takeshi HASEGAWA @hasegaw

CPUからFPGAへのオフロードして処理を速くしたい派はDRAMが16bit接続のPYNQでもがくよりも、32bit接続になっているZYBO試したほうがいいよ。まじで。クロックあたりのバンド幅2倍やで。SDxでも現時点でサポートされてるし。

2017-02-01 11:28:28
Takeshi HASEGAWA @hasegaw

ところでFPGAにのっければ本当に速くなるかってのはきちんと考えたほうがいい。FPGAパッケージ内にあるメモリは数百KB〜数十MB程度のSRAMだし大容量RAMを使いたいようなケースだとほんときっついぞ。FPGA内にデータ流し込んで、そのまま変換機っぽく受け取れるのが理想。

2017-02-01 11:35:12
Takeshi HASEGAWA @hasegaw

どう考えたってターンアラウンドタイムや開発所要期間などソフトウェアのほうが全然はやいので、ソフトウェアレベルでアルゴリズムや命令構成を追い込んだ上でニーズにマッチしない処理をFPGAにもっていく発想でやらんと、たぶん、いつまでたっても目的達成できないぞ。

2017-02-01 11:37:12
Takeshi HASEGAWA @hasegaw

もうひとつの用途は、PYNQにのっているZYNQのようなARM搭載FPGAは、普通のCPUでは処理できないようなI/Oモジュールをポン付けできる。これは現時点で量産になっているIntelプロセッサにはできない。そもそもソフトウェア系の人はこの必要性を発想しないと思うけども。

2017-02-01 11:41:30
Takeshi HASEGAWA @hasegaw

先日後輩に聞かれて話したんだけどFPGAの使い方って2種類あると思うんだよね。ひとつめが、ソフトウェア業界でよく語られがちな「CPUで処理すると遅い処理をハードウェアに」。ただ3GHz越CPUに対してせいぜい数百MHzのFPGAはパイプラインで並列化ではじめてメリットでてくる

2017-02-01 11:40:10
Takeshi HASEGAWA @hasegaw

Intel CPUにHDMIキャプチャ搭載しようとしても無理だが、ZYNQなら、工夫でHDMIキャプチャー&HDMIスプリッター搭載のLinuxが動くARM CPUが作れる。そこそこの性能のCPUにインターフェース部分を後付けできるのは楽しいぞ。Intelと性能で戦う必要もない

2017-02-01 11:42:57